说到ffmpeg可能有一部分不太清楚它是干嘛的?
其实我最早知道是因为我需要做一个视频mp4格式转成流形式的需求,然后就看到了这个工具。这个工具强大就强大在,不仅是视频的互相转码,还能够打水印,反转,去水印,打马赛克等等,几乎我们平时用的视频编辑软件的功能都能用它来实现,而且它不仅能制作视频还能进行编辑音频文件,具体的功能我们来一一道来。
首先介绍一下基本的参数
-c:指定编码器
-c copy:直接复制,不经过重新编码(这样比较快)
-c:v:指定视频编码器
-c:a:指定音频编码器
-i:指定输入文件
-an:去除音频流
-vn: 去除视频流
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
-y:不经过确认,输出时直接覆盖同名文件。
1,假设我们现在有一个视频,我们想看这个视频的信息那么可以使用两种命令
(1),ffrobe -v error -show_streams -print_format json 视频路径
其中-v是指返回的时候等级(可以不设置)
-print_format json 意思是以json的格式返回
如果不以json的格式返回可能我们会不太好处理这些数据如下
参数说明:
codec_type: 多媒体类型,例如视频包,音频包等;
stream_index: 多媒体的stream索引;
pts: 多媒体的显示时间值
pts_time: 根据不同格式计算过后的多媒体的显示时间
dts: 多媒体解码时间值
dts_time: 根据不同格式计算过后的多媒体解码时间
duration: 多媒体包占用的时间值
duration_time: 根据不同格式计算过后的多媒体包占用的时间值
size: 多媒体包的大小
pos: 多媒体包所在的文件偏移位置
flags: 多媒体包标记,关键包与非关键包的标记
这个功能其实用于视频下载的进度条
pts_time = duration_time + dts_time
(2),ffmpeg -i 视频的路径
以上就是查看视频信息的命令
2,视频去水印
官方文档参考
http://ffmpeg.org/ffmpeg-all.html#delogo
ffmpeg -i $from -vfdelogo=x=$x:y=$y:w=$w:h=$h:show=0 -c:a copy $to
x,y logo的位置
w,h logo的宽高
去水印其实是以原视频没模型然后去掉水印后生成新视频,x,y是坐标,注意这个是以左上角为原点的
当然这只是其中的一种用法还有插入logo等
3,获取视频的帧数
其实我们经常用的七牛和阿里云的视频拿帧数就是用这个方式获取的,命令如下
ffmpeg -i 46f1a14822.mp4 -y -f mjpeg -ss 3 -t 0.001 video.jpg