使用 ffprobe 按语言查看音轨

cro*_*lum 0 ffmpeg batch-file ffprobe

我希望使用 ffprobe 列出所有音频流,并显示使用的语言。

简单地说,这是我试图找到从视频文件中自动删除非英文曲目的方法的一部分。

我是 ffprobe 的新手,但有一些使用 ffmpeg 的经验。

因为我知道无法保证语言跟踪的顺序。

这就是为什么我认为列出每个曲目至关重要,按编号,然后是语言,然后当我知道这部分有效时,找出如何删除非英语的。

谢谢你的时间。

Gya*_*yan 7

运行这个 ffprobe 命令

ffprobe in.mp4 -show_entries stream=index:stream_tags=language -select_streams a -of compact=p=0:nk=1
Run Code Online (Sandbox Code Playgroud)

将产生这个输出

1|eng
2|deu
3|eng
4|eng
5|fre
Run Code Online (Sandbox Code Playgroud)

第一个值是绝对流索引,第二个值是分配的语言标签。

要仅删除所有带有英文标记的音频流,请运行

ffmpeg -i in.mp4 -c copy -map 0 -map -0:m:language:eng NoEng.mp4
Run Code Online (Sandbox Code Playgroud)

要仅保留带有英文标签的音频流,请运行

ffmpeg -i in.mp4 -c copy -map 0:v -map 0:m:language:eng OnlyEng.mp4
Run Code Online (Sandbox Code Playgroud)