之前没事研究了一下ffmpeg4.0之后的混音,参考博客https://blog.youkuaiyun.com/dancing_night/article/details/53080385以及https://blog.youkuaiyun.com/lichen18848950451/article/details/78518439。因为混音数据量大,所以先缓存到fifo队列中,然后依次取出即可。
case AVMEDIA_TYPE_AUDIO:
{
//add_samples_to_fifo(pDlg->m_pFifo, );
pDlg->FeedingSamples2Fifo(filtered_frame->data, filtered_frame->nb_samples);
while (av_audio_fifo_size(pDlg->m_pFifo) > 1024)
{
AVFrame *f = pDlg->AllocAudioFrame();
av_audio_fifo_read(pDlg->m_pFifo, (void**)f->data, 1024);
do_audio_out(f, pDlg);
av_frame_free(&f);
}
break;
}