简化 ffmpeg 中的脚本

简化 ffmpeg 中的脚本

这是我的第一篇帖子,所以提前道歉。我通常使用 HandBrake 将所有文件编码为 265,但问题不是 subs 的直通,它们会更改为 ssa(从 srt)。这种格式对我的电视、电视盒等来说是个问题……我更喜欢像曲目一样的 subs,而不是刻录它,以便在需要时使用它们……读了又读,终于找到了一个编码为 265 的脚本,但对我来说使用 GUI 要容易得多,主要是如果我必须更改某些东西(完全是菜鸟)所以,当我用 HB 编码为 265 时,我使用此脚本将 ssa 转换为 srt:

ffmpeg -y -i "$i" -metadata title="" -map 0:v -map 0:a -map 0:s -c copy -c:s srt "/out path/${i%.*}.mkv"

效果不错,但问题是字体大小。我不知道为什么要从 24 改为 75 或 105。然后我用这个从原始 mkv 中提取 srt:

ffmpeg -i "$f" -map 0:s:0 "${f%.mkv}01.srt" -map 0:s:1 "${f%.mkv}02.srt"; 

也可以,但删除元数据和语言,我仍然在寻找正确的方法。我试过这样

fmpeg -i "$f" -map 0:0 -metadata:s:s:0 language:spa "${f%.mkv}01.srt" -map 1 -metadata:s:s:1 language:spa "${f%.mkv}02.srt" 

但不起作用。我还尝试再次将字幕添加到 mkv 中,但都不起作用:

    for filename in *.mkv; 
  if [ -f "${filename01}" ]; [ -f "${filename02}" ]; then
ffmpeg -i "$filename" -f srt -i "$filename01" -f srt -i "$filename02" -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy -c:s srt "/out/${i%.*}.mkv"
  fi
done

有没有可能让它变得更容易?我探测编码的脚本是:

 for filename in *.mkv
    do 
      ffmpeg -i "$filename" -pix_fmt yuv420p10le -c:v libx265 -crf 28 -x265-params profile=main10 -map 0:0 -c:a copy -map 0:1 -map 0:2 -c:s copy -map 0:3 -map 0:4 "/out path/${i%.*}.mkv"
done

但与 HB 的结果不同。可能是缩放或裁剪,也可能是选择特定的音频/视频质量/大小。

抱歉,我遇到这么多问题。ffmpeg 确实有问题。有人能帮忙吗?

答案1

所以,尝试、搜索、阅读……终于找到了一些东西。我仍然使用 HB 进行编码,之后,仍然更改字幕格式,但在脚本中,只需将 srt 更改为文本。现在字幕具有正常字体大小,可以在任何设备上看到。

将 ssa subs 更改为具有正常字体大小的 srt 的新脚本:

ffmpeg -y -i "$i" -metadata title="" -map 0:v -map 0:a -map 0:s -c copy -c:s text "/out path/${i%.*}.mkv"

问候!!

相关内容