1、安装ffmpeg
1.1、centos安装
git clone https://git.ffmpeg.org/ffmpeg.git
cd ffmpeg
su
yum install gcc gcc-c++ make nasm pkgconfig
yum install zlib-devel freetype-devel libjpeg-turbo-devel libpng-devel
./configure --enable-shared
make
make install
但是这样向bash输入ffmpeg
时并不会出现预想的结果。会报错
ffmpeg: error while loading shared libraries: libavdevice.so.60: cannot open shared object file: No such file or directory
解决方法如下:
ldd ffmpeg #查看缺失的
find /usr -name 'libavdevice.so.60' #寻找路径
export LD_LIBRARY_PATH=/usr/local/lib/
不过 export 只是暂时的,可以这样让其永久保留:
vim ~/.bashrc
往里面添加上 export LD_LIBRARY_PATH=/usr/local/lib/
source ~/.bashrc
安装ffplay,一直试,,具体要怎么做我也不清楚了。。
sudo apt-get install libasound2-dev libpulse-dev
sudo apt-get install libsdl2-2.0
sudo apt-get install ffmpeg
1.2、windows安装
https://www.bilibili.com/video/BV1sk4y127xR
2、ffmpeg处理流程
3、命令分类
3.1、基本信息查询命令
终端输入即可,如:
ffmpeg -version
3.2、录制命令
我的系统是windows,演示下win里面的录制。
视频录制
ffmpeg -f gdigrab -framerate 30 -i desktop out.yuv
-f gdigrab:指定输入格式
-framerate 30:帧率30
-i desktop:指定输入源
在shell里面会输出这些:
Stream #0:0: Video: bmp, bgra, 4480x1600, 6881292 kb/s, 30 fps, 1000k tbr, 1000k tbn
使用 ffplay 将文件显示出来:
ffplay -video_size 4480x1600 -pixel_format bgra -framerate 30 -i out.yuv
音频录制
先看有哪些音频设备
ffmpeg -list_devices true -f dshow -i dummy
然后指定设备录制
ffmpeg -f dshow -i audio="External Mic (Realtek(R) Audio)" output.wav
wav是可以直接点击听的,也可以通过ffplay:
ffplay output.wav
3.3、分解与复用
将多媒体转换下格式
ffmpeg -i 01.mp4 -vcodec copy -acodec copy 01.mov
文件信息的一部分如下
Stream #0:0[0x1](und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv), 640x360 [SAR 1:1 DAR 16:9], 274 kb/s, 25 fps, 25 tbr, 90k tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 96 kb/s (default)
Metadata:
handler_name : Libquicktime Sound Media Handler
vendor_id : [0][0][0][0]
抽取视频:
ffmpeg -i 2.mp4 -an -vcodec copy out.hevc
抽取音频:
ffmpeg -i 2.mp4 -acodec copy -vn out.aac
3.4、处理原始数据命令
提取YUV数据
ffmpeg -i 2.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
ffplay -video_size 640*360 out.yuv
提取PCM数据
ffmpeg -i 2.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
ffplay -ar 44100 -ac 2 -f s16le out.pcm
3.5、滤镜命令
裁剪视频(宽-=400 高-=200)、音频不变:
ffmpeg -i 2.mp4 -vf crop=in_w-400:in_h-200 -c:v libx264 -c:a copy out.mp4
3.6、音视频的裁剪与合并
从0开始裁剪10秒
ffmpeg -i 2.mp4 -ss 00:00:00 -t 10 out.ts
将两个视频合并
# 在 inputs.txt 写入以下内容
file out1.ts
file out2.ts
# 终端
ffmpeg -f concat -i inputs.txt out.flv
3.7、图片与视频互转
视频每秒10帧转成图片
ffmpeg -i out3.mp4 -r 10 -f image2 ./images/image-%3d.jpeg
将图片拼接成视频
ffmpeg -r 10 -i ./images/image-%3d.jpeg out6.mp4
3.8、直播相关
直播推流
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
拉流示例
ffmpeg -i http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8 -c copy out.m3u8
# 然后本地就会生成很多ts
ffplay out.m3u8