FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用
LGPL
或GPL
许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。
TL;DR
# Extract the sound from a video and save it as MP3:
$ ffmpeg -i video.mp4 -vn sound.mp3
# Save a video as GIF, scaling the height to 1000px and setting framerate to 15:
$ ffmpeg -i video.mp4 -vf 'scale=-1:1000' -r 15 output.gif
# Combine numbered images (`frame_1.jpg`, `frame_2.jpg`, etc) into a video or GIF:
$ ffmpeg -i frame_%d.jpg -f image2 video.mpg|video.gif
# Quickly extract a single frame from a video at time mm:ss and save it as a 128x128 resolution image:
$ ffmpeg -ss mm:ss -i video.mp4 -frames 1 -s 128x128 -f image2 image.png
# Trim a video from a given start time mm:ss to an end time mm2:ss2 (omit the -to flag to trim till the end):
$ ffmpeg -ss mm:ss -to mm2:ss2 -i video.mp4 -codec copy output.mp4
# Convert AVI video to MP4. AAC Audio @ 128kbit, h264 Video @ CRF 23:
$ ffmpeg -i input_video.avi -codec:a aac -b:a 128k -codec:v libx264 -crf 23 output_video.mp4
# Remux MKV video to MP4 without re-encoding audio or video streams:
$ ffmpeg -i input_video.mkv -codec copy output_video.mp4
# Convert MP4 video to VP9 codec. For the best quality, use a CRF value (recommended range 15-35) and -b:v MUST be 0:
$ ffmpeg -i input_video.mp4 -codec:v libvpx-vp9 -crf 30 -b:v 0 -codec:a libopus -vbr on -threads number_of_threads output_video.webm
Usage
安装和卸载FFmpeg
macOS安装FFmpeg
# 查看ffmpeg的安装选项,可以按照你自己的要求选装
$ brew info ffmpeg
# 安装FFmpeg
$ brew install ffmpeg --with-fdk-aac --without-faac
Linux卸载FFmpeg
$ sudo apt -y remove libglu1-mesa-dev ffmpeg
$ sudo apt -y purge libglu1-mesa-dev ffmpeg
$ sudo apt -y autoremove
基本信息
#列出支持的编解码器
$ ffmpeg -codecs
#列出支持的滤镜
$ ffmpeg -filters
#列出支持的格式
$ ffmpeg -formats
音频格式转换
# wav to mp3
$ ffmpeg -i audio.wav -acodec libmp3lame audio.mp3
# ogg to mp3
$ ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3
# ac3 to mp3
$ ffmpeg -i audio.ac3 -acodec libmp3lame audio.mp3
# aac to mp3
$ ffmpeg -i audio.aac -acodec libmp3lame audio.mp3
视频格式转换
在Windows
下,我们有很多视频格式转换的工具,尽管良莠不齐,但是只要有耐心,总是可以达到转换的要求,在macOS
下,App Store
上也可以找到一些转码工具,但是一般都价格不菲。事实上,绝大部分视频转码工具底层都用到了FFmpeg
,而FFmpeg
是完全开源和免费的,既然如此,我们为何不直接使用ffmpeg
来进行视音频的转码处理呢。
# 把光驱DVD格式文件转成MP4格式
$ cat VIDEO_TS.VOB VTS_01_0.VOB VTS_01_1.VOB VTS_01_2.VOB | ffmpeg -i - ~/mika_01.mp4
# 抽取flv视频中的音频
$ ffmpeg -i INPUT.flv -acodec libmp3lame -ab 128k OUTPUT.mp3
# 把AVI格式转换成MP4格式
$ ffmpeg -i INPUT.avi -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -ab 192 -s 320x240 -aspect 4:3 OUTPUT.mp4