视频和声音的同步

来源:互联网 发布:淘宝被盗 刷蚂蚁花呗 编辑:程序博客网 时间:2024/04/28 17:05
   到了设计中的第二个难点。我郁闷了好久,通过我的测试方向,声音的每秒中的数据相对稳定,多加帧数据和少一帧数据声音质量都会有问题,一开始我就通过调节视频图像在一秒钟的数据图像帧数来存储视频图像,时间短发现还可以,时间一长发现仍就不同步,算法:是在存一帧图像后检查时间是否在同一秒内,如果是就inc++,如果不在同一秒内(表示下一秒开始)判断inc值,如果大于fps(avi播放的帧率)就不管,如果小于,就需要补帧。难道是我的时间不够精确?
   仔细思考我的设计目标,终于我想到一个更为精确的补帧方法,首先发现我们存储的音频每4次(4000byte*4)播放时间为一秒,我们定义一个变量计算音频时间sec,一个记录音频帧数audiocount,if(audiocount++%4 == 0)
   sec++;
再到视频存储的地方去定义一个视频帧数变量videocount,
int ntmp=0;
ntmp = fps*sec-videocount;
while(ntmp-- > 0)
{
//补帧
}
注意这里视频调用的这一部分的调用写帧最多调用每秒次数只能是fps。
 

结果发现 同步效果非常的好! 因为在网上没有找到同步的比较好的材料,所有把自己的一点心得写一下,希望能够给像我一样遇到此问题的人一个抛砖引玉的作用,本次的AVI录制还有一些不足的地方,希望有高人指点一下关于avilib库的问题和vfwlib中录制的更好办法。

源码需要简单修改即可用。

http://blog.chinaunix.net/u3/94302/showart_1891961.html

原创粉丝点击