4

フレームごとにビデオを再生するアプリケーションがあります。これはすべて機能しています。ただし、オーディオとビデオを同時に実行しているように見える場合は、オーディオも再生する必要があります。ビデオはオーディオに遅れをとっており、
ロジックは次のようにビデオフレームを表示するために使用しています

 ProcessVideoThread(){

  // Read the data from socket, 

  // decode it : this is going to be in side libvpx library, after decoding i am getting raw     
  // bitmap data 

  // After getting raw bitmap data, use some mechanism to update the image, 
  // here i tried runOnUIThread, handler but 


 }

今何が起こっているのか、UI スレッドが画像を更新する機会が非常に遅いようです。つまり、libvpx は画像をデコードするのに約 30 ミリ秒かかり、runOnUIThread を介して、画像を更新するのにさらに 40 ミリ秒かかりますが、UI スレッド内で私はそれを更新しています。
UIスレッドで画像を更新するための遅延を減らすにはどうすればよいですか。

4

1 に答える 1

1

面白そう。私があなたの状況にあった場合、次の方法を検討します。

1) オーディオとビデオのスレッド間の同期を使用してみてください。

2) オーディオが遅れているビデオ フレームを減らし、ビデオが遅れているオーディオ周波数を減らしてみてください。

次の方法でも同じことができます。

int i;
if(i%2==0)
ShowFrame();
else
i++

これにより、すぐにビデオ速度が 24 から 12 に低下します。したがって、オーディオはビデオと一致します。しかし、私がすでにあなたに言ったように、まあ品質は危機に瀕しています. この方法は周波数スケーリングと呼ばれます。オーディオとビデオを同期するために広く使用されている方法。

明確な理解と、オーディオとビデオを同期する方法については、以下を参照してください。これは、FFMPEG に関連しています。どれだけ使えるかはわかりませんが、アイデアを得るのに役立つことは間違いありません。

http://dranger.com/ffmpeg/tutorial05.html

ではごきげんよう..

于 2012-04-20T10:31:56.910 に答える