2

ロボットからの着信ビデオとオーディオ ストリームからムービーを作成する Delphi 6 アプリがあります。PC は、一連の JPEG フレームとしてビデオ ストリームを受信し、PCM オーディオ データのブロックとしてオーディオを受信します。Windows の AVIFile 関数 (AVIStreamCreate など) を使用してムービーを作成しています。ビデオ コンプレッサの選択には、AVISaveOptions() 関数を使用し、ユーザーがシステムで利用可能なコンプレッサから 1 つを選択できるようにします。例: Microsoft Video 1、Radius の Cinepak Code など。Microsoft H.263 や H.261 など、他のいくつかの利用可能なものは AVIERR_BADFORMAT エラーで失敗するため、テストできませんでした。音声は GSM 6.10 コンプレッサーを使用して圧縮されます。

問題は、比較のために Adob​​e Premiere のようなツールを使用できる圧縮率に近づくことができないように見えることです。注意してください、Premiere が私のものとは異なる全体的なプロセスを使用して、MPEG や Quicktime などの別のファイル形式に圧縮していることは承知しています。しかし、可能であれば、同等の圧縮率を得たいと考えています。

AVISaveOptions() からどのコンプレッサーを選択しても、コンプレッサーで使用可能な圧縮品質設定 (たとえば、Microsoft Video 1 の時間品質比と圧縮品質) をどれだけ低くしても、常に数分のビデオが終了します。サイズが約 14MB の AVI ファイルを作成します。比較のために、私が Adob​​e Premiere を使用して作成できるファイルは、サイズが 1 MB 未満であり、ほぼ同じ視覚的品質に見えます (つまり、私の目的には十分です。ここでは、実際の品質の低下は気にしません)。

Windows AVI API の使用によるファイル出力を調べると、コンプレッサーで変更した設定がフレーム レートに影響を与えていないことがわかります。これは常に入力フレーム レートと同じです。必要に応じて、明らかに入力側でフレームをドロップできますが、それはオーディオに同期されているため、少し面倒です。できれば避けたいと思います。

しかし、もっと重要なのはデータレートです。コンプレッサーの設定をどれだけ低くしても、約 2.3 kbps を下回ることはありません。私が Premiere で作成したビデオ、および私が再生したその他のビデオで再生時間に対するファイル サイズの比率が健全なものは、すべて約 1.2 kbps です。

私の AVI ファイルのファイル サイズと、Premiere で作成したファイル サイズ、または他の人から送られてきた圧縮率の高いファイル サイズとの全体的な違いは、10 対 1です。したがって、私の圧縮率は他のビデオ ファイルよりも 10 倍悪く、他のファイルのビデオ品質に不快な違いはありません。

同等の圧縮率を得るにはどうすればよいですか?

更新:David Heffernanによる返信には、私にとってうまくいった迅速な解決策が含まれています。重要なライセンス警告も含まれているため、強調しています。私のように、ユーザーが XVid コーデックをできるだけ便利に使用できるようにしたい方は、以下の記事をお読みください。これには、ユーザーのコンプレッサーの選択を、選択した圧縮構成の選択と共に、今後のセッションでユーザーを再び悩ませることなく再利用する方法に関する説明が含まれています。

http://msdn.microsoft.com/en-us/magazine/hh580739.aspx

興味深いことに、私の以前の出力 AVI ファイル サイズから XVid コーデックを使用して作成されたファイルへのサイズの変化は 12.231 MB から 632 KBであり、ビデオ品質は妥当以上のものでした。

4

1 に答える 1

2

本当に簡単な答えは、XVIDエンコーダーをインストールすることです。Windows で提供されているコーデックはどれも、目的に適していません。XVID は高品質で無料です。

配布とライセンスの影響について、XVID FAQには次のように書かれています。

Xvid を独自のプログラムと一緒に配布できますか?

プログラムが実行時に Xvid 機能を呼び出す場合、それは派生作品であり、したがって、GPL の条件はプログラムを含む作品全体に適用されます。いいえ、Xvid をプロプライエタリ プログラムと一緒に配布することはできません。配布したい場合は、GPL の下でもプログラムを公開する必要があります。これには、たとえば完全なアプリのソース コードの提供も必要です。詳細については、GPL ライセンス テキストを参照してください。

Xvid にはまったくリンクしていません。実行時に VfW インターフェイスを介して呼び出すだけです。独自のソフトウェアと一緒に配布できますか?

いいえ。Xvid にリンクする方法や、何をリンクと見なすか、何をリンクとみなさないかは問題ではありません。GPL は、「リンク」という用語にまったく焦点を当てていませんが、GPL の条件の下で、結合された/派生した作品全体が公開されることを要求しています。組み合わせて使用​​するために配布された場合、基本的に任意の 2 つ (またはそれ以上) の作品は組み合わせ作品を構成します。したがって、プログラムが実行時に Xvid 機能を呼び出す場合、Xvid への呼び出しを技術的にどのように実装したとしても、それは派生作業になります。プログラムを GPL の下で公開したくない場合は、Xvid と組み合わせて配布することは控えてください。

これが意味することは、プログラムが GPL の下でライセンスされている場合にのみ、プログラムと共に XVID を配布できるということです。ただし、XVID を自分で取得するようユーザーに提案することはまったく問題ありません。

于 2012-05-12T15:01:45.630 に答える