FFmpeg处理流程
上面这张图非常重要请牢牢记住
FFmpeg命令分类
一:基本信息查询命令
二:录制命令
录制视频
//设备索引号可能需要变动
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:指定使用 avfoundation采集数据
-i:指定从哪里采集数据,它是一个文件索引号
-r:指定帧率(30表示每秒30帧)
查询设备索引号
ffmpeg -f avfoundation -list_devices true -i “”
播放
ffplay -s 2560x1440 -pix_fmt uyvy422 out.yuv
录制音频
ffmpeg -f avfoundation -i :0 out.wav
:0 代表音频设备(冒号之前表示视频设备索引号,之后表示音频设备索引号)
三:分解与复用命令
1、多媒体文件格式的转换,比如 mov文件转成mp4文件 mp4文件转成flv文件 等等。
2、将一个多媒体文件中的视频、音频单独抽取出来(未解码的H264、AAC等)。
多媒体文件格式转换
//mp4转flv
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i:输入文件
-vcodec copy:视频编码处理方式
-acodec copy:音频编码处理方式
抽取视频
ffmpeg -i input.mov -an -vcodec copy out.h264
这里的h264编码格式要和原视频一致
抽取音频
ffmpeg -i input.mov -acodec copy -vn out.aac
这里的aac编码格式要和原音频一致
四:处理原始数据命令
音频原始数据 pcm
视频原始数据 yuv
提出YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
提取PCM数据
ffmpeg -i input.mp4 -vn -ar 44100 -aac 2 -f s16le out.pcm
五:滤镜命令
滤镜都是对解码后的数据帧进行的处理
剪切
ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-vf 表示对视频滤镜
crop=in_w-200:in_h-200 crop具体的滤镜名字 in_w in_h视频的原宽高(也可以写 crop=out_w:out_h:x:y)
-c:v 表示视频编码器
-c:a 表示音频编码器
六:裁剪与合并命令
ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
-ss 表示开始裁剪时间
-t 表示时长
ffmpeg -f concat -i inputs.txt out.flv
-f concat 表示合并
-i inputs.txt 表示需要合并的视频文件列表,内容为‘file filename’ 格式。
七:图片与视频互转命令
视频转图片
ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-r 表示转换图片的帧率(1代表每秒转出1张图片)
-f 表示转换的格式
图片转视频
ffmpeg -i image-%3d.jpeg out.mp4
八:直播相关命令
推流
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
-re 降低帧率,与真实的帧率保持同步
-i 需要推出的文件
-c 音视频编解码
-f 推出的文件格式
拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv