如何用 ffmpeg 获取多音轨视频文件的各个音轨

[b]1. 先用ffmpeg查看视频文件信息:[/b]


# ffmpeg -i a.MPG
Input #0, mpeg, from 'a.MPG':
Duration: 00:00:32.32, start: 245.117611, bitrate: 8581 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], 9800 kb/s, 59.94 tbr, 90k tbn, 59.94 tbc
Stream #0.1[0x31]: Subtitle: dvdsub
Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.3[0x82]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.4[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream #0.5[0x83]: Audio: ac3, 48000 Hz, stereo, s16, 160 kb/s
Stream #0.6[0x84]: Audio: ac3, 48000 Hz, stereo, s16, 160 kb/s
Stream #0.7[0x85]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
Stream #0.8[0x2d]: Subtitle: dvdsub
Stream #0.9[0x2e]: Subtitle: dvdsub
Stream #0.10[0x2f]: Subtitle: dvdsub
Stream #0.11[0x24]: Subtitle: dvdsub
Stream #0.12[0x30]: Subtitle: dvdsub
Stream #0.13[0x2a]: Subtitle: dvdsub
Stream #0.14[0x2b]: Subtitle: dvdsub
Stream #0.15[0x2c]: Subtitle: dvdsub
Stream #0.16[0x23]: Subtitle: dvdsub


[b]2. 转制音频文件[/b]
可以看到Audio的Stream有2-7个,分别获取这几个audio音轨的命令是:

ffmpeg -i a.MPG -map 0:2 a.2.wav
ffmpeg -i a.MPG -map 0:3 a.3.wav
ffmpeg -i a.MPG -map 0:4 a.4.wav
...
ffmpeg -i a.MPG -map 0:7 a.7.wav

a.%d.wav (2-7) 即是输出的几个音轨的音频文件。
### 使用 FFmpeg 将多个音轨合并到一个视频中 要将多个音轨合并到一个视频文件中,可以通过 `FFmpeg` 的复杂过滤器来实现。以下是具体方法: #### 方法概述 可以利用 `-filter_complex` 参数以及 `[an]amerge` 过滤器将多个音频流混合在一起,并将其嵌入到目标视频中[^1]。 #### 命令示例 以下是一个完整的命令示例,展示如何将两条独立的音频轨道与一条视频轨道合并为单个输出文件: ```bash ffmpeg -i video.mp4 -i audio1.aac -i audio2.aac \ -filter_complex "[1:a][2:a]amerge=inputs=2[aout]" \ -map 0:v -map "[aout]" -c:v copy -ac 2 output.mp4 ``` - **解释**: - `-i video.mp4`: 输入原始视频文件- `-i audio1.aac`, `-i audio2.aac`: 分别输入两段音频文件。 - `-filter_complex "[1:a][2:a]amerge=inputs=2[aout]"`: 使用复杂的过滤器链将两个音频流 (`audio1.aac` 和 `audio2.aac`) 合并成一个新的音频流 `aout`[^4]。 - `amerge=inputs=2`: 表明需要合并的是两个音频源。 - `-map 0:v`: 映射第一个输入(即视频)作为最终输出的视频部分。 - `-map "[aout]"`: 映射经过处理后的音频流作为最终输出的音频部分。 - `-c:v copy`: 对视频流不做重新编码,直接复制以节省时间。 - `-ac 2`: 设置输出音频通道数为立体声 (双声道)[^3]。 - `output.mp4`: 输出文件名。 #### 特殊情况说明 当遇到无音频的视频时,需先创建一段匹配视频长度的静默或背景音乐填充空白区域[^2]。例如: ```bash ffmpeg -f lavfi -i anullsrc=r=48000:cl=stereo -t 10 silent_audio.aac ``` 此命令会生成持续时间为 10 秒的无声 AAC 文件供后续使用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值