实时采集摄像头图像,转码然后RTMP实时推流,发现音视频不同步,该怎么解决?
先说下背景:正在开发一个转码软件,实时接收编码器输出的TS流(H264+AAC),然后对H264和AAC再进行一次转码,转码后输出的视频流格式还是H264,音频流格式还是AAC,只是分辨率、码率、采样率会有变化。最后将转码后的音视频一份保存成MP4文件,另一份用RTMP实时推送给流媒体服务器进行直播。
现在遇到的问题是发现推送出去的RTMP流音视频严重不同步,图像卡顿严重,不正常播放,声音也没法听。我做了一个实验,我自己将转码后的H264压缩数据单独保存成文件是可以正常播放的,将AAC单独保存成文件也可以正常播放。保存MP4的功能还没有做。
我将RTMP推送出去的数据保存成了FLV,用工具软件分析了一下,发现很多视频tag、音频tag都是连续的,有时连续超过10多帧。按说音视频tag应该是交错式的。我觉得自己编码后的视频帧和音频帧时间戳生成机制有问题,导致的音视频不同步,播放异常。
H264编码使用的是X264,AAC编码使用的是FAAC。我现在设定的音视频编码前和编码后的时间戳相同,都设置为该帧TS中音视频解码后的那个值。我想请教一下,在编码前和编码后,时间戳该怎么生成,怎么才能做到播放时同步呢?请教了。