web-dev-qa-db-ja.com

VLC-ビデオ再生時の奇妙なオーディオ遅延の問題

私はUbuntu11.04でVLC1.1.9を使用しており、ビデオを再生するときにオーディオ/ビデオを同期させるために常にオーディオ遅延を調整する必要があります(通常は約-400msですが、場合によっては-250、場合によっては0 ... )

なぜこれが起こるのでしょうか?どうすれば修正できますか?または、少なくとも、デフォルトのオーディオ遅延を設定して、労力を節約します...

MplayerやTotemで同じ問題が発生しているようには見えないので、システム/サウンドのセットアップの問題ではないと思います。また、ファイルタイプのパターンに気づいていません。これは、.avi、.mp4で発生します。等.

2
Tom

VLCには3つの項目があり、フレームスキップ、またはオーディオとビデオの長さが不均一に処理される方法に影響を与えるはずです。 VLCで、[ツール]メニューから[設定]を選択します。それらをすべて表示するには、SIMPLEモードではなくAllモードに切り替える必要がある場合があります。

aUDIOでは、[]タイムストレッチモードを有効にします

これは、長さが互いにオフセットされているオーディオストリームとビデオストリームを修正しようとしていると思います。ビデオをスキップするか、オーディオの再生速度を変更して、2つのストリームが同時に終了するようにします。
これは良い場合もあれば、非常に悪い場合もあります。オーディオがビデオよりも長く実行されたかどうか、またはオフセットやその他のデータが存在するかどうかによって異なります。 あるビデオをオンにすると助けになり、別のビデオをオフにすると傷つく可能性があります。プログラムが完全に理解し、適切にエンコードされたビデオオンかオフかは関係ありません。

ビデオでは2つのこと[]遅延フレームをドロップ[X]フレームをスキップ

これらの1つは、プレーヤー/コンピューターが再生に追いついていないときに、ビデオがビデオフレームをドロップすることを可能にします。以下で説明しようとすると、これによりAVの初期オフセットが発生するか、他の多くの要因に依存しない可能性があります。フレームがスキップされるにつれて、それはますます悪化し続ける可能性があります。

通常は、より適切な設定を設定するか、より適切なデコード方法または表示方法を使用して、フレームが1つもドロップされないようにします。ビデオデータの余分で不要な処理を無効にすると、表示に必要な作業を解放することもできます。したがって、マシンが追いつかない理由を調べてみるか、ディスプレイのレンダリング方法をもっと単純なものに変更してみてください。

もう1つは、壊れたフレームまたはデータの処理です。これにより、データが破損している場合に発生する可能性のある別の配列全体が発生し、AVが同期しなくなる可能性があります。

1つのビデオが正しく再生されるまで、これら3つの項目を変更し、次に取得するビデオが類似していることを期待します:-)すべてのビデオとすべてのマシンにこれらを設定する1つの方法はありません。私はそこに正しくエンコードされていないビデオがあり、世界中のすべてのスイッチがそれを完全に修正するわけではないことを保証できます:-)


私はすべての正しい技術を使用するつもりはありません、これは私がそれを単に理解する方法です

ほぼすべてのプレーヤーでビデオを再生するときに、ビデオがビートをスキップするとフレームが失われ、何も起こらなかったかのようにオーディオが流れ続けると、オーディオとビデオの同期がとれなくなります。

オーディオとビデオは、AVプレーヤーの多くの状況で同じファイルから出力されたとしても、実際には2つの異なるデータストリームです。このオーディオとビデオは、時間またはフレームの異なる間隔でデータストリームにインターリーブすることができます。または、まったく別のファイルにすることもできます。

それは実際にはファイルでこのようになる可能性があります、貧しいプレーヤーはそれらの2つを同期させ続ける方法を理解しようとしています:-)

| ---- AUDIO ------------------------------------------- | ======= V = I = D = E = O =========================== |

しかし、より一般的にはこのように

| ---- A ----- | ======= V ===== | ---- A ----- | ======= V ===== | ---- A ----- | ======= V ===== |

データの「インターリーブ」がタイトな場合は、次のようになります。

| -A- | = V = | -A- | = V = | -A- | = V = | -A- | = V = | -A- | = V = | -A- | = V = |- A- | = V = | -A- | = V = | -A- | = V = |

ビデオを再エンコードまたはエンコードする場合は、可能であれば、タイトなAVインターリーブを設定できるエンコーダーを使用してください。ビデオがビートをスキップしたり、FFWDまたはRRWDを実行したりしても、ビデオの同期ははるかに良好になります。 Virtual Dubは、ビデオを無料でいじるのに最適なものの1つであり、ビデオの「ダイレクト」を通過して再インターリーブするだけです。インターリーブされると、ほとんどの場合、再生時にそのようにとどまります。そのため、ねじれたエンコードも(一種の)ロックインされます。

さらに説明すると、ビデオが「完全にオフセット」されているか、オフセットが時間の経過とともに「移行」してさらにずれているか、またはビデオの「ジャンプまたは途中で降りる」場合、これら3つは次のようになります。まったく異なる問題であり、まったく異なることが原因です。 VirtualDubを使用すると、これらの問題のうち2つを短い処理時間で修正できます。

結論として、問題のほとんどは、エンコードの誤り、エンコード/デコードのさまざまな方法の複雑さ、およびデータの破損です。可能であれば、より短いインターリーブを使用するのもよいでしょう。

あなたの理解は、物事を変えるいくつかのスイッチよりも価値があります。少し理解すれば、いつどのように切り替えるか、ビデオを自分で修復するか、自分でより適切にエンコードするかを知るのに大いに役立ちます。これはVLCに限定されるものではなく、他の多くのプレーヤーは異なる名前を使用して同じスイッチを持っています。説明が不十分だったり、多くのことを実行したりした場合は、申し訳ありません。

3
Psycogeek