我想获取所有可用的字幕轨道列表,例如:
#1 - id, name
#2 - id, name
#3 - id, name
...
如何列出我拥有的字幕轨道数量,显示每个轨道的ID和名称
是否有任何FFmpeg
选项可以显示此类列表?
我想获取所有可用的字幕轨道列表,例如:
#1 - id, name
#2 - id, name
#3 - id, name
...
如何列出我拥有的字幕轨道数量,显示每个轨道的ID和名称
是否有任何FFmpeg
选项可以显示此类列表?
ffprobe
命令用于列出流 ID 和语言:
ffprobe -loglevel error -select_streams s -show_entries stream=index:stream_tags=language -of csv=p=0 input.mkv
5,eng
6,fao
7,ain
这显示了流ID #5是英语,#6是法罗语,#7是阿伊努语。请参见ISO 639代码列表(参考639-2/T或639-2/B)获取语言缩写。
-map
选项您可以使用此信息创建命令。如果您想使用英语和阿伊努语,请使用:
-map 0:5 -map 0:7
或者
-map 0:s:0 -map 0:s:2
或者
-map 0:s:m:language:eng -map 0:s:m:language:ain
请查阅-map
选项的文档以获取更多信息。
FFmpeg似乎没有这样的选项
所以我们只能通过ffmpeg -i VIDEO_FILE_NAME
解析所有打印出来的数据(过滤掉非流文本轨道行)
此外,FFmpeg并不真正打印出那个ID(它只是由FFmpeg生成的流位置),就像MediaInfo会打印出来的那样。
ffprobe input.mkv 2>&1 >/dev/null | grep Stream
- Giancarlo Sportelli
FFmpeg
工作,因为我在 Android 上使用它(https://github.com/WritingMinds/ffmpeg-android-java),而且没有FFprobe
。 - user25ffmpeg
从0开始计数。我猜其他工具从1开始。 - llogan