【发布时间】:2016-10-15 15:53:51
【问题描述】:
我无法让 ffmpeg 从 .mp4 文件中复制所有音频流。经过数小时的在线搜索,这似乎应该复制所有流(as shown in example 4 here):
ffmpeg -i in.mp4 -map 0 -c copy out.mp4
in.mp4 包含 3 个流:
- 视频
- 音轨 1
- 音轨 2
out.mp4(应与in.mp4 相同)仅包含 2 个流:
- 视频
- 音轨 1
FFmpeg 似乎可以正确识别所有 3 个流,但不会将它们全部复制过来。 FFmpeg 的输出:
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Stream #0:2 -> #0:2 (copy)
编辑:来自ffmpeg -v 9 -loglevel 99 -i in.mp4的输出:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from in.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.36.100
Duration: 00:00:06.03, start: 0.000000, bitrate: 5582 kb/s
Stream #0:0(und), 1, 1/15360: Video: h264 (Main), 1 reference frame (avc1 /
0x31637661), yuv420p(tv, bt470bg/unknown/unknown, left), 1920x1080 (0x0) [SAR 1:
1 DAR 16:9], 0/1, 5317 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und), 1, 1/48000: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(und), 1, 1/48000: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 128 kb/s
Metadata:
handler_name : SoundHandler
Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 0000000001c2b9e0] Statistics: 153350 bytes read, 2 seeks
编辑 2(已解决):我设法从 this ticket 中找到了正确的语法。对于任何其他感兴趣的人,正确的语法是:
ffmpeg -i in.mp4 -vcodec copy -c:a copy -map 0 out.mp4
这将复制所有流。
【问题讨论】:
-
你使用的是哪个版本的ffmpeg,在什么平台上?根据ffmpeg.org/bugreports.html 上的“错误报告”页面,
ffmpeg -v 9 -loglevel 99 -i in.mp4的输出会有所帮助。 -
我添加了来自
ffmpeg -v 9 -loglevel 99 -i的输出。平台是 Windows。 FFmpeg 版本为git-0a9e781 (2016-06-10)。
标签: linux windows audio video ffmpeg