FFmpeg -map 0 失败,错误“流映射的数量必须与输出流的数量相匹配”

FFmpeg -map 0 失败,错误“流映射的数量必须与输出流的数量相匹配”

我正在尝试使用 Ubuntu 的 ffmpeg 将文件转换为 MKV,同时复制所有视频和字幕流,但将所有音频流转换为 AC3。

使用此命令:

ffmpeg -i input.mkv -map 0 -vcodec copy -scodec copy -acodec ac3 -ab 256k output.mkv

失败

Number of stream maps must match number of output streams

删除-map 0可解决问题,但并非所有的字幕流都在输出文件中。

编辑

以下是完整的控制台输出:

user@laptop:~/$ ffmpeg -i input.mkv -map 0 -vcodec copy -scodec copy -acodec ac3 -ab 256k output.mkv
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
  built on Jan 24 2013 14:49:20 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
[matroska,webm @ 0xa0cb20] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'input.mkv':
  Duration: 00:10:56.88, start: 0.000000, bitrate: 1536 kb/s
    Stream #0.0(eng): Video: h264 (High), yuv420p, 1920x1080, PAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0.1(eng): Audio: dca (DTS), 48000 Hz, 5.1, s16, 1536 kb/s (default)
    Stream #0.2(eng): Subtitle: pgssub (default)
    Stream #0.3(fre): Subtitle: pgssub
    Stream #0.4(spa): Subtitle: pgssub
Number of stream maps must match number of output streams

答案1

你看到的行为实际上没有任何意义,但考虑到你正在使用ffmpeg来自 Libav 的损坏的“假”程序,并且不是真的,这可能是一个早已修复的错误。只需使用最新版本即可正常运行。

下载最近的静态构建来自 FFmpeg 主页或者自己编译

您可以将命令缩短为:

ffmpeg -i in.mkv -c copy -c:a ac3 -map 0 out.mkv

FFmpeg 现在将自动复制所有流并将它们全部映射到输出,例如像这样:

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (aac -> ac3)
  Stream #0:2 -> #0:2 (copy)
  Stream #0:3 -> #0:3 (copy)
  Stream #0:4 -> #0:4 (copy)

相关内容