1、FFmpeg命令分类
① 基本信息查询命令 (想用ffmpeg,如何使用,有哪些模块)
② 录制命令(录制音频,视频)
③ 分解/复用命令(将mp3转化为mp4)
④ 处理原数据命令(将摄像头采集的数据直接进行处理,压缩)
⑤裁剪与合并命令(将音频和视频合并到一起,可以掐头去尾,可以合并视频)
⑥图片/视频互转命令(图片与视频的转换)
⑦直播相关命令
⑧各种滤镜命令(在视频中加入logo,在视频中删除logo,将视频翻转)
2、FFmpeg处理音视频流程
3、FFmpeg命令分类详解
3.1、 基本信息查询命令
3.2、 录制命令
3.2.1、ffmpeg录制
苹果mac os 录制视频:
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:指定使用avfoundation采集数据
-i:指定从哪儿采集数据,它是一个文件索引号
-r:指定帧率
苹果mac os 录制音频:
ffmpeg -f avfoundation -i :0 -r 30 out.yuv
:0 代表音频设备
linux ubuntu 录制声音:
https://blog.csdn.net/rong11417/article/details/102880549
3.3、 分解/复用命令 (多媒体格式转换)
3.3.1 抽取音视频转化为flv格式
ffmpeg -i input.mp4 -vcodec copy -acodec copy out.flv
-i:输入文件
-vcodec copy:视频编码处理方式
-acodec copy:音频编码处理方式
3.3.2 抽取视频转化为h264格式
ffmpeg -i input.mp4 -an -vcodec copy out.h264
3.3.3 抽取音频转化为aac格式
ffmpeg -i input.mp4 -vn -acodec copy out.aac
3.4、 处理原数据命令
原始数据就是yuv和pcm格式数据
3.4.1、FFmpeg提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
-i:输入文件
-an: audio no 不包括音频
-c:v rawvideo -c:v 对视频编码 格式采用rawvideo
-pix_fmt yuv420p 像素格式yuv420p yuv格式简介 4:4:4 4:4:2 4:2:0 三种格式,4:2:0就是yuv420p最常用的格式
3.4.2、FFmpeg提取PCM数据
ffmpeg -i FFmpeg.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
-i:输入文件
-vn: vidio no 不包括视频
-ar: audio read 音频的采样率(44.1k,48k,32k,16k)
-ac: audio channel (单声道1 双声道2 立体声3 环绕立体声声道更多)
-f :抽取的音频PCM的数据存储格式 s16le( signed 16位 little 有符号的16位的小头存储方式)
3.5、 裁剪与合并命令
去片头,去片尾,取中间段视频,将几个小视频合成为一个视频,我们可以使用ffmpeg
3.5.1 音视频裁剪
ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
-i:输入文件
-ss: 要裁剪的起始时间 时:分:秒
-t : 总共要裁剪多长时间
3.5.2 音视频合并
ffmpeg -f concat -i inputs.txt out.flv
-f: 高速ffmpeg要做什么操作,concat就是拼接的意思
-i:输入文件 input.txt input.txt内容为'file filename' 格式,就是每一行都代表一个音视频文件。
实例操作如下:
ffmpeg -i FFmpeg.mp4 -ss 00:00:00 -t 10 out.ts
ffmpeg -i FFmpeg.mp4 -ss 00:02:00 -t 10 out2.ts
再将out2.ts和 out.ts合并,先创建一个input.txt文件,内容如下
合并命令如下 ffmpeg -f concat -i input.txt out.flv
3.6、 图片/视频互转命令
3.6.1 视频转图片
ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-i:输入文件
-r:转化图片的帧率 1表示每秒钟转化一张图片
-f:告诉ffmpeg做什么操作,将视频转化为image2格式,输出结果为image-%3d.jpeg %3d动态的,表示image开头-3个数字生成的。
3.6.2 图片转视频
ffmpeg -i image-%3d.jpeg out.mp4
-i:输入文件 image-%3d.jpeg %3d动态的,表示image开头-3个数字的jpeg图片生成 out.mp4
3.7、 直播相关命令
3.7.1 直播推流
-re:减慢帧率速度,让帧率保持同步
-i: 输入文件
-c: 音视频编解码 如果指定音频ac 指定视频vc copy 格式不变
-f: 推出的文件格式是什么样子的 flv 后面是rtmp的服务器地址
3.7.2 直播拉流
-i: rtmp的服务器地址
-c:音视频编码 copy 不做重新编码
3.7.3 RTMP、RTSP、HTTP视频协议直播流地址
RTMP协议直播源
香港卫视:rtmp://live.hkstv.hk.lxdns.com/live/hks
芜湖综合频道 : http://live.wuhubtv.com/channels/1531/500.flv/live
蚌埠生活频道 : rtmp://vod.ahbbtv.com:1935/live/shpd1
淮北新闻频道 : rtmp://vod.0561rtv.com:1935/live/live1
淮北影视频道 : rtmp://vod.0561rtv.com:1935/live/live4
重庆卫视 :rtmp://live5.cqnews.net:1935/live/TVFLV15
RTSP协议直播源
珠海过澳门大厅摄像头监控:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
大熊兔(点播):rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
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
3.7.4 直播实战
ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 -c copy dump.m3u8 会从cctv1上拉下来直播流
3.8、 各种滤镜命令
视频加水印,去水印,画中画,视频的裁剪,音频倍速等等,都是通过滤镜实现的,了解滤镜的原理必须先回顾下图
3.8.1 视频裁剪
ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-i:输入文件
-vf: 采用视频滤镜 crop , crop滤镜的参数in_w-200将视频本身的宽度减去200,in_h-200将本身视频的高度减去200
-c:v 使用的视频编码器是libx264
-c:a 音频编码器是copy 不对音频做特殊处理
crop格式:crop=out_w:out_h:x:y
巨人的肩膀
编程必备基础-音视频小白系统入门课 https://coding.imooc.com/class/415.html
经典再升级-FFmpeg音视频核心技术全面精讲+实战 https://coding.imooc.com/class/279.html