我有一个播放视频帧的应用程序,这一切都正常工作。然而,它还需要同时播放音频,当音频和视频同时运行时,似乎视频落后于音频,
我用来显示视频帧的逻辑如下:
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线程上更新图像的延迟。
runOnUiThread
就会创建一个新的 Runnable 实例,最重要的是,如果调用线程不是 UI 线程,则将 Runnable 排队到事件队列中。因此,无法保证何时运行发布的可运行项。如果有其他待处理的 UI 事件(例如菜单触摸事件),则执行可能会延迟。摆脱这个问题并使用自定义绘图。 - Mister Smith