解决方案 »
- 请教android遍地都是的sp问题
- Android XML 解析问题
- android 这又是报的什么错啊 谁教小弟一下
- 有谁知道Android中Email程序提供的Provider有哪些?
- 关于android代码读取文件的问题
- 淘宝android应用上那个menu键弹出来的那个菜单
- cocos2d-x安卓游戏开发.兄弟们介绍一款测试机吧.模拟器太慢,受不了.
- 求助!如何判断本地安装的APK是否是游戏类型?
- 跪求一份英文注释的新浪微博 sdk
- android7.0 系统 ffmpeg 找不到问题
- eclipse光标问题 有知道的进来看看
- 求指点:四大组件之一contentprovider,好难理解,怎么办?
opencore中的MediaoutputNOde就知道怎么作了
源文档 <http://topic.csdn.net/u/20110113/12/2c143c1a-4930-4f8a-a6fd-9c5c3c19cabf.html> 好象surface在Android2.0以后,只支持RGB565了,之前是支持YUV420的。
但即使这样,Android2.2中,在surfaceflinger层,是支持YUV420的,camera输出大都是YUV啊。
源文档 <http://www.eoeandroid.com/thread-52488-1-1.html>
http://blog.csdn.net/xdljf/article/details/7178620AwesomePlayer 源代码分析
http://blog.csdn.net/shcalm/article/details/6925591AwesomePlayer的启动工作
http://hi.baidu.com/wind_liao/item/260a8c091d7b7f304ac4a352
YUV420P,Y,U,V三个分量都是平面格式。
http://topic.csdn.net/u/20101202/13/b68be997-fd54-4ada-a5c0-fc66c9783b6b.htmlByteArrayOutputStream out = new ByteArrayOutputStream();
YuvImage yuvImage = new YuvImage(data, PictureFormat.NV21, width, height, null);
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 50, out);
byte[] imageBytes = out.toByteArray();
Bitmap image = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
iv.setImageBitmap(image);
http://stackoverflow.com/questions/9192982/displaying-yuv-image-in-androidThe assumption is that most smartphone chipsets have color conversion,
rotation, and scaling in hardware. The pixel format enumerations are
there to support some typical formats that we expect to see used by
hardware. The software renderer (SurfaceFlinger/PixelFlinger) only supports RGB565.
http://groups.google.com/group/android-framework/browse_thread/thread/d3f242356375effa/367d64dcaa3cdaf3?其实android里面定义的有overlay的接口,如果你的硬件支持的话,应该可以直接调用显示。
但是好像没有开放overlay的借口给java层,所以你应该只能在framework层调用overlay来显示你的解码后的图像。
具体的例子,你可以参考一下camera 的实现,做pre-view的时候就是调用的overlay直接显示的。我的是使用ti的omap4430,我直接调用libstagefrighthw.so库来显示,在root下用二进制代码测试,VideoRenderer对象能创建,但是在render的时候,如果是720p,就只能render 1280长度的yuv数据,调用render传入实际长度的数据程序则崩溃。还有我直接使用overlay驱动,但是overlay_handle_t mOverlayHandle = (overlay_handle_t)overlay->getHandleRef(overlay);程序调用到这步就挂了。
第一个方案:是直接参考android源代码中的awesomplayer.cpp调用过程来的。
第二个方案:其实就是第一个方案的底层调用。
http://www.eoeandroid.com/thread-31939-1-1.htmlopen core的代码似乎会自动调用overlay,如果你的系统里有libopencorehw.so这个库的话。你可以在opencore代码里搜索一下这个库的名字,能看到相关的逻辑。
http://www.eoeandroid.com/thread-4510-1-1.htmlYuvImage Since: API Level 8
YuvImage(byte[] yuv, int format, int width, int height, int[] strides)
http://developer.android.com/reference/android/graphics/YuvImage.html
我的思路是 将android源码下载下来,提取出statefright中有关视频显示的部分,进而编译成.so文件,已供jni调用来显示FFMPEG解码后的YUV数据,不知道这个思路对不对。不过目前进展很不顺利,下载太麻烦,编译也烦,估计提取更不好弄,不知道你那有没有什么好的方法。谢谢!!!
这其中jni层要链接到Android到源码里面的一些文件,用cygwin编译jnI库没问题,但是运行apk加载so库的时候就会报错,猜测可能也需要编译安卓源码,在安卓源码环境下编译,可是这个工作量很大,也很耗费时间,目前已下载过多个版本的Android源码,编译都没有通过,各种错误,因为本身是做c的,所以也没什么人可以求教。
所以想向您咨询一下 您最后有没有解决这个yuv显示的呢,我的思路 surfaceview显示yuv是不是正确,安卓源码环境下编译是否可行,不知道您是不是有更好的方法解决了这个yuv显示
谢谢