ffmpegとpythonで動画を切り出す話の続き。
最初の数フレームが真っ黒になる
切り出した動画の『最初の数フレームが真っ黒になる』という症状を解決する。切り出した動画のほとんどで起こる症状だが、まれに起こらないときもある。
今まで動画作るときに手で除去していたけど、これもスクリプトで一括除去する。
成果物
できたものがこちら。よく見ると動画の最初から最後まで、同じ長さでトリミングする無意味なスクリプトに見えるが。
使い方
python ./video_trim.py トリミング前の動画ディレクトリ 出力ディレクトリ
説明
ffmpeg -i 分割した動画.mp4 -vf "blackdetect=d=0.0:pic_th=0.00" -f null -
このコマンド『”blackdetect=d=0.0:pic_th=0.00″』によって全てのフレームが真っ黒と判定されるのだが、
[blackdetect @ 0x600000bb4380] black_start:0.136 black_end:3.973167 black_duration:3.837167
こう出力される。おかしい。全てのフレームが真っ黒と判定されるのならば『black_start:0』と出力されるはず。
『black_start:0.136』
つまり画面と認識されない時間が最初の0.136秒にある。これが画面が真っ黒の時間の正体(と思う)。
なので無意味なスクリプトに見えて、実行すると最初の黒い画面を取り除いてくれる意味のあるスクリプトなのだった。
まとめ
そもそも最初の分割で黒い画面が入らないようにすればいいのだけど、その解決方法が分かりません。