ffmpeg使用命令实现音视频分离

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

有时候由于特殊需要可能需要将一个视频(带音频)的视频流和音频流分离,今天就简单说下这个问题。


一、简单介绍

本次经历的过程主要是读取文件->解复用->编码->封包->写入文件。

其中如果没有改变流的编码方式,就不需要重新编码。

二、具体操作

主要使用了ffmpeg的-map选项,最简单的方法只需要借助一句命令就行了,请继续往下看。

bash 复制代码
ffmpeg -i <视频文件> -map 0:0 <视频>.mp4 -map 0:1 <音频>.wav

0:0:就是第1个文件的第1个流

0:1:就是第1个文件的第2个流

如果你不知道你要的流是第几个位置,可以使用ffprobe工具查看

bash 复制代码
ffprobe -i <视频文件>
#输出如下所示
  Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 368x640, 406 kb/s, SAR 45:46 DAR 9:16, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 48 kb/s (default)

看到了没有一般视频都是0,音频都是1,至少对于只有一个视频流和音频流的文件是这样的。

三、验证

这里音频和视频都没有指定编码格式,视频还是AVC,音频从AAC变成了PCM了(部分播放器可能不能播放)。

1.源文件

2.视频文件

3.音频文件

四、补充

以上只是最简单的用法,还有很多更复杂的用法可以另外调研下,如果你想要mp3格式不妨这样改:

bash 复制代码
ffmpeg -i <视频文件> -map 0:0 <视频>.mp4 -map 0:1 <音频>.mp3

实际上如果不特别指定编码器,ffmpeg会依据文件后缀推理编码器类型。


总结

1、很实用,但ffmpeg的强大功能只是冰山一角。

相关推荐
REDcker3 天前
WebCodecs VideoDecoder 的 hardwareAcceleration 使用
前端·音视频·实时音视频·直播·webcodecs·videodecoder
gihigo19983 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
山河君3 天前
四麦克风声源定位实战:基于 GCC-PHAT + 最小二乘法实现 DOA
算法·音视频·语音识别·信号处理·最小二乘法·tdoa
音视频牛哥3 天前
Android平台RTMP/RTSP超低延迟直播播放器开发详解——基于SmartMediaKit深度实践
android·人工智能·计算机视觉·音视频·rtmp播放器·安卓rtmp播放器·rtmp直播播放器
qq_416276423 天前
通用音频表征的对比学习
学习·音视频
美狐美颜sdk3 天前
Android全局美颜sdk实现方案详解
人工智能·音视频·美颜sdk·视频美颜sdk·美狐美颜sdk
EasyDSS3 天前
私有化部署EasyDSS视频点播能力:全链路视频技术赋能,打造企业级视听新体验
音视频·hls·m3u8·点播技术·智能转码
qq_416276423 天前
DeLoRes——一种通用的音频表征学习新方法(DeLoRes(基于 Barlow Twins 的冗余最小化方法)
学习·音视频
Q_4582838683 天前
从定位到视频:808 + 1078 在各行业的落地实践
音视频
山顶望月川3 天前
实测MiniMax-Hailuo-02:当“开工大吉“变成“无字天书“,国产AI视频模型的能与之不能
人工智能·音视频