hdf*_*hdf 6 unix ffmpeg audio-streaming
我有一个包含两个音频流的视频文件:
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 960x540, 58 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2012-07-21 06:10:08
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 164 kb/s
Metadata:
creation_time : 2012-07-21 06:10:08
Stream #0:2(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s
Metadata:
creation_time : 2012-07-21 06:10:08
Run Code Online (Sandbox Code Playgroud)
有没有办法只禁用其中一个?我真正需要的是得到一个这样的文件:
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 960x540, 58 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2012-07-21 06:10:08
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 164 kb/s
Metadata:
creation_time : 2012-07-21 06:10:08
Run Code Online (Sandbox Code Playgroud)
谢谢
llo*_*gan 15
默认情况下,ffmpeg 流选择将根据以下标准仅映射每个流类型的一个流:
在几个相同类型的流的情况下,选择具有最低索引的流。
使用该-map选项将覆盖此行为,如下所示。
ffmpeg通过参考输入流索引准确地告诉你想要什么流:
ffmpeg -i input -map 0:1 -map 0:2 -c copy output
Run Code Online (Sandbox Code Playgroud)
-c copy将流复制(重新复用)每个映射的流而不是重新编码。或使用流说明符:
ffmpeg -i input -map 0:v -map 0:a:0 -c copy output
Run Code Online (Sandbox Code Playgroud)
使用流说明符更加灵活,因为您不必知道确切的流索引,并且它可以帮助防止意外映射,例如尝试将视频映射到纯音频格式
-map 0:v将从输入 0 映射所有视频流(从 0ffmpeg开始计数,因此 0 是第一个输入,也是您的情况下的唯一输入)。
-map 0:a:0 将从输入 0 映射第一个音频流。
告诉ffmpeg映射所有内容,然后选择要排除的内容:
ffmpeg -i input -map 0 -map -0:a:1 -c copy output
Run Code Online (Sandbox Code Playgroud)
-map 0 将映射来自输入 0 的所有流。
-map -0:a:1 将从输入 0 中排除第二个音频流。
| 归档时间: |
|
| 查看次数: |
9435 次 |
| 最近记录: |