无法使用 FFmpeg 提取 MKV 附件

Der*_*wok 3 ffmpeg

我正在尝试按照http://ffmpeg.org/ffmpeg.html#Main-options上的文档从 MKV 文件中提取附件

直接引用文档:

To extract all attachments to files determined by the filename tag:  
ffmpeg -dump_attachment:t "" INPUT
Run Code Online (Sandbox Code Playgroud)

我在计算机上运行的命令是这样的:

ffmpeg -i test.mkv -dump_attachment:t "" INPUT
Run Code Online (Sandbox Code Playgroud)

但是我不断收到以下错误:

[NULL @ 0x7f981182ae00] Unable to find a suitable output format for 'INPUT'
INPUT: Invalid argument
Run Code Online (Sandbox Code Playgroud)

如何从 test.mkv 文件中提取附件?我是否误解了INPUT应该是什么?

我试过了:

ffmpeg -dump_attachment:t "" test.mkv 
Run Code Online (Sandbox Code Playgroud)

FFmpeg 提示我:

File 'test.mkv' already exists. Overwrite ? [y/N]. 
Run Code Online (Sandbox Code Playgroud)

输入y将 test.mkv 替换为 0 字节文件,并且不会提取任何附件。


附加信息:

我使用以下命令通过brew安装了ffmpeg:

brew install ffmpeg --with-freetype --with-libass --with-tools
Run Code Online (Sandbox Code Playgroud)

slh*_*hck 6

该文档是错误的。该错误现已修复。这些示例缺少-i正确指定输入文件的标志:

ffmpeg -dump_attachment:t "" -i test.mkv
Run Code Online (Sandbox Code Playgroud)

这在 FFmpeg 1.1.2 及更高版本中对我有用。请注意,FFmpeg 仍会抱怨未指定输出文件。不过不用担心:附件仍会被提取。


您还可以使用MKVToolNix从 MKV 文件中提取附件。这套程序可以轻松地从适用于所有操作系统的网站下载brew install mkvtoolnix,或者在安装了.

查看附件的 ID:

mkvmerge -i <mkv-file>
Run Code Online (Sandbox Code Playgroud)

然后提取它们:

mkvextract attachments <mkv-file> <attachment-id>:<file-name>
Run Code Online (Sandbox Code Playgroud)

请参阅mkvextract文档。如果<file-name>为空,将自动选择一个名称。<attachment-id>:<file-name>当然,您也可以指定多对。