ffmpeg多路分解成音频和视频重置PTS

时间:2018-07-30 00:32:22

标签: ffmpeg

解复用

我正在按如下方式将TS段分解为音频和视频。

ffmpeg -y -i input.ts -vcodec copy -an output_video.ts
ffmpeg -y -i input.ts -acodec copy -vn output_audio.aac

检查输入

start_pts上的start_timeinput.ts如下所示。我能够使用ffprobe -show_streams -print_format json input.ts

检查这些值
"start_pts": 8306558438,
"start_time": "92295.093756",

检查输出视频

输出.ts具有一些默认的start_ptsstart_time值,如下所示。这些也是使用与上述相同的ffprobe命令获得的。

"start_pts": 126000,
"start_time": "1.400000",

检查输出音频

ffprobe上相同的output_audio.aac命令显示输出aac具有无效的codec_tagcodec_tag_string,如下所示。 start_pts中没有start_timeoutput_audio.aac

"codec_tag_string": "[0][0][0][0]", (should have been [15][0][0][0])
"codec_tag": "0x0000", (should have been 0xf000)

问题

  1. 想知道start_ptsstart_timecodec_tag的差异吗?
  2. 如果可以预期,我该怎么做以确保所有这些参数都保留在输出中?
  3. 如果没有预料到的话,我是否可以分享一些其他信息来追踪这一情况?

注意

ffprobe的{​​{1}}命令中,我发现其他输出与output_audio.aac不一致。我分享了我认为目前最有价值的东西。如果需要,我可以共享上述所有执行的完整输出。

[EDIT 07/30/2018-08:00 MST] duration etc.的日志如下所示。

ffmpeg -y -i input.ts -vcodec copy -an output_video.ts -acodec copy -vn output_audio.aac

1 个答案:

答案 0 :(得分:2)

所有差异都是可以预期的。除非另有设置,否则FFmpeg会删除输入时间戳偏移。 MPEG-TS多路复用器还添加了时间戳偏移。

重新混合TS时,您可以保留源时间戳,也可以避免像这样的混合器偏移,

ffmpeg -y -copyts -i input.ts -vcodec copy -an -muxdelay 0 -muxpreload 0 output_video.ts

由于.aac是原始ADTS流,因此不存在编解码器标记字符串。这是预期的。如果需要标记,请与.m4a.mka或类似容器混用。