C++ FFmpeg解码时对音频重新采样
我的任务是构建一个解码器,从编码的mpegts网络流中为1个原始视频帧生成1个原始音频帧,这样用户就可以通过调用getFrames()使用API并准确地接收这两个帧 目前我正在用av_read_框架在一个线程中阅读,当数据包到来时解码,音频或视频;收集,直到一个视频包被击中。问题是通常在看到视频之前会收到多个音频包 av_读取_帧被阻塞,当采集到一定数量的音频数据时返回(mp2为1152个样本);以及解码该分组给出具有持续时间T(取决于取样器)的原始AVFrame;然而视频帧的持续时间通常大于T(取决于fps),因此在它之前会接收多个音频帧 我猜我必须找到一种方法,在视频被点击时,将收集的音频帧合并成一个单独的帧。我想还需要重新采样和设置时间戳以与视频对齐。我不知道这是否有效C++ FFmpeg解码时对音频重新采样,c++,audio,video,ffmpeg,mpeg2-ts,C++,Audio,Video,Ffmpeg,Mpeg2 Ts,我的任务是构建一个解码器,从编码的mpegts网络流中为1个原始视频帧生成1个原始音频帧,这样用户就可以通过调用getFrames()使用API并准确地接收这两个帧 目前我正在用av_read_框架在一个线程中阅读,当数据包到来时解码,音频或视频;收集,直到一个视频包被击中。问题是通常在看到视频之前会收到多个音频包 av_读取_帧被阻塞,当采集到一定数量的音频数据时返回(mp2为1152个样本);以及解码该分组给出具有持续时间T(取决于取样器)的原始AVFrame;然而视频帧的持续时间通常大于T
以这种方式同步视频和音频的最平滑方式是什么?重新采样每秒更改采样数,例如从44 khz更改为32 khz。我不认为这是必要的。这是非常重要的,当然对于任意采样率对,通常(至少在这里)MPEG比视频流提前1秒提供音频。而且,你会得到25帧每秒的视频和48帧音频。您需要同步这些。我的计算表明,要接收1V的1A,需要1152×25=28.8k输入采样器。如果不是,如何在线更改samplerate?