查询设备信息列表
ffmpeg -f avfoundation -list_devices true -i ""
录制视频命令:
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f: 指定使用avfoundation采集数据
-i: 指定从哪儿采集数据,它是一个文件索引号
-r:指定帧率
播放录制的视频:
ffplay -video_size 2880x1800 -pix_fmt yuvu422 out.yuv
-video_size: 指定分辨率
-pix_fmt :录制时的格式
录制声音命令:
ffmpeg -f avfoundation -i :0 out.wav
播放音频命令:
ffplay out.wav
录屏 + 录声音:
ffmpeg -f avfoundation -i 1:0 -r 29.97 -c:v libx264 -crf 0 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k out.flv
多媒体格式转换:
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i:输入文件
-vcodec copy: 视频编码处理方式
-acodec copy:音频编码处理方式
上面的命令表示的是音频、视频都直接copy,只是将mp4个封装格式转成了flv。
抽取音频流
ffmpeg -i input.mp4 -acodec copy -vn out.aac
acodec:指定音频编码器
copy:指明只拷贝,不做编解码
vn:v 代表视频,n代表no也就是无视频的意思
抽取视频流
ffmpeg -i input.mp4 -vcodec copy -an out.h264
vcodec:指定视频编码器
copy:指明只拷贝,不做编解码
an:a 代表音频,n代表no也就是无音频的意思
提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv
ffplay -s wxh out.yuv wxh指视频分辨率大小
-c:v rawvideo 指定将视频转成原始数据
-pixel_format yuv420p 指定转换格式为yuv420p
提取PCM数据
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
ffplay -ar 44100 -ac 2 -f s16le out.pcm
-ar 44100 指音频采样率是44.1k,其他常用采样率有48k,32k,16k
-ac2 c指channel,2指双声道
-f s16le -f:指定音频存储格式,s指有符号的,16指每一位数值用16位表示,l:letter
ffmpeg滤镜命令
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:指输入视频的宽度减去200,输入视频的高度减去200
-c:v: libx264 使用的视频编码器是libx264
-c:a copy 不对音频编码器做特殊处理
音视频裁剪
ffmpeg -i input.mp4 -ss 00:00:00 -t 10s out.ts
音视频合并
ffmpeg -f concat -i inputs.txt out.flv
-f concat 拼接
input.txt 文件里记录了所有要合并的文件的名字,内容为‘file filename’格式
视频转图片
ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-r 1:表示转换图片的帧率 1:每秒钟转出一张图片
-f image2表示把输入文件转成image2格式的
image-%3d.jpeg:表示输出的文件名称 %3d:三个数字组成的动态值
图片转视频
ffmpeg -i image-%3d.jpeg out.mp4
直播推流
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
-re 减慢帧率速度
-c 音视频编解码
-f flv 表示推出去的文件格式是flv
直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv