一、基本信息查询命令:
-
ffmpeg -version
显示版本信息
-
ffmpeg devices
支持的设备
-
ffmpeg -demuxers
显示可用的demuxers(解封装)
-
ffmpeg -muxers
显示可用的muxers(封装)
-
ffmpeg -codecs
显示所有的编解码器
-
ffmpeg -decoders
显示可用的解码器
-
ffmpeg -encoders
显示可用的编码器
-
ffmpeg -bsfs
显示比特流filter
-
ffmpeg -formats
显示可用的格式
![
-
ffmpeg protocols
显示可用的协议
-
ffmpeg -filters
显示可用的过滤器
-
ffmpeg -pix_fmts
显示可用的像素格式
-
ffmpeg -sample_fmts
显示可用的采样格式
-
ffmpeg -layout
显示可用的chanel名称(声道)
-
ffmpeg -color
显示可识别的颜色名称
二、录制命令:
- 录制桌面视频
【MAC】ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:使用什么库采集数据,ios中使用的是
avfoundation
-i:从哪采集数据(是一个文件索引)
-r:帧率
out.yuv:表示原始格式数据,采集到的是什么样,存储的就是什么样
- 录制声音
【MAC】ffmpeg -f avfoundation -i :0 out.wav
-f : 使用什么库采集数据,ios中使用的是
avfoundation
-i : 采集谁的数据::xx 表示音频设备,xx : 表示视频设备
查看windows上的采集库:
下载ffempeg的源码http://ffmpeg.org/download.html,通过cygwin进入到源码的根目录下,执行命令
./configure --list-indevs
就可以看到所有支持的库了;
三、分解与复用命令
1.分解与复用:文件格式的转换(Mp4-->mov/flv等)
【MAC】
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i : 输入文件(要对哪个文件做处理)
-vcodec copy : 视频编码处理方式
-acodec copy :音频编码处理方式
out.flv : 输出格式
2.处理原始数据:
原始数据:就是ffmpeg解码后的数据,音频就是pcm数据,对于视频就是yuv数据,
2.1. 从视频中提取yuv数据
【MAC】ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
-i:输入数据,要对哪个文件做处理
-an:a指音频,n指no,即输出结果中不包括音频
-c:v:指对视频进行编码,用rawvideo方式(原始视频)
-pix_fmt : 既然是用原始数据编码,所以就要有像素格式,即yuv420p(yuv 4:2:0)
out.yuv : 输出文件
在播放yuv格式的视频的时候,要设置一个分辨率,否则会报错,Picture size 0x0 is invalid out.yuv,这里的分辨率可以在解码的过程中获取到
【MAC】播放视频 : ffplay -s 638x358 out.yuv
2.2.从音频中提取pcm数据
【MAC】ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
-i :输入数据,也就是要对哪个文件做处理
-vn : video no,即输出结果中不包括视频
-ar : audio read,即音频的采样率,这里的44100表示44.1k
-ac : audio chennel,即声道,这里的ac2表示双声道
-f : format,即抽取出来的音频的存储格式是什么,s16le
中s表示有符号的,有正有负,16表示每一个数值都是用16位表示,le : little end即小头,是一种存储方式;
out.pcm :输出的文件名字
【MAC】播放音频: ffplay -ar 44100 -ac 2 -f s16le out.pcm
四、滤镜命令
1.处理流程
2.命令(有很多,比如加水印,去水印等)
- 视频裁剪
【MAC】ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-i : 要处理的文件
-vf : vedio filter视频滤镜,这里用的是crop滤镜,后面的in_w-200:in_h-200
为滤镜参数,表示宽高为原始宽高-200
-c:v :视频的编码器,这里为libx264
-c:a : 音频编码器,copy表示不对音频做特殊处理
out.mp4 : 输出文件
五.裁剪合并编辑命令
- 裁剪视频:
【MAC】ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
-i : 要处理的文件,指定多媒体文件是什么
-ss : 开始裁剪的时间(时分秒)
-t : 要裁剪的时长(单位:s)
out.ts : 输出文件
【MAC】播放:
ffplay out.ts`
- 音视频合并
【MAC】ffmpeg -f concat -i inputs.txt out.flv
-f concat : 要对后面的文件进行拼接
-i : 要拼接的文件,inputs.txt中是一个列表,是要合并的视频名字
inputs.txt内容为:file filename
格式
out.flv :输出文件的名字,这里的flv只是事例
【MAC】播放:ffplay out.flv
六、图片/视频互转命令
- 视频转图片:
【MAC】ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-i : 要处理的文件
-r : 要转换图片的帧率,1表示每秒转一张图片
-f : 转换后的格式,image的第二版
image-%3d.jpeg :输出文件,%3d表示是以image开头,后面是三个数字
【MAC】查看第一张图片:open image-001.jpeg
- 图片转视频:
【MAC】ffmpeg -i image-%3d.jpeg out.mp4
【MAC】播放:ffplay out.mp4
,这时候会一下子放完,是因为
Ffmpeg 会从多媒体文件中读取帧率,一般情况下多媒体文件都是有帧率的。但对于流是不知道其帧率的,所以对于流相关的要主动给他一个帧率
七、直播
参考的直播链接:https://blog.csdn.net/u014162133/article/details/81188410
1,RTMP协议直播源
香港卫视:rtmp://live.hkstv.hk.lxdns.com/live/hks
2,RTSP协议直播源
珠海过澳门大厅摄像头监控:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
大熊兔(点播):rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
3,HTTP协议直播源 香港卫视:http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
CCTV5高清:http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
CCTV6高清:http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
苹果提供的测试源(点播):http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8
- 直播推流
【MAC】ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
-re : 表示减慢帧率速度
-i :要推的流
-c : 音视频编解码,具体的音频编码是-acodec,视频编码是-vcodec,copy表示音视频的参数不变
-f : 推出的文件格式,这里是flv
rtmp : 表示推送到这个地址上面去
- 直播拉流
【MAC】ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
-i : 表示从哪拉流
-c : 拉到的流是否重新编码,copy 表示不重新编码
dump.flv : 保存的文件