V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhouweiluan
V2EX  ›  FFmpeg

求问关于 ffmpeg 烧录硬字幕的时间线问题。

  •  
  •   zhouweiluan · 2020-08-22 01:26:45 +08:00 · 2594 次点击
    这是一个创建于 1591 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要截取一部电影里的一小段同时写入硬字幕。
    查找了很多文献,最后得出
    ffmpeg -ss [time] -to [time] -i [input] -vf subtitles=[ass] output.mp4
    这条命令。
    最后产生的结果是,电影确实按照预设的时间线裁剪出来了,字幕确实也烧录到里面了,但是字幕文件并没有按裁剪的时间线走,而是从头开始,找了很多资料也没有了解到关于字幕的相关裁剪时间命令。
    无奈上来请教 0.0

    6 条回复    2021-05-28 12:30:34 +08:00
    jifengg
        1
    jifengg  
       2020-08-24 10:23:51 +08:00   ❤️ 1
    -ss 和-to 写在-i 前面的时候,是对“输入文件进行截取”之后再进行字幕叠加。要改成
    -i [input] -ss [time] -to [time] ,-i 写在前面,这样的意思是“输出文件只截取 ss 到 to 秒”,这样字幕时间线就正常了。

    注意,ffmpeg 有些参数的位置是有考究的。特别是 -i 前后。
    zhouweiluan
        2
    zhouweiluan  
    OP
       2020-08-25 01:01:55 +08:00
    @jifengg 非常感谢解答!这样确实字幕时间线能够正常。
    但是-i 在前导致的一个问题是他会先把整部电影先过一遍后再截取,导致整个编码时间非常久。
    还有没有另外的方法可以直接编码我需要的部分但是又能够字幕时间线正常的呢。
    jifengg
        3
    jifengg  
       2020-08-27 12:54:12 +08:00   ❤️ 1
    @zhouweiluan 暂时没找到好办法。一个方法是,先把字幕文件进行截取:
    ffmpeg -sub_charenc gb2312 -i in.srt -ss ** -to ** -y out.srt
    然后再用你一开始的语句“ffmpeg -ss [time] -to [time] -i [input] -vf subtitles=[ass] output.mp4”去加硬字幕。

    这个方法有一个弊端,如果你的截取时间点正好落在一句话上,ffmpeg 会舍弃这句话。出来的 srt 会少头少尾。当然解决办法也有,你截取的时候往前几十秒截。转码的时候-i 前面是你原先的-ss,-i 后面再加一个-ss 是你字幕往前偏移的那几十秒。
    zhouweiluan
        4
    zhouweiluan  
    OP
       2020-08-27 16:54:35 +08:00
    @jifengg 太感谢了,是个好办法。
    yuetian
        5
    yuetian  
       2021-05-27 09:57:44 +08:00 via Android   ❤️ 1
    vf 烧录字幕时会把字幕文件和视频流时间轴零点对齐,可以先调字幕文件时间轴,然后烧录,比如下面这两行,只给第 2 分钟的视频烧录字幕,

    $ ffmpeg -itsoffset -00:01:00 -i rawsub.ass -map 0 -c ass sub.ass
    $ ffmpeg -ss 00:01:00 -to 00:02:00 -i rawvideo.mp4 -map 0 -filter:v ass=f=sub.ass -c:v h264 -c:a copy video.mp4
    zhouweiluan
        6
    zhouweiluan  
    OP
       2021-05-28 12:30:34 +08:00
    @yuetian 感谢大佬解答,回头我试一下~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   976 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:03 · PVG 03:03 · LAX 11:03 · JFK 14:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.