18 条回复  ·  1963 次点击
lslqtz 小成 2024-11-20 19:35:21
@confi 关键帧通常几秒甚至几十秒一次, 因此不能用关键帧来精确裁剪和定位视频.
lslqtz 小成 2024-11-20 19:41:07
另外, 引用这个答案: https://stackoverflow.com/a/63357242 ``` ffmpeg -i vid1.mp4 -i vid2.mp4 -filter_complex "[0:v]trim=0:2,setpts=PTS-STARTPTS[v1];[1:v]trim=3:6,setpts=PTS-STARTPTS[f];[0:a]atrim=0:2,asetpts=PTS-STARTPTS[a1];[1:a]atrim=3:6,asetpts=PTS-STARTPTS[a2];[v1][a1][f][a2]concat=n=2:v=1:a=1" out.mp4 ```
msg7086 小成 2024-11-20 19:45:09
@lslqtz 59.94 fps, 59.94 tbr, 59.94 tbn 我这边 60/1.001 的都是这么显示的,不会显示 60 。
msg7086 小成 2024-11-20 19:47:44
@henix #5 压制参数有很多,然后其中很多是互相不兼容的,也就是一个视频里不能同时出现一段用这个参数另一段用那个参数。比如说 ref ,假如你前面片段用 ref3 ,然后解码器为 ref3 开了对应大小的帧缓冲区,然后你后面的片段用了 ref4 ,那跑的时候就会出现缓冲区读不到帧的情况,因为解码器是按照前面的设置 3 来初始化的。
lslqtz 小成 2024-11-20 19:48:13
@msg7086 那我只能推测是丢帧, 因为最后生成的 ffprobe 有一个 metadata DURATION: 00:00:03.984000000, 它既不符合 59.94 也不符合 60fps.
msg7086 小成 2024-11-20 19:49:40
@lslqtz 239 帧 60fps 是 3.983333 ,考虑到 timebase 精度,3.984 算是正常范围。
henix 楼主 小成 2024-11-20 19:50:31
感谢各位回复! 我刚才发现在完全不使用原始的 加载.mp4 的情况下依然会出现这个问题,可能是我的思考方向错了,今天被这个问题心态搞得有点绷不住。。。 目前初步怀疑是最后一步 concat 之前会把一个大视频拆分成前后两段,后面那段 trim 之后没加 setpts 导致的(因为前面一段正好是 7s ,让我误以为是原始视频的 7s ) 有后续进展再更新
yinmin 小成 2024-11-20 20:10:07
试试下面这条切视频的指令: ffmpeg -ss 00:01:00 -to 00:10:00 -i in.mp4 -c copy out.mp4
234ygg 小成 2024-11-20 22:11:04
ffmpeg 有时候改变一下 option 的前后顺序,都能剪出来点略微不一样的东西😂 很烦
12
返回顶部