2017-05-05 37 views
0

ffmpegの色空間変換速度

ffmpeg -i ./in.mp4 -s 1280x720 -r 30 -an -f rawvideo -pix_fmt yuv420p - | cat - >/dev/null 

ffmpeg -i ./in.mp4 -s 1280x720 -r 30 -an -f rawvideo -pix_fmt argb - | cat - >/dev/null 

ちょうど101ながら524fpsを提供します。それだけではいけません、GPUはもちろんのこと、現代のCPUで1フレームあたり8ミリ秒かかることもありませんでした!

私は間違っていますが、どうすればこのスピードを改善できますか?

PS:これは本当にばかげたことです!

ffmpeg -i ./in.mp4 -s 1280x720 -r 30 -an -f rawvideo -pix_fmt yuv420p - | ffmpeg -s 1280x720 -r 30 -an -f rawvideo -pix_fmt yuv420p -i - -s 1280x720 -r 30 -an -f rawvideo -pix_fmt argb - | cat - >/dev/null 

は275fpsになります。それははるかに完璧ではありませんが、私は一緒に暮らすことができるものです。

なぜですか?

ありがとうございます!

+0

ビットレートはほぼ同じで、〜4.0225Mbits/sなので、同じデバイスで動作する可能性が高いことに注意してください。私はそれをより速くする方法はわかりませんが、GPU上で動作しています。 –

+0

色空間変換?なぜあなたはそれがGPUで動作すると思いますか?ビットレートは出力mp4のビットレートを参照しています。なぜなら、-b:vと同じになるように強制するからです。もちろん、そのエンコーディングはGPU上で実行され、私はそのスピードに問題はありません。私は色空間変換の速度に問題があります。私には、非常に遅く、秒あたりの生データの340mバイト... SIMD命令を持つマルチコアマシンでは...それは私に速くは聞こえません。 –

+0

ああ、それでは気にしない。間違いをお詫びし、デバッグ出力を誤解しました。私はいつもffmpegをサウンドファイルの変換に使用してきましたが、私はいつも何らかの理由でビットレートが変換速度を参照していると思っていました。 –

答えて

2

それはGPUが出力符号化に使用されて見ることは容易である - 何のCPUは、10倍の再生速度

がよろしいですで1280x720x30fpsでMP4をエンコードすることができませんでしたか?ミッドレンジのHaswell i5では、私のCPUエンコードはその解像度で約4〜5倍になります。コーデックを指定していないので、ffmpegはMP4出力用にlibx264にデフォルト設定されます。これはGPUでエンコードされません。

ARGBパイプラインの出力を確認してください。 RGBとして保存するには、libx264を-c:v libx264rgbとして明示的に呼び出す必要があります。 H.264はアルファを格納しない点を除いて。ですから、MP4フォーマットでは、非常に最近のffmpegのビルドを使用して、VP9としてエンコードする必要があります。出力は、アルファプレーンを持つYUVピクセル形式になります。 MOVが動作する場合は、PNGとQTRLEを使用することもできます。

私は、ffmpegで使用可能なVP9/PNG/QTRLEのハードウェアアクセラレーションエンコーダについて認識していません。

+0

素晴らしい! OKを指定すると、どのコーデックでGPUでエンコードされていることを確認できますか? yuv420pを使用している間、エンコード速度にどのように影響するかを見ていきます。 –

+0

'h264_nvenc'、' h264_qsv' – Mulvya

+0

ありがとう。ちなみに、私はGPU(Packet.net type 0)のないマシンで試してみましたが、どちらの場合もほぼ同じ速度です... yuv420pは0.486x、argbは0.34xです。したがって、高速プロセッサでの速度低下ははるかに顕著です。 –

関連する問題