创建 TS 文件时保留 PTS 信息

创建 TS 文件时保留 PTS 信息

我正在尝试将 MP4 转换为 TS 文件,以便我可以分割文件以进行 iOS 流媒体播放。我有一个视频 TS 文件(没有音频)和一个单独的音频 TS 文件。我遇到的问题是,有时音频和视频会不同步。经过一番研究,PTS 在这方面发挥了非常重要的作用。

所以,如果我运行ffprobe -print_format csv -show_packets test.mp4结果将是

数据包,视频,0,0,0.000000,-7200,-0.080000,3600,0.040000,N/A,N/A,13154,1673,K 数据包,视频,0,3600,0.040000,-3600,-0.040000,3600,0.040000,N/A,N/A,9227,14827,_ 数据包,视频,0,7200,0.080000,0,0.000000,3600,0.040000,N/A,N/A,8689,24054,_数据包,视频,0,14400,0.160000,3600,0.040000,3600,0.040000,N/A,N/A,7730,32743,_

第四列是 PTS 值,注意它从 0 开始。

如果我将 mp4 转换为 TS 文件ffmpeg -y -i test.mp4 -acodec libfaac -vcodec copy -vbsf h264_mp4toannexb test.ts,然后运行ffprobe -print_format csv -show_packets WG7855.ts,我会得到

数据包,视频,0,126000,1.400000,118800,1.320000,N/A,N/A,N/A,N/A,13204,564,K 数据包,视频,0,129600,1.440000,122400,1.360000,N/A,N/A,N/A,N/A,9233,14476,_ 数据包,视频,0,133200,1.480000,126000,1.400000,N/A,N/A,N/A,N/A,8695,24816,_数据包,视频,0,140400,1.560000,129600,1.440000,N/A,N/A,N/A,N/A,7736,34216,_

请注意,PTS 以 126000 开头。我已经尝试了-copytsarg,但 PTS 仍然以 126000 开头。

有谁可以帮忙吗?

答案1

谢谢 shlck!所以我做的是

ffmpeg -i file.mp4 -acodec libfaac -vcodec libx264 -an -map 0 -f segment -segment_time 10 -segment_list test.m3u8 -segment_format mpegts -vbsf h264_mp4toannexb -flags -global_header stream%05d.ts

看来 ts 文件保留了所有的时间戳!

相关内容