无法使用 FFmpeg 提取 MKV 附件

无法使用 FFmpeg 提取 MKV 附件

我正在尝试按照以下文档从 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]. 

输入后将ytest.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

相关内容