初心者にC++でFFmpegでthreadは難しすぎた!
FFmpegのライブラリを利用して動画の入力、処理、出力をシーケンシャルで実行できるところまではできたのですが、シーケンシャルだと処理速度が明らかにでないので、スレッド化は必須だと気づき。
ではスレッド化に挑戦しよう!とすると、あまり事例がないのか、頼みのWindows Copilotくんも整ったコードを提示してくれず、「根気強く頑張りましょう」と言い出す始末。
確かにその通りで、私なりには頑張ったんだけど、素地がなさすぎてムリゲー。
じゃあコンソールの黒い画面を出さないように、createprocessやcreatepipeで実現できないかな?
これも頑張ったけど、結局スレッドにすると以下略
全部私の無能が悪いんじゃー!
もう諦めて_popenで行くことにしました。コンソールの画面が出ます。
FPSを測ってみた。
GUI画面にFPSとか出るようにしたので、もう一度測ってみた。
ちなみにわたしの環境は、
CPU:intel 11400F
GPU:Geforce RTX 4700Ti SUPER
適当なバトルの動画を処理してみて計測。音声の合成は未実施でFPSには含まれていません。
名前黒塗りのみで固定塗りなし、コピーライトあり。
SDR動画 | HDR動画 | |
---|---|---|
TensorRT | 28FPS | 22FPS |
DirectML | 16FPS | 13FPS |
現行版 | 25FPS | 20FPS |
現行版と比べると、性能微増?ほとんど変わらない感じかな。最初にTensorRTに変換する時間の分だけ退化?
現行版をRADEONで動かした時のスピード感がよくわからないけど、どうなのかな?
同程度以上だったらいいな。
DirectMLの方は、Intel、AMD、NVIDIAのディスプレイアダプターが検出されればいいので、DX12が入った新しめのノートパソコンでも動くんじゃないかな?と予想。試しては無い。
GPUのメモリ使用量は4~6GBくらいだと思う。
Windows版のFFXIVが動く環境なら全然余裕じゃないかな?
せめて黒いコンソールの画面がでなかったら良かったんだけど・・・
今後の予定
とりあえず黒いコンソールが出るままでリリースする方向で走り出そうと思ってます。
あと残っていそうなのは、停止ボタン対応、音声の合成、出力された動画の保存画面、くらいかな?
リリースはできればMicrosoftストアにしたいと思っていますが、もしかするとこれまでと同じようにこちらで配布ということもあるかもしれません。
私にプログラミング能力があったらもっと良いものになっただろうになー
くやしいです!
でもリリースすることに意味がある!意味はあるよ!たぶん