之前在处理监控视频时要对视频进行抽帧压缩,使得视频大小限制在10M左右,所以使用ffmpeg进行视频加工处理,因为这个工具确实很强大。下面是用到的相关命令,可以直接跳到最后一条命令,那个才是最终版。
实例:抽帧
代码:ffmpeg -i "D:\Video\pain3.avi" -r 30 -f image2 "D:\Video\pain3\shock"%05d.jpg
ffmpeg -i C:\Users\VKL\Desktop\res\B0_1.264 -r 2 -s 1280x720 -f image2 C:\Users\VKL\Desktop\res\b0\image-%05d.jpeg
2.ffmpeg截取视频中的一段视频命令为:
ffmpeg -i test.avi -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:50 test_cut.mp4 -y
1
上述命令会得到一个长为40秒的视频 test_cut.mp4
实例:剪部分视频
ffmpeg -i "D:\Video\videos\2shock2.avi" -vcodec copy -acodec copy -ss 00:00:50 -to 00:01:10 "D:\Video\pain2.avi" -y
ffmpeg -i "D:\Video\sss.avi" -vcodec copy -acodec copy -ss 00:00:09 -to 00:00:59 "D:\Video\normal.avi" -y
其中:
-i 表示源视频文件
-y 表示输出文件,如果已存在则覆盖
-ss 表示从哪个时间点开始截取
-to 表示从哪个时间点结束截取
-vcodec copy 使用跟原视频相同的视频编解码器
-acodec copy 使用跟原视频相同的音频编解码器
图片合成视频
ffmpeg -framerate 2 -i input\%05d.jpg -codec copy output.mkv
-----------说明-----------------
1. ffmpeg -i inputfile.avi -r 1 -s 320x240 -f image2 image-%05d.jpeg
-r 指定抽取的帧率,即从视频中每秒钟抽取图片的数量。1代表每秒抽取一帧。
-f 指定保存图片使用的格式,可忽略。
image-%05d.jpeg,指定文件的输出名字。
2. ffmpeg -i inputfile.avi -r 1 -s 4cif -f image2 image-%05d.jpeg
4cif 代表帧的尺寸为705x576.其他可用尺寸如下。
3. ffmpeg -i inputfile.avi -r 1 -t 4 -f image2 image-%05d.jpeg
-t 代表持续时间,单位为秒。
4. ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -f image2 image-%05d.jpeg
-ss 指定起始时间
5.ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -vframes120 4cif -f image2 image-%05d.jpeg
-vframes 指定抽取的帧数
--------------------------------
压缩
ffmpeg -i C:\Users\VKL\Desktop\res\b0\output.mp4 -vcodec libx264 -preset slow -crf 36 -y C:\Users\VKL\Desktop\res\b0\out.mp4
抓图
C:\Users\VKL>ffmpeg -r 1 -ss 00:00:01 -t 1 -i E:\ffmtest\1002_03.264 -f image2 -y E:\capture%3d.jpg
dxva2硬件加速
ffmpeg -hwaccel dxva2 -i E:\sptest\test.mp4 -vcodec libx264 -preset slow -crf 36 -y E:\sptest\out.mp4
硬件NVIDIA加速(-cq 压缩质量 0-51,值越大size越小,质量越差 推荐35-38,默认是0;-r 指定输出视频帧率)
ffmpeg.exe -i input.avi -r 2 -c:v hevc_nvenc -preset:v fast -cq 0 output.mp4
ffmpeg.exe -i input.avi -r 2 -c:v h264_nvenc -preset:v fast -cq 0 output.mp4
非硬件加速(直接按帧输出并压缩)
ffmpeg -i E:\sptest\1.mp4 -r 2 -vcodec libx264 -preset:v fast -crf 36 E:\sptest\qwout.mp4
这个是最终版的抽帧压缩命令,比之前的快了10倍左右。至于是否有更好的方式,可以看看官网文档http://ffmpeg.org/ffmpeg.html