Я хотел бы обновить 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
FFMPEG Audio Encoder Новая функция кодирования ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1754402672
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;
Подробнее здесь: [url]https://stackoverflow.com/questions/35552354/ffmpeg-audio-encoder-new-encode-function[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия