尝试将字幕提取到 txt 文件
ffmpeg.exe -i video.mkv -c copy -map 0:s:0 subs.txt
但出现以下错误
Unable to find a suitable output format for 'subs.txt'
subs.txt: Invalid argument
完整控制台输出:
ffmpeg version N-81872-gbe1d324 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 32.100 / 55. 32.100
libavcodec 57. 60.101 / 57. 60.101
libavformat 57. 51.102 / 57. 51.102
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 63.100 / 6. 63.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 2.100 / 2. 2.100
libpostproc 54. 0.100 / 54. 0.100
Input #0, matroska,webm, from 'video.mkv':
Metadata:
CREATION_TIME : 2018-10-28T02:41:51Z
ENCODER : Lavf57.7.2
Duration: 00:11:45.39, start: 0.000000, bitrate: 2774 kb/s
Stream #0:0: Video: h264 (Main), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 180k tbc (default)
Stream #0:1(eng): Audio: aac (LC), 48000 Hz, stereo, fltp (default)
Metadata:
title : Stereo
Stream #0:2(eng): Subtitle: ass
[NULL @ 00000000038c9540] Unable to find a suitable output format for 'subs.txt'
subs.txt: Invalid argument
它仅当我ass
像这样指定输出文件的扩展名时才有效:
ffmpeg.exe -i video.mkv -c copy -map 0:s:0 subs.ass
它正确提取并创建带有字幕的 subs.ass 文件
ffmpeg 如何解释输出文件的扩展名?为什么我必须为输出文件指定准确的扩展名?
类似的问题,但这里的错误不同: ffmpeg 无法找到适合“subs.srt”的输出格式
答案1
.txt
当在输出路径中提供文件扩展名时,ffmpeg 不知道您想要哪种输出。除非被-f
选项覆盖,否则它会尝试从文件扩展名中找出必要的格式,因此.ass
将调用正确的 SSA 格式、 SubRip 格式等。对于、等也是.srt
如此。.mp4
.mov
要查看支持哪些格式,请运行ffmpeg -formats
。格式名称和文件扩展名之间没有完美的映射——有时可能有多个扩展名触发格式——但在大多数情况下它们是相同的。例如, 格式mp4
以文件结尾的 调用.mp4
, 格式matroska
以 调用.mkv
。
至于字幕,你可以强制 ffmpeg 使用给定的格式-f <format>
。例如:
ffmpeg -i <input> -map 0:s:0 -c copy -f srt output.txt
假设您的输入有 SRT 字幕。如果没有,-c copy
则不起作用。-c copy
例如,如果您计划使用 输出,请忽略该部分-f ass
。