【问题标题】:How to add a hard code of subs to this filter_complex如何向这个 filter_complex 添加一个硬编码
【发布时间】:2021-08-31 08:49:56
【问题描述】:
ffmpeg -ss 00:11:47.970 -t 3.090 -i "file.mkv" -ss 00:11:46.470 -t 1.500 -i "file" -ss 00:11:51.060 -t 0.960 -i "file.mkv" -an -c:v libvpx -crf 31 -b:v 10000k -y -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa];[outv]scale='min(960,iw)':-1[outv];[outv]subtitles='file.srt'[outv]" -map [outv] file_out.webm -map [outa] file.mp3

我有一个过滤器,将文件中的三个不同点连接在一起并按比例缩小这部分工作

我正在寻找如何添加到 filter_complex 一个子烧录步骤,使用我在使用上述代码时指定的文件从确切的时间渲染子程序,它不起作用

【问题讨论】:

    标签: ffmpeg video-processing


    【解决方案1】:

    字幕过滤器正在接收连接的流。它不包含来自原始段的时间戳。所以字幕过滤器从头开始。当您说“它不起作用”时,我假设这是问题所在。

    解决这个问题的简单方法是制作临时文件,然后将它们连接起来。

    1. 输出段

      ffmpeg -ss 00:11:47.970 -t 3.090 -copyts -i "file.mkv" -filter_complex "scale='min(960,iw)':-1,subtitles='file.srt',setpts=PTS-STARTPTS;asetpts=PTS-STARTPTS" -crf 31 -b:v 10000k temp1.webm
      ffmpeg -ss 00:11:46.470 -t 1.500 -copyts -i "file.mkv" -filter_complex "scale='min(960,iw)':-1,subtitles='file.srt',setpts=PTS-STARTPTS;asetpts=PTS-STARTPTS" -crf 31 -b:v 10000k temp2.webm
      ffmpeg -ss 00:11:51.060 -t 0.960 -copyts -i "file.mkv" -filter_complex "scale='min(960,iw)':-1,subtitles='file.srt',setpts=PTS-STARTPTS;asetpts=PTS-STARTPTS" -crf 31 -b:v 10000k temp3.webm
      

      使用快速搜索时,时间戳会被重置(-ss-i 之前)。 -copyts将保留时间戳,以便字幕过滤器知道从哪里开始字幕。

    2. 制作input.txt:

      file 'temp1.webm'
      file 'temp2.webm'
      file 'temp3.webm'
      
    3. concat demuxer 连接:

      ffmpeg -f concat -i input.txt -c copy output.webm
      

      -c copy 启用stream copy 模式,以避免重新编码以进行连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 2014-04-11
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多