Android:UI Thread上的更新非常快

时间:2012-04-19 11:36:19

标签: android multithreading android-imageview android-ui

我有一个逐帧播放视频的应用程序。这一切都有效。然而它也需要播放音频,当音频和视频同时运行时,视频落后于音频,
 我用来显示视频帧的逻辑如下

 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线程上的图像的延迟。

1 个答案:

答案 0 :(得分:1)

看起来很有趣。如果我在你的情况下,我会检查以下方法。

1)尝试在音频视频线程之间使用同步。

2)尝试减少音频滞后的视频帧,并降低视频滞后的音频频率。

您可以通过以下方式执行相同操作。

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

这样做会立即将视频速度降低到24 12.因此,音频现在将与视频匹配。但是,正如我已经提到的那样,雅的品质将受到威胁。此方法称为频率缩放。广泛用于同步音频和视频的方法。

有关清晰的理解以及可以同步音频和视频的方法,请参阅以下内容。这与FFMPEG有关。我不知道你能使用多少,但绝对会帮助你了解一下。

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

All the Best ..