音视频同步问题(thinkvd开发日志)

问题描述:
视频文件: A  start_time:100  duration:50 fps: 24
视频文件: B  start_time:200  duration:50 fps: 25
视频文件: C  start_time:150  duration:50 fps: 29.97

当它们合并转换成一个文件时,由于fps不同,可能会出现:
问题1:A的声音跳到B中,或B中串到C中。

问题2:总的时间不对。
问题3:A、B、C有的音视频不同步
问题4:声音于视频提前结束
.....................................

ABC若按不同的顺序组合转换,(P3) 9种情况
当时没有测试单独A、B、C转换在不同的帧率下,是否存在同步问题,后来发现有的文件存在这个问题,当然带到合并中问题肯定也少不了。

出现这此问题时,还不知道如何入手。以前用的pkt.pts在测试中发现是无效的值,很迷茫。查了一些资料,后来发现很多人提到output-example.c, 于是在这个文件的基础上反复按自己的想法更改:
1。如何加快视频显示。
2。如何延迟视频显示。
3。如何屏蔽声音
4。如何屏蔽视频。
5。如何动态更改fps让其生效
6。如何拉长声音.
........................

为了解决这些问题,打印出来了大量类似下面的数据来分析,
2010-12-21 11:47:44 -- ffmpeg.c(1211):do_video_out DEBUG:@"*************** = pts=13.1308460, sync=12"@
2010-12-21 11:47:44 -- ffmpeg.c(1384):do_video_out DEBUG:@" audio_pts=0.3655220,  vpts=0.3503330, apts=365522, vpts=350333, dpts=15189"@
2010-12-21 11:47:44 -- ffmpeg.c(1385):do_video_out DEBUG:@"writeBefore=31530, = pts=-9223372036854775808, duration=3003"@
2010-12-21 11:47:44 -- ffmpeg.c(1211):do_video_out DEBUG:@"*************** = pts=14.1308550, sync=13"@
2010-12-21 11:47:44 -- ffmpeg.c(1384):do_video_out DEBUG:@" audio_pts=0.3655220,  vpts=0.3837000, apts=365522, vpts=383700, dpts=-18178"@
2010-12-21 11:47:44 -- ffmpeg.c(1385):do_video_out DEBUG:@"writeBefore=34533, = pts=33031, duration=3003"@
2010-12-21 11:47:44 -- ffmpeg.c(1211):do_video_out DEBUG:@"*************** = pts=15.1308640, sync=14"@
2010-12-21 11:47:44 -- ffmpeg.c(1384):do_video_out DEBUG:@" audio_pts=0.3655220,  vpts=0.4003770, apts=365522, vpts=400377, dpts=-34855"@
2010-12-21 11:47:44 -- ffmpeg.c(1385):do_video_out DEBUG:@"writeBefore=36034, = pts=34532, duration=3003"@
2010-12-21 11:47:44 -- ffmpeg.c(1211):do_video_out DEBUG:@"*************** = pts=16.1308430, sync=15"@
2010-12-21 11:47:44 -- ffmpeg.c(1384):do_video_out DEBUG:@" audio_pts=0.3655220,  vpts=0.4170550, apts=365522, vpts=417055, dpts=-51533"@

反复与 ffmpeg.c中的流程比较,数据前后比较,时间就这样一点点过去, 相信朝这个方向努力会有结果的.

你可能感兴趣的:(c,video,测试,360,audio,2010)