繁体   English   中英

如何使用 FFmpeg 从视频中剪切/删除特定的未解码 h.264(关键)帧?

[英]How can I cut/drop specific undecoded h.264 (Key-)frames from a video using FFmpeg?

我想通过删除关键帧来故意“破坏”视频,以便以下 P 帧引用错误的关键帧。 这也称为 Datamoshing,虽然已经有工具可以为我做到这一点,但我想自己编程。
根据我的理解,我最好的尝试是使用比特流过滤,但这不起作用:

ffmpeg -i Input.mp4 -c copy -bsf:v noise=drop='gt(t\\,30)*key' output.mp4

它确实适用于not(key)

如果我能够将视频拆分为未解码的帧,那就更好了。
然后能够将其重新组合成缺少特定帧或添加其他帧的视频。

对于这个方法,我只发现了这个:

ffmpeg -i input.h264 -c:v libx264 -filter:v "select=gte(n\\,25)" -frames:v 1 -f h264 frame.h264

但它一次只执行一帧,我不知道它是否真的保留了它的帧类型,因为(如果我错了,请纠正我)它是用这个命令解码和编码的。 任何帮助表示赞赏! 甚至完全不同的方法。

抱歉,是我的错。 我没有将t添加为直接变量。 使用pts*tb代替它。

ffmpeg -i Input.mp4 -c copy -bsf:v noise=drop='gt(pts/tb\\,30)*key' output.mp4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM