用ffmpeg的-segment_times等参数进行关键帧无损视频分割切片
可以去掉-ss,-t,-to参数!命令方便操作使用ffmpeng快速切片
用ffmpeg扔掉效果并不理想的“-ss”、“-t”、“-to”参数(有损切片重新编码才会用到的)吧!
本来是在找无损视频剪切软件,小伙伴们有推荐了MediaMux(https://github.com/rxaa/MediaMux),试用后发现是效果最好的(在分割又重新合并后完美还原了)。
看了下代码,发现MediaMux用的相关ffmpeg命令参数并不是“-ss”、“-t”、“-to”参数,而是“-segment_times”等参数。
给大家演示一下用于ffmpeg 无损切割命令
然后我就把代码提取出来,发现ffmpeg v3.0也能运行,意味着WinXP系统也能无损视频分割了。
ffmpeg下载及使用
ffmpeg最新版下载页:
http://ffmpeg.org/download.html
https://www.videohelp.com/software/ffmpeg
ffmpeg v4.3.1 32bit(32位的Win7、Win10可以使用,当然也支持64位系统):
https://www.videohelp.com/download/ffmpeg-4.3.1-win32-static.zip
ffmpeg v3.0(支持WinXP系统)下载:
https://www.videohelp.com/download/ffmpeg-3.0-win32-static.7z
FFmpeg视频剪辑常用命令
常见命令:视频局部裁剪
-i input.mp4 -b:v 2048k -vf crop=828:462:0:665 -ss 22.30 -t 8.80 output.mp4
视频倒放:
-i input.mp4 -b:v 2048k -vf reverse output.mp4
视频翻转:
-i input.mp4 -b:v 2048k -vf hflip output.mp4
视频插入图片:
-i input.mp4 -b:v 2048k -strict -2 -vf "movie=myimage.png,scale=550:231,lut=a=val*1.0[mask0];[in][mask0] overlay=140:106:enable='between (t,0.0,8.8)'[out]" output.mp4
命令对比参考:
-i input.mp4 -b:v 2048k -strict -2 -vf “movie=图片名.png,scale=图片宽度:图片高度,lut=a=val*透明度[mask0];[in][mask0] overlay=图片X坐标:图片Y坐标:enable=‘between (t,图片显示的开始时间,图片显示的持续时长)’[out]” output.mp4
视频倍速:
-i input.mp4 -b:v 2048k -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output.mp4
主要参数说明:设 rate 表示倍速, rate = 2.0; 则 setpts = 1.0/rate; atempo = rate/1.0;
视频制作调色板(用于提高GIF清晰度):
-i input.mp4 -b 2048k -r 10 -vf fps=15,scale=414:-1:flags=lanczos,palettegen -y 调色板.png
操作视频转GIF:
-i input.mp4 -i 调色板.png -r 10 -lavfi "fps=15,scale=414:-1:flags=lanczos[x];[x][1:v]paletteuse" -y output.gif
多张图片+音频转视频:
-threads 2 -y -r 60 -i input.mp3 -f image2 -framerate 5 -i imageGroupPath/image_%%d.png -t 8 -b:v 2048k output.mp4
主要参数说明:
-framerate 5 设置帧率为5;
imageGroupPath/image_%%d.png 自动读取imageGroupPath文件夹中,以image_1.png、image_2.png、image_3.png以此类推的所有图片;
视频+音频合成新视频:
-i input.mp3 -i input.mp4 -t 15 -b:v 2048k -y output.mp4
FFmpeg命令详解
- -b:v 2048k:视频比特率2048 kbit/s,这是影响清晰度的参数之一
- crop=828:462:0:665:局部裁剪,格式为crop=width:height:X:Y
- -ss 5 -t 8.8:需要编辑的开始时间为第5秒,时长8.8秒
- hflip:hflip表示水平翻转,vflip表示垂直翻转,reverse表示倒放
- scale=414:-1:缩放,格式为scale=宽:高,-1默认为自动
- -r 24:将输出文件的帧速率强制为 24 fps
关键帧无损视频分割剪切---可以手动选择每个分割的时间点
操作命令如下
ffmpeg.exe -i "In.mp4" -f segment -segment_times 00:00:06.165,00:00:14.293 -c copy -map 0 "Out_%%02d.mp4"
“In.mp4”是导入的视频文件名;
分割时间点“00:00:06.165”代表0小时0分6.165秒,“00:00:14.293”代表0小时0分14.293秒,由于用到了关键帧,实际结果有点出入;
多个-segment_times时间点之间用英文逗号“,”隔开;
最终会生成“Out_00.mp4”、“Out_01.mp4”、“Out_02.mp4”等视频文件(上面的两个分割时间点最终会生成3个视频文件)。
关键帧无损视频分割剪切--可以每隔多久相同时间点进行分割
操作命令如下
ffmpeg.exe -i "In.mp4" -f segment -segment_time 00:00:05.000 -c copy -map 0 "Out_%%02d.mp4"
仅一个-segment_time时间点,本例为每5秒分割一次(由于用到了关键帧,实际结果有点出入),最终会生成“Out_00.mp4”、“Out_01.mp4”等视频文件。
关于FFmpeg无损视频合并
先在视频所在路径下创建一个文本文件“list.txt”,内容如下(根据需要修改文件名,但必须是相同后缀名[比如01.ts和02.mp4就无法完成无损合并]):
file '00.mp4'
file '01.mp4'
file '02.mp4'
然后在同一个位置运行下面一行批处理命令:
ffmpeg.exe -f concat -i "list.txt" -c copy "Out.mp4"
FFmpeg视频处理软件 (好用的切片工具)
本文为原创文章,版权归三条八主机所有,欢迎分享本文,转载请保留出处!
内容反馈