ffmpeg 视频截取-合并
ffmpeg 截取视频
ffmpeg -i ~/1.mp4 -c copy -ss 00:00:00 -t 00:21:00 out.mp4
截取从00:00:00 开始 持续时间21分钟的视频
时间被指定为HH:MM:SS.MILLISECONDS。例如,您可以告诉 FFmpeg 寻找01:02:03——即电影 1 小时的第 2 分钟的第 3 秒!
-t范围
您可以使用参数指定所需剪辑的持续时间-t。例如,-ss 40 -t 10指示 FFmpeg 从第 40 秒开始提取 10 秒的视频。
-to范围
您可以使用参数指定结束时间-to。例如,-ss 40 -to 70指示 FFmpeg 从第 40 秒到第 70 秒提取 30 秒的视频。
注意:如果你同时使用 -t 和 -to,那么只有-t将被使用。
如果将-ss放在“-i 源文件名”后面则-to的作用就没了,跟-t一样的效果了,变成了截取多长视频。一定要注意-ss的位置。
ffmpeg 合并视频
使用filelist.txt方式
ffmpeg -f concat -i filelist.txt -c copy output.mp4
/*
filelist.txt格式内容:
file '01.mp4'
file '02.mp4'
*/
查看视频的信息
mediainfo 01.MP4
使用 ffprobe 测试输入文件(可以查看视频的帧率/时间基tbn):
ffprobe -hide_banner 02.mp4
举例:
Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 546 kb/s, 25 fps, 25 tbr, 25k tbn (default)
更改文件的时基
ffmpeg -i 01.mp4 -video_track_timescale 25000 01_fixed.mp4
ffmpeg 连接视频文件音视频不同步
1.查看帧率是否相同
2.检测时间基tbn是否一致(不一致改为一致)
视频合并处卡顿
ffmpeg 为了加速,会使用关键帧技术,(再视频剪辑处丢失关键帧。所以造成视频合并处卡顿) 所以有时剪切出来的结果在起止时间上未必准确。 通常来说,把 -ss 选项放在 -i 之前,会使用关键帧技术; 把 -ss 选项放在 -i 之后,则不使用关键帧技术。 如果要使用关键帧技术又要保留时间戳,可以加上 -copyts 选项:
ffmpeg -ss 00:00:01 -i input.mp4 -to 00:16:00 -vcodec copy -acodec copy -y out.mp4
视频指定时间段加马赛克
ffmpeg -i source.mp4 -filter_complex "crop=230:180:640:270, boxblur=10:enable='between(t,10,20)'[blurLogo1]; [v:0] [blurLogo1]overlay=640:270" -c:a copy -y output.mp4
https://gsyan888.blogspot.com/2017/05/ffmpeg-timeline-editing.html (优质)
https://blog.csdn.net/yinshipin007/article/details/126125684
https://blog.csdn.net/ternence_hsu/article/details/103877455
参考
https://qa.1r1g.com/sf/ask/2218436041/
https://blog.csdn.net/qq_48329942/article/details/127389611