代码之家  ›  专栏  ›  技术社区  ›  Maxime Dupré

如何为mp4容器的视频流指定偏移和寻道位置?

  •  0
  • Maxime Dupré  · 技术社区  · 6 年前

    好像我可以有一个或另一个( -ss -itsoffset

    ffmpeg -i input.mp3 -itsoffset 4 -t 4 -ss 3 -i input.mp4 -c:v copy output.mp4
    

    有了这个命令,我希望音频立即开始播放,而视频开始播放4秒后,寻找到3秒进入视频。

    如何防止寻道影响偏移?

    干杯!

    0 回复  |  直到 6 年前
        1
  •  2
  •   Community Mohan Dere    5 年前

    “我希望音频马上开始播放,视频4秒后开始播放,
    (视频中3秒时搜索到)。

    怎么办 无需重新编码

    ffmpeg -ss 00:00:03 -itsoffset 4 -i video.mp4 -ss 00:00:00 -i audio.mp3 -c:v copy output.mp4
    

    -ss 00:00:03 =搜索3秒钟的输入 video.mp4 设为输出的起点 视频

    -itsoffset 4 =将输入回放前的延迟设置为输出。提供静止帧4秒。

    -i video.mp4 =设置 视频

    -ss 00:00:00 =搜索0秒的输入 audio.mp4 作为输出的起点 音频 跟踪。

    -i audio.mp3 =设置 音频 请参见下面的音频旁注

    -c:v copy = ( 避免重新编码 视频 ).

    output.mp4 =设置输出a/v 容器 .

    关于视频: MPEG视频只能 搜索关键帧 i-frames ). 如果你设置了 -ss 3 -c:v副本 ,并且在创建时找不到关键帧 -ss .

    可能在3秒时缺少关键帧可以解释:

    “我玩的时候 input.mp4 ,视频只比音频晚一秒
    (与4秒相反)

    这是公平的 警告 在文件中(见: FFmpeg wiki page - Seeking ).

    使用 -党卫军 作为输入选项与 -c:v

    基本上,如果您指定“second 157”并且在second 159之前没有关键帧,那么它将在开始时包括两秒钟的音频(没有视频),然后将从第一个关键帧开始。

    So be careful when splitting and doing codec copy

    唯一的解决办法是不断测试/调整视频 -党卫军 找到下一个最佳折衷方案。

    • HOURS:MM:SS.MILLISECONDS 例子: -ss 00:00:02.895

    MP4通常有AAC音轨。请注意,由于您的输入音频是MP3格式的,因此FFmpeg将自动将其重新编码为AAC格式。

    • -c:a copy
      -c:v副本 ).
        2
  •  1
  •   Maxime Dupré    6 年前

    ffmpeg -t 4 -ss 3 -i input.mp4 -c:v libx264 output.mp4
    

    然后在最后的.mp4中混合偏移量:

    ffmpeg -i input.mp3 -itsoffset 4 -i input.mp4 -c:v copy output.mp4