基本查询命令
命令参数 | 说明 |
---|---|
-version | 显示版本 |
-demuxers | 显示可用的demuxers |
-devices | 显示可用设备 |
-codecs | 显示所有编解码器 |
-decoders | 显示可用的解码器 |
-encoders | 显示可用的编码器 |
-bsfs | 显示可用的比特流filter |
-formats | 显示支持的格式 |
-protocols | 显示可用的协议 |
-filters | 显示可用的libavfilter过滤器 |
-pix_fmts | 显示可用的像素格式 |
-sample_fmts | 显示可用的采样格式 |
-layouts | 显示channel名称和标准channel布局 |
-colors | 显示识别的颜色名称 |
- 分页查看所有的编解码器
ffmpeg -codecs | more
- 查看h264相关的编解码器
ffmpeg -codecs | grep h264
- 查看支持的音频格式
ffmpeg -formats | grep mp3
录制命令
-
录制视频
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:指定使用avfoundation采集数据
-i:指定从哪采集数据,它是一个文件索引号,Mac上1指桌面录制
-r:指定帧率,电影一般是60帧以上
out.yuv:指定输出路径和文件格式 -
播放录制的视频
ffplay -s 3360x2100 -pix_fmt uyvy422 out.yuv
-s:指视频分辨率大小
-pix_fmt:视频格式 -
配置和使用ffplay
使用brew install ffmpeg
安装ffmpeg并没有安装ffplay,所以需要单独下载ffplay,下载地址为 http://evermeet.cx/ffmpeg/ ,下载ffplay压缩包,我这下载的是ffplay-4.1.3.7z
,解压后是一个ffplay文件,将此文件在.base_profile
中配置环境变量,路径配置到此文件的父目录,
如:export PATH=$PATH:/Users/renzhongrui/ffmpeg
,我的是放在ffmpeg目录下,
然后执行source .bash_profile
即可。 -
录制音频
ffmpeg -f avfoundation -i :0 out.wav
:0
代表音频设备 -
播放视频
ffplay out.wav
分解/复用命令
- 格式转换
ffmpeg -i test.mp4 -vcodec copy -acodec copy out.flv
-i
:输入文件
-vcodec
:视频编解码
copy
:不作处理
-acodec
:音频编解码 - 只抽取视频
ffmpeg -i test.mp4 -vcodec copy -an out.h264
播放视频:ffplay out.h264
- 只抽取音频
ffmpeg -i test.mp4 -vn -acodec copy out.aac
播放音频:ffplay out.aac
处理原始数据命令
- 提取视频原始数据
命令:ffmpeg -i test.mp4 -an -c:v rawvideo -pix_fmt yuv420p yuv.yuv
-i
:指定输入文件
-an
:不处理音频
-c:v
:对视频进行编码
rawvideo
:原始视频
-pix_fmt
:像素格式,yuv420p yuv444p yuv422
播放:ffplay -s 1920x1080 yuv.yuv
- 提取音频原始数据
命令:ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le pcm.pcm
-i
:指定输入文件
-vn
:不处理视频
-ar
:音频采样率,44100b
-ac
:声道,1:单声道;2:双声道;3:立体声道
-f
:格式,s16le:有符号的16字节表示一位的小头结束格式
播放:ffplay -ar 44100 -ac 2 -f s16le yuv.yuv
滤镜命令
- 滤镜处理流程:
Decoded Frames -----filter------> Filtered Frames -----encoder----->Encoded Data
- 滤镜裁剪视频大小
ffmpeg -i test.mp4 -vf crop=in_w-1000:in_h-900 -c:v h264 -c:a copy crop.mp4
-i
:指定输入文件
-vf
:表示使用滤镜命令,参数是crop=in_w-1000:in_h-900
,裁剪输入文件宽减去1000,高减去900
-c:v
:使用视频编码器是h264
-c:a
:音频解码器,copy表示直接复制
裁剪与合并命令
一.音视频裁剪
ffmpeg -i test.mp4 -ss 00:00:00 -t 10 crops.mp4
-i
:指定输入文件
-ss
:指定开始时间
-t
:指定要裁剪多长时间
播放:ffplay crops.mp4
二.音视频合并
1.先裁剪两段短视频
ffmpeg -i test.mp4 -ss 00:00:00 -t 10 1.ts
ffmpeg -i test.mp4 -ss 00:00:10 -t 10 2.ts
2.创建input.txt文件,并输入内容
file '1.ts'
file '2.ts'
3.执行合并命令
ffmpeg -f concat -i input.txt concat.mp4
4.播放视频
ffplay concat.mp4
图片/视频互转命令
- 视频转图片
ffmpeg -i concat.mp4 -r 1 -f image2 image-%3d.jpg
-i
:指定输入文件
-r
:视频转图片帧率,1指1秒转1张图片
-f
:使用格式,image2格式
打开图片:open image-001.jpg
- 图片转视频
ffmpeg -i image-%3d.jpg cover.mp4
直播相关命令
-
拉流
ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 -c copy pull.m3u8
-
推流
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://server/live/streamName
-re
:减慢帧率速度
-i
:指定输入文件
-c
:指定编解码
-f
:指定格式