ts无损合并时的时间戳如何修改
把两个ts文件进行无损合并,网上一般的思路就是直接把两个ts文件写在一起,但是缺点也是非常明显的。第一,后一个文件的第一帧如果不是I帧,则视频画面会出现马赛克;第二,由于没有修改时间戳,用播放器或者是MediaInfo看时间,总时间不等于合并的两个ts文件的时间之和。
针对如上两个问题,我进行了如下调整。第一,后一个文件,首先找到第一个I帧,I帧以前的数据直接丢掉,从I帧开始写文件;第二,修改一些时间戳之类的属性,具体来说,修改pcr、视频的pts、dts,音频的pts,及其每一个ts包的包计数CC。(pcr、视频pts、dts,音频dts,都是减去一个时间差。该时间差为第二个ts文件的I帧的dts和第一个ts文件的最后的视频dts的差)
现在的问题是:当我进行了如上的两步操作后,后一个ts文件的音频有点断断续续。
请做过ts合并的高手给予解答,或者说说思路。非常感谢!
[解决办法]
需要合并的两个文件至少得保证视频参数一致(帧型、分辨率、帧率、宽高比等),音频参数一致(编码方式、采样率、声道等)。
A、B文件合并的时候,其实B文件内部的时间间隔还是不变的,只是需要调整参考起点的时间戳并在此基础上做累加。一般合并时PTS比较重要,所以需要保证PTS的准确性与连续性。
[解决办法]
你的保证另外还有PAT,PMT,CAT等TABLE的合并问题,