在网络上,同时传输音频和视频并且在不同的通道传输,就涉及到了唇音同步(Lip-sync)的问题,比如SIP视频通话、视频会议等。
最近在研究这个问题,对Lip-sync有所了解。介绍一种通用易懂的架构。如下:
1.发送端的动作
音频帧和视频帧都打上时间戳(以同样的时间基(timebase),比如系统运行的时间)
2.接收端的动作
1)媒体内同步
创建音频和视频的jitter 缓冲区,来处理延迟抖动、丢包、乱序导致的播放不流畅问题。
2)媒体间同步
以音频为主流,视频为从流。
音频播放之前,缓冲一定数量的音频帧。 定时从音频缓冲区中取得一个音频帧进行播放,
并记录下时间戳Ta。然后从视频缓冲区中取得一个视频帧,其时间戳Tv与Ta进行对比,来决定
是立即显示、丢弃还是稍后显示。
以上就是简单的唇音同步的方案,仅在接收端进行改善,但是音频和视频不同步,
有很多原因:采集不同步、编码不同步、网络打包不同步、网络传输不同步、 网络解包不同步,解码不同步。
故,实现唇音同步,不仅可以在接收端进行改善,同时也可以在发送端做改善的处理,在此不做描述。