解决方案 »
- java访问ejabber失败,求解
- 录像时调用MediaRecorder的start()时发生start failed: -19错误
- 【100分】请教HttpURLConnection的连接问题
- activity跳转后关闭调用它的activity
- 急 急 急 !哪个有android的SDK和ADT啊?
- SDK开发范例大全第三版课后代码免费的谁有?
- 应用直接Home退出长时间打开出现黑屏,Fragment点击事件失效求解???
- 开启一个AsyncTask异步任务,抓取网络数据,然后在OnPost里填充listview的adapter,为何异步任务抓取数据为空
- scrollview中添加gridview,并更新UI
- ionic2 打包APK ,运行提示The connection to the server was unsuccessful.
- 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显示
谢谢