hackergame2019-writeups icon indicating copy to clipboard operation
hackergame2019-writeups copied to clipboard

三教奇妙夜ffmpeg

Open zsh2517 opened this issue 5 years ago • 7 comments

ffmpeg -i output.mp4 -vf "select='if(gt(scene,0.01),st(1,t),lte(t-ld(1),1))',setpts=N/FRAME_RATE/TB" out2.mp4                                                                                             

(我不会ffmpeg,这个是百度的如何去除重复帧的。。

linux – 如何使用ffmpeg从视频中删除重复帧@CSDN

zsh2517 avatar Oct 22 '19 04:10 zsh2517

我会全ffmpeg做法!使用blackframe的filter!然后在输出中找到具体时间,在ffplay -ss跳转过去就可以了!(具体代码等我吃完饭再补吧)

xukl avatar Oct 22 '19 04:10 xukl

我也是这么解的。

参考:https://stackoverflow.com/questions/40966394/how-to-simply-remove-duplicate-frames-from-a-video-using-ffmpeg

junbaor avatar Oct 22 '19 04:10 junbaor

只要选择gt(scene,0.3)这一个参数就能找出来了

Asukabot0 avatar Oct 22 '19 05:10 Asukabot0

我用的ffmpeg-python,提取所有 某个像素是黑的 的帧 (代码太丑不想贴了)

DavidDiao avatar Oct 22 '19 05:10 DavidDiao

(上次发言中误将blackframe写成blackdetect了,现已改正) ffmpeg -i output.mp4 -vf blackframe why_output.mp4 输出基本如下

[Parsed_blackframe_0 @ 0x55d873a3f580] frame:1499 pblack:98 pts:767488 t:59.960000 type:I last_keyframe:1499
[Parsed_blackframe_0 @ 0x55d873a3f580] frame:1500 pblack:98 pts:768000 t:60.000000 type:P last_keyframe:1499
[Parsed_blackframe_0 @ 0x55d873a3f580] frame:4575 pblack:98 pts:2342400 t:183.000000 type:I last_keyframe:4575
(下略)

然后ffplay -ss 58这样看一看就好了吧。 我发现我这样的速度比删除重复帧的要快一倍多(测试环境:5.2.14-arch2-1-ARCH ffmpeg version n4.2.1),虽然后面还要人工查看个几秒的视频……

xukl avatar Oct 22 '19 05:10 xukl

ffmpeg -i output.mp4 -filter:v "select='gt(scene,0.1)',showinfo" -f null - 2>&1 知乎搜索 ffmpeg视频抽帧那些事

caffiene0079 avatar Oct 22 '19 07:10 caffiene0079

ffmpeg -i output.mp4 -vf mpdecimate,setpts=N/FRAME_RATE/TB -f image2 keyframe-%02d.jpg

会生成13张图片,我这大约耗时2min,手动删去第奇数张即可,剩余6张flag

抱歉😂 忘了在哪看来的 mpdecimate 方法了

enihsyou avatar Oct 22 '19 09:10 enihsyou