我正在尝试按照以下文档从 MKV 文件中提取附件http://ffmpeg.org/ffmpeg.html#Main-options
直接引用自文档:
To extract all attachments to files determined by the filename tag:
ffmpeg -dump_attachment:t "" INPUT
我在我的计算机上运行的命令是这样的:
ffmpeg -i test.mkv -dump_attachment:t "" INPUT
但是我一直收到以下错误:
[NULL @ 0x7f981182ae00] Unable to find a suitable output format for 'INPUT'
INPUT: Invalid argument
我该如何从 test.mkv 文件中提取附件?我是不是误解了它INPUT
的意思?
我试过了:
ffmpeg -dump_attachment:t "" test.mkv
FFmpeg 提示我以下内容:
File 'test.mkv' already exists. Overwrite ? [y/N].
输入后将y
test.mkv 替换为 0 字节文件,且不提取任何附件。
附加信息:
我通过以下方式安装了 ffmpeg酿造使用以下命令:
brew install ffmpeg --with-freetype --with-libass --with-tools
答案1
文档有误。此错误现已修复。这些示例缺少一个-i
标志来正确指定输入文件:
ffmpeg -dump_attachment:t "" -i test.mkv
这对我在 FFmpeg 1.1.2 及以上版本中有效。请注意,FFmpeg 仍会抱怨未指定输出文件。不过不用担心:附件仍将被提取。
您还可以使用以下方式从 MKV 文件中提取附件MKVToolNix. 这套程序可以轻松下载从适用于所有操作系统的网站,或者在安装的 OS X 中brew install mkvtoolnix
。
查看附件的 ID:
mkvmerge -i <mkv-file>
然后提取它们:
mkvextract attachments <mkv-file> <attachment-id>:<file-name>
查看mkvextract
文档。如果为空,则会自动选择一个名称。当然,<file-name>
您也可以指定多对。<attachment-id>:<file-name>
答案2
除了接受的答案之外,如果您将其添加-t 0 -f null null
到命令的末尾,它将停止给您错误。
ffmpeg -dump_attachment:t "" -i test.mkv -t 0 -f null null
此外,如果您在 PowerShell 上运行该命令,则需要将空字符串放在引号内,如下所示:
ffmpeg -dump_attachment:t '""' -i test.mkv -t 0 -f null null