![当不存在字幕时,FFMpeg 会出错](https://linux22.com/image/1529518/%E5%BD%93%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%AD%97%E5%B9%95%E6%97%B6%EF%BC%8CFFMpeg%20%E4%BC%9A%E5%87%BA%E9%94%99.png)
我正在尝试使用 ffmpeg 将 .mkv 转换为 .mp4,并且在转换过程中,我还尝试刻录字幕(如果存在)。这是命令行。这是一个脚本:
$PGMNAME -i "$1" -s hd720 -c:v libx264 -crf 23 -c:a copy -strict -2 -vf subtitles="$1" "$BASEPATH/$FILENAME.mp4"
"$1"
原始文件是 .mkv 文件,包含(或不包含,这是问题所在)字幕。使用上述操作,我收到以下错误:
Unable to locate subtitle stream file.mkv
和
Error initializing filter 'subtitles'
这些是通过无线方式下载的电视节目。不知道哪些节目包含字幕。我该如何重写命令以避免出现错误Unable to locate subtitle stream file.mkv
?
答案1
用于ffprobe
确定是否有字幕流。如果有,则使用字幕筛选。
ffprobe -loglevel error -select_streams s:0 -show_entries stream=codec_type -of csv=p=0 input.mkv
- 如果有字幕就会输出
subtitle
。 - 如果没有字幕则不会输出任何内容。