比较好奇里面的原理,google了一些东东。。。
http://bbs.chinavideo.org/viewthread.php?tid=1183&extra=page%3D1
音视频同步原理,方法--探讨
http://wz.csdn.net/item/924767/
这里面收藏了directShow的东东
http://bbs.chinavideo.org/viewthread.php?tid=1183&extra=page%3D1
音视频同步原理,方法--探讨
音视频同步这一块,我一直不是很了解,很想尝试一下,下面是在qq群上向诸位前人请教的会话记录,因为对我这样的初学者很有帮助,所以粘贴至此,以作备份,再次感谢热心回答问题的人,尤其是(不做好人!)^_^;
2006-10-25 10:21:06 dophin
有人有实时编码时对音视频进行录制时,音视频如何同步的相关资料么?有相关网站也可以哈,我实在找不到相关资料了。。。
2006-10-25 10:25:42 dophin
或者具体一点的也行,比如音视频到底是如何同步的,有书籍介绍也可以啊,先谢了哈。。。。
(人众人) 2006-10-25 10:21:45
通过时间戳
(人众人) 2006-10-25 10:21:49
我也在研究这个问题
( 新左派) 2006-10-25 10:21:56
以音频时间为主
(人众人) 2006-10-25 10:22:01
对
(不做好人!) 2006-10-25 10:22:08
新左派讲对了。
(不做好人!) 2006-10-25 10:22:14
声音图象交错发送。
( 新左派) 2006-10-25 10:22:43
视频解码时,按当前播放时间找到对应的视频帧
(不做好人!) 2006-10-25 10:22:44
可以一个音频包有N个图象。就在这一个音频包完成的过程中按帧率显示图象。
(dophin) 2006-10-25 10:28:39
嗯,那么音频又是以什么为主呢?毕竟,音频的播放也是和时间有关系的,音频在播放时就是只管自己播放就行么?
(不做好人!) 2006-10-25 10:24:05
声卡有时间同步处理机制的。
(不做好人!) 2006-10-25 10:24:32
我以前的电脑主板如果驱动没有装好。声音就非常快。结果图象也是一闪就过去了。
( 新左派) 2006-10-25 10:24:47
声音正常解码与播放啊
(不做好人!) 2006-10-25 10:25:05
是WINDOWS MEDIAPLAYER播放的。只有驱动装好了。能正确驱动的时候声卡有时钟同步功能的。
( 新左派) 2006-10-25 10:25:14
只是视频的解码需要参照当前的声音的时间
(不做好人!) 2006-10-25 10:25:16
所以声音和图象交错,
( 新左派) 2006-10-25 10:25:36
声音播放时,是不用管什么的,就是单独的声音解码
(dophin) 2006-10-25 10:32:16
哦,我现在大脑中大致有点模型了,就是音频只管自己播放就行,视频根据自己本身带的时间戳与但前系统时间和音频时间进行比较,然后解码播放,如此实现同步,这么理解对么?
(不做好人!) 2006-10-25 10:28:00
你是用什么系统?
(dophin) 2006-10-25 10:33:26
声音和图像交错是什么意思?这两个不是开两个线程完成的么?不存在交错问题啊,即使存在,也是操作系统级的吧 ?
(不做好人!) 2006-10-25 10:28:35
AVVVVVVVVVVVVVVVAVVVVVVVVVVVVVVV
(dophin) 2006-10-25 10:33:42
我得,linux。。。
(不做好人!) 2006-10-25 10:28:52
当你放A的时候,直接交给声卡。
(不做好人!) 2006-10-25 10:29:30
中间的V就是前后两个声音包的相差时间,你就算出平均速度
(dophin) 2006-10-25 10:35:35
算出 平均速度后,得出每sec放几帧,然后播放v,是这样么?
(不做好人!) 2006-10-25 10:30:54
对
(不做好人!) 2006-10-25 10:31:01
你声音有一个采样率吧。
(dophin) 2006-10-25 10:36:02
对,有,
(不做好人!) 2006-10-25 10:31:23
这就可以算出前后一个声音的时间了对不?
(不做好人!) 2006-10-25 10:31:36
比如44.1K/S
(dophin) 2006-10-25 10:36:36
对,
(不做好人!) 2006-10-25 10:31:56
那你从DSP中读取22.05K的数据是不是0.5?
(dophin) 2006-10-25 10:37:05
是,
(不做好人!) 2006-10-25 10:32:29
那在这段0.5秒钟的时间内你获取了15帧的数据。那你是不是0.5/15=0.03333秒钟就刷新一副图。
(dophin) 2006-10-25 10:37:49
没错。
(不做好人!) 2006-10-25 10:32:55
然后你再读取下一个声音和图象包。再这样搞。就可以了啦。不过前提条件你采集必须是同步的。
(不做好人!) 2006-10-25 10:33:11
对了。你是用嵌入式的吗?
(不做好人!) 2006-10-25 10:33:25
这个是以声音为基础的。
(不做好人!) 2006-10-25 10:34:04
还有一种是设置时钟,计算你的帧率来设置前后帧的时间,中间有误差就延时或者是跳跃一下。声音就另外单独管理。
(不做好人!) 2006-10-25 10:34:21
看看ffmpeg 的fplay.c,里面的源程序讲得很详细了。
(dophin) 2006-10-25 10:40:12
我的不是embedded
(dophin) 2006-10-25 10:40:24
就是普通pc机,
(不做好人!) 2006-10-25 10:36:08
哦。那你看fplay.c吧。里面很详细的有声音和图象的同步。虽然简单了一点。但麻雀虽小五脏俱全。
(dophin) 2006-10-25 10:41:54
哦,太好了,采集这一块,我基本明白了,播放我想也应该差不多,我自己试试看看,太感谢了你了哈。。。^_^
(不做好人!) 2006-10-25 10:37:14
别谢谢我。
(不做好人!) 2006-10-25 10:37:24
不过我做的方法是按照fplay.c里面的做的。
(dophin) 2006-10-25 10:42:23
好的,我马上就看看fplay。c,以前没有看是因为感觉他的播放效果不如mplayer,
(不做好人!) 2006-10-25 10:38:06
这个是简化了的啦。当然比不上mplayer
2006-10-25 10:21:06 dophin
有人有实时编码时对音视频进行录制时,音视频如何同步的相关资料么?有相关网站也可以哈,我实在找不到相关资料了。。。
2006-10-25 10:25:42 dophin
或者具体一点的也行,比如音视频到底是如何同步的,有书籍介绍也可以啊,先谢了哈。。。。
(人众人) 2006-10-25 10:21:45
通过时间戳
(人众人) 2006-10-25 10:21:49
我也在研究这个问题
( 新左派) 2006-10-25 10:21:56
以音频时间为主
(人众人) 2006-10-25 10:22:01
对
(不做好人!) 2006-10-25 10:22:08
新左派讲对了。
(不做好人!) 2006-10-25 10:22:14
声音图象交错发送。
( 新左派) 2006-10-25 10:22:43
视频解码时,按当前播放时间找到对应的视频帧
(不做好人!) 2006-10-25 10:22:44
可以一个音频包有N个图象。就在这一个音频包完成的过程中按帧率显示图象。
(dophin) 2006-10-25 10:28:39
嗯,那么音频又是以什么为主呢?毕竟,音频的播放也是和时间有关系的,音频在播放时就是只管自己播放就行么?
(不做好人!) 2006-10-25 10:24:05
声卡有时间同步处理机制的。
(不做好人!) 2006-10-25 10:24:32
我以前的电脑主板如果驱动没有装好。声音就非常快。结果图象也是一闪就过去了。
( 新左派) 2006-10-25 10:24:47
声音正常解码与播放啊
(不做好人!) 2006-10-25 10:25:05
是WINDOWS MEDIAPLAYER播放的。只有驱动装好了。能正确驱动的时候声卡有时钟同步功能的。
( 新左派) 2006-10-25 10:25:14
只是视频的解码需要参照当前的声音的时间
(不做好人!) 2006-10-25 10:25:16
所以声音和图象交错,
( 新左派) 2006-10-25 10:25:36
声音播放时,是不用管什么的,就是单独的声音解码
(dophin) 2006-10-25 10:32:16
哦,我现在大脑中大致有点模型了,就是音频只管自己播放就行,视频根据自己本身带的时间戳与但前系统时间和音频时间进行比较,然后解码播放,如此实现同步,这么理解对么?
(不做好人!) 2006-10-25 10:28:00
你是用什么系统?
(dophin) 2006-10-25 10:33:26
声音和图像交错是什么意思?这两个不是开两个线程完成的么?不存在交错问题啊,即使存在,也是操作系统级的吧 ?
(不做好人!) 2006-10-25 10:28:35
AVVVVVVVVVVVVVVVAVVVVVVVVVVVVVVV
(dophin) 2006-10-25 10:33:42
我得,linux。。。
(不做好人!) 2006-10-25 10:28:52
当你放A的时候,直接交给声卡。
(不做好人!) 2006-10-25 10:29:30
中间的V就是前后两个声音包的相差时间,你就算出平均速度
(dophin) 2006-10-25 10:35:35
算出 平均速度后,得出每sec放几帧,然后播放v,是这样么?
(不做好人!) 2006-10-25 10:30:54
对
(不做好人!) 2006-10-25 10:31:01
你声音有一个采样率吧。
(dophin) 2006-10-25 10:36:02
对,有,
(不做好人!) 2006-10-25 10:31:23
这就可以算出前后一个声音的时间了对不?
(不做好人!) 2006-10-25 10:31:36
比如44.1K/S
(dophin) 2006-10-25 10:36:36
对,
(不做好人!) 2006-10-25 10:31:56
那你从DSP中读取22.05K的数据是不是0.5?
(dophin) 2006-10-25 10:37:05
是,
(不做好人!) 2006-10-25 10:32:29
那在这段0.5秒钟的时间内你获取了15帧的数据。那你是不是0.5/15=0.03333秒钟就刷新一副图。
(dophin) 2006-10-25 10:37:49
没错。
(不做好人!) 2006-10-25 10:32:55
然后你再读取下一个声音和图象包。再这样搞。就可以了啦。不过前提条件你采集必须是同步的。
(不做好人!) 2006-10-25 10:33:11
对了。你是用嵌入式的吗?
(不做好人!) 2006-10-25 10:33:25
这个是以声音为基础的。
(不做好人!) 2006-10-25 10:34:04
还有一种是设置时钟,计算你的帧率来设置前后帧的时间,中间有误差就延时或者是跳跃一下。声音就另外单独管理。
(不做好人!) 2006-10-25 10:34:21
看看ffmpeg 的fplay.c,里面的源程序讲得很详细了。
(dophin) 2006-10-25 10:40:12
我的不是embedded
(dophin) 2006-10-25 10:40:24
就是普通pc机,
(不做好人!) 2006-10-25 10:36:08
哦。那你看fplay.c吧。里面很详细的有声音和图象的同步。虽然简单了一点。但麻雀虽小五脏俱全。
(dophin) 2006-10-25 10:41:54
哦,太好了,采集这一块,我基本明白了,播放我想也应该差不多,我自己试试看看,太感谢了你了哈。。。^_^
(不做好人!) 2006-10-25 10:37:14
别谢谢我。
(不做好人!) 2006-10-25 10:37:24
不过我做的方法是按照fplay.c里面的做的。
(dophin) 2006-10-25 10:42:23
好的,我马上就看看fplay。c,以前没有看是因为感觉他的播放效果不如mplayer,
(不做好人!) 2006-10-25 10:38:06
这个是简化了的啦。当然比不上mplayer
http://wz.csdn.net/item/924767/
这里面收藏了directShow的东东
loop's blog