[私がやっていること]ffmpegでフレームのデコードをベンチマークする方法は?
私は
- によって異なるffmpegのデコーダの性能を測定しようとしていますコールが
avcodec_decode_video2(..)
を機能させるにどのくらいのタイミングは次のようにffmpeg.cに取り、ffmpegのバイナリを実行しています
~/bin/ffmpeg -benchmark_all -loglevel debug -threads 0 -i ~/Documents/video-input.h264 -c:v libx265 -x265-params crf=25 video-output.hevc
- とどのくらい番目のタイミングにより、 E同じ機能は
~/bin/ffplay ~/Documents/video-input.h264
次のような方法は、私の理解では、その関数の呼び出しのための平均時間は、私はビデオを変換していますかどうかを同じにする必要がありffplay.cに取り、ffplayバイナリを実行していますか、私はそのビデオのフレームをデコードするのにかかる時間を測定しているに過ぎないからです。これは間違ったやり方ですか?私が間違っている場合は、私に知らせてください。私が得ている結果は、私にとっては奇妙なことです。前述の関数への呼び出しは、ffplayバイナリと比較してffmpegバイナリのほうが2倍多くなります。私は-threads 0
でffmpegバイナリを実行しようとしましたが、結果はまだ同じです(ffplayの2倍です)。バイナリをffplayするだけでもっと多くのスレッドを利用することができますか? -threads 1
で試してみると、ffmpegはffplayの約10倍の時間がかかります(いくつかのスレッドを使用する前から私には意味がありますが、現在は1を使用しています)。
私は質問しています。私はビデオ処理とビデオのエンコード/デコード処理の初心者であることを知りました。
[私の質問]
私はそれが(1つのスレッドを使用して)フレームをデコードするためにかかる時間を測定する正確な方法であるもの疑問に思って? ffplayバイナリではなく、ffmpegバイナリを使用してavcodec_decode_video2(..)
関数を呼び出すのにどれくらい時間がかかりますか?結果はより正確になりますか? また、-benchmark_all -loglevel debug
オプションを有効にしようとしましたが、次のメッセージのように見えます。bench: 64537 decode_video 0.0
は、0.0が時間を意味すると思われる場合はあまり役に立ちません。 (他の番号が何を意味するかわからない)
異なる時刻間の違いを説明する価値があるかもしれません - 実際の時刻はおそらく比較のためには最も有用ではないでしょうシステム負荷、使用可能なコアなどに依存します。 – Mick
ストリームを無視する簡単な方法は、オーディオストリームを無視する '-an'またはビデオストリームを無視する' -vn'です。 –
@PeterCordes私は '-map'よりも柔軟性が高く、特定のストリームを選択(または除外)することができます。 – LordNeckbeard