学习笔记|(三)FFMPEG常用命令

2018-11-16  本文已影响28人  yanerly
常用命令.png

参考资料:https://ffmpeg.org/ffmpeg-all.html#Synopsis

一、基本信息查询命令:

二、录制命令:

-f:使用什么库采集数据,ios中使用的是avfoundation
-i:从哪采集数据(是一个文件索引)
-r:帧率
out.yuv:表示原始格式数据,采集到的是什么样,存储的就是什么样

-f : 使用什么库采集数据,ios中使用的是avfoundation
-i : 采集谁的数据::xx 表示音频设备,xx : 表示视频设备

查看windows上的采集库:

下载ffempeg的源码http://ffmpeg.org/download.html,通过cygwin进入到源码的根目录下,执行命令./configure --list-indevs就可以看到所有支持的库了;

下载ffempeg的源码.png 查看win上的采集库.png

三、分解与复用命令

1.分解与复用:文件格式的转换(Mp4-->mov/flv等)
复用解复用流程.png
【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.处理流程
滤镜处理流程.png
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 : 输出文件

五.裁剪合并编辑命令

-i : 要处理的文件,指定多媒体文件是什么
-ss : 开始裁剪的时间(时分秒)
-t : 要裁剪的时长(单位:s)
out.ts : 输出文件

【MAC】播放:ffplay out.ts`

-f concat : 要对后面的文件进行拼接
-i : 要拼接的文件,inputs.txt中是一个列表,是要合并的视频名字
inputs.txt内容为:file filename格式
out.flv :输出文件的名字,这里的flv只是事例

【MAC】播放:ffplay out.flv

六、图片/视频互转命令

-i : 要处理的文件
-r : 要转换图片的帧率,1表示每秒转一张图片
-f : 转换后的格式,image的第二版

image-%3d.jpeg :输出文件,%3d表示是以image开头,后面是三个数字

【MAC】查看第一张图片:open image-001.jpeg

【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

-re : 表示减慢帧率速度
-i :要推的流
-c : 音视频编解码,具体的音频编码是-acodec,视频编码是-vcodec,copy表示音视频的参数不变
-f : 推出的文件格式,这里是flv
rtmp : 表示推送到这个地址上面去

-i : 表示从哪拉流
-c : 拉到的流是否重新编码,copy 表示不重新编码
dump.flv : 保存的文件

上一篇下一篇

猜你喜欢

热点阅读