通常情况下,我们提到“视频”会有两个要素,声音和画面。但其实严格意义上说视频中含有视频流和音频流,如果一个视频只有视频流,那么就只有画面没有声音,反之亦然。
我有听英语电影原声的习惯,但是总是放视频很不方便,网上的资源又不是太称心如意,就想着自己动手来分离,我首先想到的是 ffmpeg。
我们先来看看视频中的这两个流
1 | $ ffmpeg -i mavel4.mp4 |
执行该命令可以直接查看视频的信息,其中就有刚才的提到的视频流(Video: h264)和音频流(Audio: aac)
使用参数 -vcodec copy -an
和 -acodec copy -vn
可以分离出视频流和音频流。
分离视频
1 | $ ffmpeg -i mavel4.mp4 -vcodec copy -an mav.mp4 |
等待转码成功后,观看 mav.mp4
发现已经没有声音了,查看发现只有一个流
分离音频
1 | $ ffmpeg -i mavel4.mp4 -acodec copy -vn m.m4a |
再次查看音频流信息
网上很多博客都是直接甩一个类似这样的命令
1 | $ ffmpeg -i mavel4.mp4 -acodec copy -vn m.mp3 |
如果你执行的话,多半会报错,因为查看视频信息,很可能像例子中的音频流一样是 aac 格式的,什么是 aac 格式呢
关键是下面这句
也就是说,现在很多视频的音频流都将是这个格式,那直接分离 mp3
格式的音频自然会报错。
那我就是想要 mp3
的音频该怎么办呢?
再来一次转码
1 | $ ffmpeg -i m.m4a m.mp3 |
或者直接将视频转码为 mp3
格式。
1 | $ ffmpeg -i mavel4.mp4 m.mp3 |