В настоящее время я пытаюсь закодировать некоторые необработанные аудиоданные с некоторым видео в контейнере avi.FFmpeg: Кодирование PCM 16 аудиоданных Ошибка распределения
Видеокодек используется mpeg4, и я хотел бы использовать PCM_16LE для аудиокодека, но я столкнулся с проблемой относительно AVCodec-> FRAME_SIZE параметра для звуковых образцов.
После выполнения правильного распределения, я пытаюсь выделить аудиокадр и для кодека AV_CODEC_ID_PCM_S16LE. У меня нет кодека frame_size, необходимого для получения размера буфера выборки. Поэтому размер буфера выборки огромен, и я просто не могу выделить такое количество памяти. Кто-нибудь знает, как обойти эту проблему и как вручную вычислить frame_size?
frame = av_frame_alloc();
if(!frame)
{
return NULL;
}
//Problem is right here with the frame_size
frame->nb_samples = m_pAudioCodecContext->frame_size;
frame->format = m_pAudioStream->codec->sample_fmt;
frame->channel_layout = m_pAudioStream->codec->channel_layout;
//The codec gives us the frame size, in samples, so we can calculate the size of the samples buffer in bytes
//This returns a huge value due to a null frame_size
m_audioSampleBufferSize = av_samples_get_buffer_size(NULL,
m_pAudioCodecContext->channels,
m_pAudioCodecContext->frame_size,
m_pAudioCodecContext->sample_fmt,
0);
Спасибо за вашу помощь,
Роберт