无法使用 ffmpeg 将字幕提取到 txt 文件中

无法使用 ffmpeg 将字幕提取到 txt 文件中

尝试将字幕提取到 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

相关内容