在此把遇到这个问题的过程记录一下。
现象:将一个rmvb视频文件及dvd iso文件视频各截一段,然后转换合并成一个新的视频,这个问题是在测试a+b=c, 然后交换合并顺序b+a=c,交换合并顺序后出现播放异常,视频速度加快,音频播放正常。于是开始了痛苦的跟踪bug过程。
用的是storm播放器测试的,视频总是快,后来发现差不多快一半。rmvb是存在fps为一半的问题。用了不同rmvb文件当转换源测试也如此。
这个现象中在测试许多合并脚本中发现的,发现转换成avi, 源为rmvb视频时,与mpeg1video, mpeg2video, h264编编码相关的都存在,其它的编码都正常,开始以为是合并逻辑有问题,在合并逻辑上花了众多时间,后来跟踪write_frame后的音视频时间戳. 它们的时间戳交互出现,时间前后都紧邻,应该不是pts有问题。
后来发现转换单个文件也出现播放异常,大概确定与合并逻辑无关
既然rmvb存在fps为一半的问题,替换成其它视频文件为源,转换出来正常,于是写了与rmvb fps相关的逻辑,还是没有解决
也看了许多与rmvb, mpeg2vedio相关的资源及代码
时间就在查看、跟踪代码代码中过去了。。。。
无意中用KMP打开播放异常的视频文件,发现它的视频播放与音频同步的,正常,再测试几个也正常,用ffplay测试也正常,原来是storm有问题,真是晕啊,浪费大量时间。