2011-08-11 15 views
0

スマートカメラのエンコード性能(MPEG-4とMJPEG)をテストしています。私はOpenCV/FFMPEGでエンコーディングを実行するアプリケーションを書いています。アプリケーションでは、カメラからの画像をキャプチャし、エンコーディング形式にエンコードします。ベンチマークでは、MJPEGエンコーディングがMPEG-4エンコーディングよりもはるかに時間がかかることを知りました。私はそれが別の方法であることを期待しました。 1つのフレームをMPEG-4にエンコードするには約31ms必要ですが、MJPEGにエンコードするには約80msかかります。 MJPEGはMPEG-4と比べて本当に長い時間がかかりますか?MJPEGとMPEG-4エンコード時間

答えて

1

理論上は、フレーム間圧縮がないため、MJPegの方が高速です。

ただし、MPEG-4を高速化できる方法があります。ここで考慮すべきいくつかの要因である:

  • MPEG-4は、実際には「パート2」または 「パート10」のいずれか、二つの異なるフォーマットすることができ、そしてパート2がはるかに高速です。詳細はこちらをご覧ください: http://en.wikipedia.org/wiki/MPEG-4_Part_2

  • エンコーダの設定は、次のような大きさのオーダーを行うことができます。
    指定されたフォーマットの高速設定は、より遅い設定(速度/品質
    のトレードオフ)を持つ同じフォーマットよりも速く、10倍以上になることがあります(
    )。

  • MPEG-4のエンコーダは、地球上で最も最適化されたコード の一部です。彼らは依然としてアセンブリ言語を大量に使用しています。 は、実際には に最適化されていない別のフォーマットよりも簡単に速くなる可能性があります。

  • IOが低速(ネットワーク、ハードドライブ)の場合、結果が歪む可能性があります。
    たとえば、圧縮を行わないと最も速いのですか?しかし、大きなファイルを書き込むには、時間が になります。

だから実際には、MJPEGは、おそらくこれらの理由および他のエッジケースのために遅くなる可能性があります。

関連する問題