安卓 : Update on UI Thread very fast

标签 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) 尝试在音频和视频线程之间使用同步。

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

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

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

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

请参阅以下内容以获得清晰的理解以及同步音频和视频的方法。这与 FFMPEG 有关。我不知道您将能够使用其中的多少,但它肯定会帮助您获得一些想法。

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

一切顺利..

关于安卓 : Update on UI Thread very fast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227158/

相关文章:

Python套接字未接收消息

android - 与 ViewPager 一起使用时,ImageView 未检测到点击

android - ImageView 中的动画位图(模拟报亭应用程序 - Ken Burns Effect)

android - 如何使应用程序成为默认系统启动器?

android - 相机方向景观Android Zxing

java - 将arraylist对象的某些参数显示到Android中的 ListView 中

android - 如何触发 Horizo​​ntalScrollView 的 onClickListener?

c - Linux 内核线程

c++ - 我如何在 C++ 中使用异步函数?

android - 如何在线性布局中居中适合图像?