当前位置: > 科技>正文

android快速渲染yuv(安卓渲染模式是什么)

2024-08-19 23:11:54 互联网 科技

本篇目录:

1、Android中使用FFmpeg得到视频中的PCM和YUV数据2、Android中的YUV格式解析3、Android万能视频播放器07-检测视频是否可以被硬解码4、android可否在NDK部分直接采集yuv图像

Android中使用FFmpeg得到视频中的PCM和YUV数据

好象surface在Android0以后,只支持RGB565了,之前是支持YUV420的。但即使这样,Android2中,在surfaceflinger层,是支持YUV420的,camera输出大都是YUV啊。

最近需要做实时录屏并把视频推流到RTSP服务器,具体流程是抓取屏幕内容(bitmap),并把bitmap转化为YUV,接着把YUV编码成H264,再把H264码流推到RTSP服务器;把采集到的PCM编码为AAC,再把AAC推流至RTSP服务器。

android快速渲染yuv(安卓渲染模式是什么)  第1张

例如,你可以使用 ffmpeg -re -i videomp4 -i videomp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/home 来推流 videomp4 和 videomp4 这两个视频。

是将视频中的帧按顺序提取出来,然后写成bmp图片的,可以用图片查看器直接打开查看的。如果你想要写成yuv的,在GetNextFrame函数中修改一下就可以了。这是用vc0写的一个工程的主要代码,可以实现提取帧图片的。

FFmpeg中也提供了对应的 bit stream filter ,称 H264_mp4toannexb ,可以将MP4封装格式的H264数据包转换为annexb封装格式的H264数据 (其实就是裸的H264的数据)包。

Android中的YUV格式解析

NV21 属于 YUV420SP ,与 NV12 几乎一致,区别是 UV 平面中 U 与 V 的排列顺序颠倒,以 V, U, V, U 的顺序交错排列,内存排列如图所示:NV21 是 Android 相机( Camera )默认的输出格式。

android快速渲染yuv(安卓渲染模式是什么)  第2张

rgb转yuv:yuv主流的采样方式有yuv4:4:yuv4:2:yuv4:2:0。下图中以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量,可以看到这些采样方式是影响uv的采样的,对y都是全部采样。

常见的YUV格式有YUYYUYV、YVYU、UYUV、AYUV、Y41P、Y41Y21Y21IF0IYUV、YV1YVUYUV41YUV420等,Android中比较常见是YUV420分两种:YUV420P和YUV420SP。以下为YUV420P和YUV420SP。

首先,我们可以将 YUV 格式按照数据大小分为三个格式,YUV 420,YUV 422,YUV 444。

Android万能视频播放器07-检测视频是否可以被硬解码

1、根据FFmpeg中视频解码器的名称找到对应手机硬解码器,如果存在则可以硬解码,走硬解码流程;不存在就只能走软解码流程。

android快速渲染yuv(安卓渲染模式是什么)  第3张

2、硬解码播放器是一款高清视频播放器软件,自带硬解码器,不用转码,比较省电,支持调节播放速度快放慢放,支持视频加密解密,支持边看电影边聊天。

3、Android 用MediaCodec实现视频硬解码 本文向你讲述如何用android标准的API (MediaCodec)实现视频的硬件编解码。例程将从摄像头采集视频开始,然后进行H264编码,再解码,然后显示。

4、颜色空间 根据ANdroid SDK文档,确保所有硬件平台都支持的颜色,在摄像头预览输出是YUV12,在编码器输入是COLOR_FormatYUV420Planar,也就是前面代码中设置的那样。 不过,文档终究是文档,否则安卓就不是安卓。

5、通过/system/etc/media_codecs.xml可以确定当前设备支持哪些硬解码。通过/system/etc/media_profiles.xml可以知道设备支持的具体profile和level等详细信息。

6、Android通过软解码播放视频 1, 一般情况下Android的平台都是硬解码视频的,尤其是在Arm平台这种成熟的硬件平台上面(硬解码代码由芯片厂商提供)。

android可否在NDK部分直接采集yuv图像

1、其实android里面定义的有overlay的接口,如果你的硬件支持的话,应该可以直接调用显示。但是好像没有开放overlay的借口给java层,所以你应该只能在framework层调用overlay来显示你的解码后的图像。

2、SDK获取摄像头数据,再用JNI调C来处理图像,也就是使用JNI来调取跟踪程序并进行数据交互。

3、摄像头采集到的数据是RGB24的格式,RGB24 一帧的大小是 width x height x 3Bit, RGB32 一帧的大小则是width x height x 4Bit。YUV420 一帧的大小是 width x height x 5Bit。

4、Android camera采集到的可以是yuv420sp也可以食yuv420p。我知道yuv420中yuv的分布。现在主要有个前提是从Android Camera 中采集到的yuv420数据,这个byte[]的长度是一倍的视频宽高乘积,不是5倍。

5、Camera参数设置,设置不正确,无法看到视频,而且最主要的是有的时候你用的设置在公司的测试机上运行正常在其他手机上就看不到视频了。

6、根据ANdroid SDK文档,确保所有硬件平台都支持的颜色,在摄像头预览输出是YUV12,在编码器输入是COLOR_FormatYUV420Planar,也就是前面代码中设置的那样。 不过,文档终究是文档,否则安卓就不是安卓。

到此,以上就是小编对于安卓渲染模式是什么的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

视频

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本站联系的,一经查实,本站将立刻删除。