FFmpeg初体验

1,190 阅读2分钟

这是我参与新手入门的第3篇文章,曾经做过一段时间音视频相关的开发,刚好趁这次掘金活动,整理记录一下。

一、下载安装FFmpeg

1、官网路径与下载

官网 ffmpeg.org/
github.com/FFmpeg/FFmp…

下载 git clone git.ffmpeg.org/ffmpeg.git ffmpeg
git clone github.com/FFmpeg/FFmp…

下载SDL www.libsdl.org/release/

2、配置指令

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-videotoolbox --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=clang --host-cflags= --host-ldflags=

3、安装指令

sudo make && sudo make install

4、修改~/.bash_profile

unset PKG_CONFIG_PATH
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/ffmpeg/lib/pkgconfig
export PATH=$PATH:/usr/local/ffmpeg/bin

二、FFmpeg常用命令

下面梳理了一些常用的FFmpeg命令

1、FFmpeg录屏命令

ffmpeg -f avfoundation -i 1 -r 30 out.yuv

-f:指定使用avfoundation采集数据
-i:指定从哪采集数据,它是一个文件索引号
-r:指定帧率

2、利用ffplay播放视频

ffplay -s 2880x1800 -pix_fmt uyvy422 out.yuv

3、查询avfoundation设备列表

ffmpeg -f avfoundation -list_devices true -i ""

4、FFmpeg录音命令

ffmpeg -f avfoundation -i :0 out.wav

:0代表音频设备

5、利用ffplay播放声音

ffplay out.wav

6、多媒体格式转换

//格式转换
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv

-i:输入文件
-vcodec copy:视频编码处理方式
-acodec copy:音频编码处理方式

//从文件中抽取视频数据
ffmpeg -i out.mp4 -an -vcodec copy out.h264

//从文件中抽取音频数据
ffmpeg -i out.mp4 -acodec copy -vn out.aac

7、ffmpeg提取YUV数据

ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

-pix_fmt:像素格式

8、ffmpeg提取PCM数据

ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
-ar:音频采样率
-ac:音频声道数
-f:数据存储格式
s16le:有符号,16位,小端

9、ffplay播放音频

ffplay -ar 44100 -ac 2 -f s16le out.pcm

10、视频裁剪命令

ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4

-vf:视频滤镜
in_w:输入视频宽度
in_h:输入视频高度
-c:v:视频编码器
-c:a:音频编码器
copy:不做处理,直接拷贝

crop格式:crop=out_w:out_h:x:y

11、ffmpeg音视频裁剪

ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts

-ss:开始裁剪时间点
-t:时长,单位s

12、ffmpeg音视频合并

ffmpeg -f concat -i inputs.txt out.flv

-f:concat 拼接
inputs.txt:文件列表,内容为‘file filename’格式

13、ffmpeg视频转图片

ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg

-r:转换图片的帧率
-f:转成什么格式

14、ffmpeg图片转视频

ffmpeg -i image-%3d.jpeg out.mp4

15、直播推流

ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

-re:减慢帧率速度,保证帧率同步
-c:音视频编解码
-f:文件格式

16、直播拉流

ffmpeg -i rtmp://server/live/streamName -c copy dump.flv