FFMPEG Audio Encoder Новая функция кодированияC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 FFMPEG Audio Encoder Новая функция кодирования

Сообщение Anonymous »

Я хотел бы обновить AV Audio Encoder, используя функцию AVCODEC_ENCODE_AUDIO (устаревший) на AVCODEC_ENCODE_AUDIO2 , без изменения структуры существующего Encoder:
outBytes = avcodec_encode_audio(m_handle, dst, sizeBytes, (const short int*)m_samBuf);
< /code>
где: < /p>

m_handle avcodeccontext < /p>
< /li>
dst, uint8_t * designby buffer < /p>
< /li>
re -sizeb Буфер < /p>
< /li>
m_sambuf void * к входной части данных для кодирования (это подчиняется: const short int *) < /p>
< /li>
< /ol>
Я просто могу сделать это?int gotPack = 1;
memset (&m_Packet, 0, sizeof (m_Packet));
m_Frame = av_frame_alloc();

av_init_packet(&m_Packet);
m_Packet.data = dst;
m_Packet.size = sizeBytes;

uint8_t* buffer = (uint8_t*)m_samBuf;
m_Frame->nb_samples = m_handle->frame_size;

avcodec_fill_audio_frame(m_Frame,m_handle->channels,m_handle->sample_fmt,buffer,m_FrameSize,1);

outBytes = avcodec_encode_audio2(m_handle, &m_Packet, m_Frame, &gotPack);
char error[256];
av_strerror(outBytes,error,256);

if (outByteslog(1,1,"Input data: %d, encode function call error: %s \n",gotPack, error);
return AUDIOWRAPPER_ERROR;
}
av_frame_free(&m_Frame);
< /code>
он компилируется, но он ничего не кодирует, я не слышу аудио на выходе, если я подчиняю выходной поток на Mplayer, который работал до обновления. < /p>
Что я делаю неправильно?AV_SAMPLE_FMT_S16, ///< signed 16 bits
AV_SAMPLE_FMT_FLT, ///< float
< /code>
Вот как выделяется буфер: < /p>
free(m_samBuf);
int bps = 2;
if(m_handle->codec->sample_fmts[0] == AV_SAMPLE_FMT_FLT) {
bps = 4;
}
m_FrameSize = bps * m_handle->frame_size * m_handle->channels;
m_samBuf = malloc(m_FrameSize);
m_numSam = 0;


Подробнее здесь: https://stackoverflow.com/questions/355 ... e-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»