这是一个我认为只有在android-ndk中彻底工作过的人才能回答的问题。
问题:我编写了一个使用文件资源管理器读取输入文件的应用程序。然后当按下解码和播放按钮时,应用程序应解码编码的输入文件并将其显示在设备屏幕上。这里的问题是解码是在本机代码中执行的。解码是正确的,因为我将它转储到 sdcard 并使用原始视频播放器验证它。解码帧为 RGB888 格式,数据类型为unsigned char。因此,如果有人知道如何显示本机代码中的数据,请提供一些有关相同的建议。
我尝试过:首先我将帧缓冲区返回给调用本机代码的函数,然后我将帧缓冲区转换为 char 数组,并将该数组作为 java 对象(即 jcharArray)返回给我的活动。在我的活动中,我将 char 数组转换为 int 数组,并使用 setpixels() 函数将此数组分配给位图。然后使用画布将这个框架绘制到设备屏幕上。应用程序是如何崩溃的,主要是每次解码帧时控件似乎都不会返回到 java 活动。此外,即使这种技术有效,显示的帧也会很慢,以至于它永远不会看起来像视频。
所以我恳请你们提供建议和任何技术来做同样的事情。先谢谢了。。。等待回复。。。