kaikoma-soft / CMcut4U-Mk2

Unix 系 OS 上で TSファイルの半自動CMカット (CMcut4U の改良版)
Apache License 2.0
21 stars 1 forks source link

sceneChanges.shの処理速度について #2

Closed mimaburao closed 4 years ago

mimaburao commented 4 years ago

提案と質問

シーンの変化においてsceneChanges.shにて検出していると思います。検出速度が-threads 0を付けたほうがSceneC.datを見る限りではspeedで、3x程度(元のsceneChanges)から8x程度の向上がありました。 更に向上しようと、再生支援(-hwaccel cuvid -c:v mpeg2_cuvid)を付けましたところ、ffmpegが検出を止めてしまうようです。結果、本編とCMが検出されず実質的にCMカットができなくなります。 別の動画にて、正常に切り分けできているCMカットのエンコードでは再生支援とnvencを用いることですばやく処理できています。 ハードウェア再生支援はPC環境とffmpegのバージョンも関係あるかと思います。

環境

OS:Linux Mint 19.3 CPU:core i5 6500 GPU:Nvidia GT1060 ffmpeg4.2:cudaとcuvidは有効にして、ビルド&インストールして利用しています。

kaikoma-soft commented 4 years ago

-threads 0 について

確か "-threads 0" は自動の意味で、デフォルト(指定なし)も自動だった筈なので 試してみました。

-threads 無し 3:27.53秒 -threads 0 付き 3:28.20秒 -threads 1 付き 5:02.41秒 -threads 4 付き 4:14.90秒 -threads 8 付き 3:42.07秒 -threads 12 付き 3:31.85秒 -threads 16 付き 3:23.22秒 -threads 20 付き 3:25.79秒

こちらのマシン環境は、下記のものです。

OS Ubuntu 18.04.4 LTS nvidia-driver-435 CPU AMD Ryzen 7 2700 (8コア16スレッド) GPU GeForce GT 710 ffmpeg 3.4.6-0ubuntu0.18.04.1 処理対象TS 1440x1080 30分

以上から "-threads 0" 付きと指定なしでは有意な差は無く、自動でほぼ最適値に 設定されているようです。 従って通常は "-threads 0" の指定は不要のはずです。

ハードウエア支援による高速化

こちらで試した事があるのは -hwaccel vdpau ぐらいですが、これを指定すると うちの環境では逆に遅くなるのでハードウエア支援は使っていません。 ( GPUがしょぼいので ) また、-hwaccel cuvid -c:v mpeg2_cuvid は、エラーで実行出来ません。 よって申し訳ありませんがハードウエア支援について有効な情報は持っていません。

結論

上記の結果は、使用する ハード、ソフト環境に大きく依存します。 公開しているものは、出来るだけ多くの環境で動くようにオプション等は標準的な ものにしてますので、最適化を求めるのであれば、ご自分の環境に合うように カスタマイズしてお使い下さい。

mimaburao commented 4 years ago

検証結果了解しました。threadについては確かに差はないようですね。12threadもあるのにそれほど差がないとは思いませんでした。 こうなると、基本にはffmpegは自動で最適な項目を選ぶようですね。 ありがとうございました。