首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android平台RTMP推送模块如何对接NV21、YV12、RGB、YUV等编码前数据

​ 前言 我们在对接Android平台摄像头或者屏幕采集、编码打包推送场景的时候,随着采集设备的不同,出来的数据也是多样化的,比如NV21、YV12、RGB、YUV等,更有图像数据甚至是翻转或者倒置的,...,可能是旋转或者倒置的,为此,我们提供了NV21的对接接口,以满足数据旋转、水平、垂直翻转诉求。...NV21转I420并旋转接口 这个接口也是主要用于特定的数据类型对接,NV21的数据,直接转I420后,对接即可,接口参数比较简单,不再赘述。.../** * NV21转换到I420并旋转 * * @param src: nv21 data * * @param dst: 输出I420 data * * @param width...支持RGBA数据接入(支持裁剪后数据接入,主要用于同屏场景): RGBA的主要用于屏幕共享场景下。 /** * Set live video data(no encoded data)

63920

NV21、NV12、YV12、RGB565、YUV等颜色编码格式区别和接口设计探讨

​NV21、NV12、YV12、RGB565、YUV扫盲NV21、NV12、YV12、RGB565、YUV分别是不同的颜色编码格式,这些颜色编码格式各有特点,适用于不同的应用场景。...选择合适的颜色编码格式取决于具体的需求和环境:NV21:NV21是一种用于Android系统的图像颜色编码格式。...它使用YUV 4:2:0的采样方式,即垂直方向上每两个像素采样一次,水平方向上每个像素采样两次。NV21的Y分量是亮度信息,V和U分量是色度信息(分别代表饱和度和色调)。...转I420并旋转接口这个接口也是主要用于特定的数据类型对接,NV21的数据,直接转I420后,对接即可,接口参数比较简单,不再赘述。.../** * NV21转换到I420并旋转 * * @param src: nv21 data * * @param dst: 输出I420 data * * @param width: 图像宽 * *

1.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    NV21、NV12、YV12、RGB、YUV、RGBA、RGBX8888等图像色彩编码格式区别

    ​常用图像颜色编码格式NV21、NV12、YV12、RGB、YUV、RGBA、RGBX8888都是常见的图像颜色编码格式,它们之间的主要区别在于色彩空间和数据排列方式。...NV21:NV21是Android系统使用的一种图像颜色编码格式,它采用的是YUV 4:2:0的采样方式,意味着垂直方向上每两个像素采样一次,水平方向上每个像素采样两次。...data, int width, int height, int y_stride, int v_stride, int u_stride, int rotation_degree);YUV数据接口支持标准的...转I420并旋转这个接口也是主要用于特定的数据类型对接,NV21的数据,直接转I420后,对接即可,接口参数比较简单,不再赘述。.../** * NV21转换到I420并旋转 * * @param src: nv21 data * * @param dst: 输出I420 data * * @param width: 图像宽 * *

    1.7K00

    图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别

    合并为单个库实践 android-studio使用cmake编译ffmpeg实践 android全平台编译ffmpeg视频解码器实践 android全平台编译ffmpeg支持命令行实践 android全平台编译...ffmpeg视频推流实践 android平台下音频编码之编译LAME库转码PCM为MP3 图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P...我们在android平台下使用相机默认图像格式是NV21属于YUV420SP格式 YUV采样 YUV 4:4:4采样,每一个Y对应一组UV分量,一个YUV占8+8+8 = 24bits 3个字节。...我们在android平台下使用相机默认图像格式是NV21属于YUV420SP格式## YUV420SP(NV21和NV12)格式 YUV420SP格式的图像阵列,首先是所有Y值,然后是UV或者VU交替存储...文件并且保留Y分量,你可能会有疑问,为什么U分量和V分量要写入0x80,其实你可以参考上面的YUV转RGB的公式,YUV数据是无法直接显示的,最终需要转成RGB显示,因此我这里是只需要保留Y分量,忽略UV

    3.2K30

    Android UVC Camera获取的yuv转Mat

    转换yuv byte 转 Bitmap 笨办法可以先将yuv转Bitmap,然后再使用OpenCV提供的Utils.btimapToMat转换成Mat。 但是很明显,中间的转换过程可以进行优化。...或者我们直接使用AndroidUSBCamera 库中的cameraClient.captureImage直接得到图片算了。(ps:这个方法会将相机数据输出为本地文件存储。)然后再转换。...,我们还可以使用Android提供的ScriptIntrinsicYuvToRGB进行转换。...所以我们转成Bitmap之后进行显示时需要注意线程切换。 3. yuv byte [] 转 Mat 上面的转换过程都先进行了Bitmap转换,但是OpenCV现在可以直接将yuv数据填充到Mat中。...因为YUV NV21或者 NV12格式数据,在Mat中识别为了YUV420sp,我们可以统一使用YUV420sp将NV21或NV12格式的yuv数据组成的Mat转换为其他的Mat数据。

    70520

    OpenGL: 如何利用 Shader 实现 RGBA 到 NV21 图像格式转换?(全网首次开源)

    之前写过一篇 OpenGL 使用 shader 实现 RGBA 转 YUYV 的文章,有几位读者大人在后台建议写一篇 shader 实现 RGBA 转 NV21 的文章,因为在实践中 NV21 格式用的比较多...一文掌握 YUV 图像的基本处理 10bit YUV(P010)的存储结构和处理 Shader 实现 RGBA 转 NV21 好处 OpenGL 完成图像的渲染后,很多情况下需要将渲染后的图像读取到内存进行下一步处理...在不涉及超大图像读取时,我们一般会选择使用 Shader 将 RGBA 转 YUV,这样再使用 glReadPixels 读取图像时可以有效降低传输数据量,提升性能。...Shader 实现 RGBA 转 NV21 原理 对 NV21 格式比较熟悉的同学应该非常了解,NV21 有两个平面(plane), 一个 plane 存储 Y 分量,另一个 plane 存储依次交错排列的...[NV21 格式] 其中 Y plane 的宽和高就是图像的宽高,VU plane 的高是原图像高的一半,所以 NV21 图像占用的内存大小是 width height 1.5 。

    2.7K51

    Android移动直播,自定义采集视频数据推流

    如果开发者集成第三方美颜库来实现美颜、滤镜等功能,但第三方库的美颜功能输入数据要求是camera的原始数据(YUV 数据)。...在摄像机的预览回调onPreviewFrame()中,获取到 NV21 格式的视频数据,然后将 NV21 格式转码为 I420 格式,再使用 sendCustomVideoData 向SDK填充您采集和处理后的...参数说明 参数 类型 说明 buffer byte[] 视频数据 bufferType int 视频格式.目前只支持 TXLivePusher.YUV_420P w int 视频图像的宽度 h int...camera2在获取摄像机预览宽高前,请先检测手机支持的分辨率,如果指定分辨率与支持的分辨率不一致,会获取到比指定分辨率小的画面,sendCustomVideoData时要以实际预览画面的宽高为准。...使用LivePushConfig.setVideoResolution设置推流分辨率,目前 sendCustomVideoData 只支持推 640x360(360P)、360x640、960x540(

    5K102

    Android平台轻量级RTSP服务模块编码前后数据源对接探究

    轻量级RTSP服务,适用于内网环境下,对并发要求不高的场景,支持H.264/H.265,支持RTSP鉴权、单播、组播模式,考虑到单个服务承载能力,我们支持同时创建多个RTSP服务,并支持获取当前RTSP...bit-rate)设置;支持软编码、特定机型硬编码;支持横屏、竖屏采集;支持Android屏幕采集;支持RTSP端口设置;支持RTSP鉴权用户名、密码设置;支持获取当前RTSP服务会话连接数;支持Android...转I420并旋转接口这个接口也是主要用于特定的数据类型对接,NV21的数据,直接转I420后,对接即可,接口参数比较简单,不再赘述。.../** * NV21转换到I420并旋转 * * @param src: nv21 data * * @param dst: 输出I420 data * * @param width: 图像宽 * *...格式/** * 投递层NV21图像 * * @param index: 层索引, 必须大于等于0 * * @param left: 层叠加的左上角坐标, 对于第0层的话传0 * * @param top

    27930

    【Android RTMP】Android Camera 视频数据采集预览 ( NV21 图像格式 | I420 图像格式 | NV21 与 I420 格式对比 | NV21 转 I420 算法 )

    接收格式 : x264 开源库的输入数据类型必须是 I420 格式 , 这里就涉及到了将 Camera 采集的 NV21 格式的数据 , 转为 x264 开源库需要的 I420 格式的数据 ; 3 ...., y13, y14 使用的是 v3 , u3 色彩数据 ; 灰度数据 y11, y12, y15, y16 使用的是 v4 , u5 色彩数据 ; 三、 I420 数据格式 ---- I420 图像格式数据排列..., y13, y14 使用的是 v3 , u3 色彩数据 ; 灰度数据 y11, y12, y15, y16 使用的是 v4 , u5 色彩数据 ; 四、 NV21 格式与 I420 格式对比 ----...色彩值的排列方式不一样 , NV21图像转为 I420 图像 , 只需要将 NV21 格式图像交替排列的 UV 数据 , 按照 I420 格式图像的先 U 后 V 的顺序重新进行排列即可完成图像格式转换..., V 数据 ; 将 NV21 数据中的 V 数据 , 和 U 数据分别拷贝出来的方式时 , 读取 Y 数据完毕后 , 取下一个数据就是 V 数据 , 放入 V 数组 , 再取下一个数据就是 U 数据

    96310

    【Android RTMP】x264 图像数据编码 ( NV21 格式中的 YUV 数据排列 | Y 灰度数据拷贝 | U 色彩值数据拷贝 | V 饱和度数据拷贝 | 图像编码操作 )

    文章目录 一、 NV21 图像数据中的 YUV 数据简介 二、向 x264 编码图片 三、 提取 NV21 数据中的灰度数据 Y 四、 提取 NV21 数据中的饱和度数据 U 和 色彩值数据 V 五、...图像编码操作 六、 x264 视频数据编码代码示例 一、 NV21 图像数据中的 YUV 数据简介 ---- Camera 采集的数据是 NV21 格式的 ; NV21 是 YUV 格式中的一种 , Y...图像格式 | I420 图像格式 | NV21 与 I420 格式对比 | NV21 转 I420 算法 ) 博客中详细介绍了 NV21 数据中的 YUV 数据格式 ; 二、向 x264 编码图片 -...--- 1 . x264 编码图片引入 : x264 编码器对图像数据进行编码 , 要先将 NV21 的图像数据中的 YUV 数据分别存储到 x264 编码图片中 ; 2 . x264_picture_t...x264_image_t img; // ... } x264_picture_t; 3 . x264 编码图片使用 : ① 声明 x264_picture_t 指针变量 : C++ 堆内存中的对象必须使用指针接收

    1.4K10

    FFmpeg 播放器视频渲染优化

    视频渲染优化 前文中,我们都是将解码的视频帧通过 swscale 库转换为 RGBA 格式,然后在送给 OpenGL 渲染,而视频帧通常的格式是 YUV420P/YUV420SP ,所以大部分情况下都需要...当视频尺寸比较大时,再用 swscale 进行格式转化的话,就会存在性能瓶颈,所以本文将 YUV 到 RGBA 的格式转换放到 shader 里,用 GPU 来实现格式转换,提升渲染效率。 ?...YUV 转 RGB 本文视频渲染优化,实质上是对 OpenGLRender 视频渲染器进行改进,使其支持 YUV420P 、 NV21 以及 NV12 这些常用格式图像的渲染。...我们在前文一文掌握 YUV 的图像的基本处理中知道,YUV420P 格式的图像在内存中有 3 个平面,YUV420SP (NV21、NV12)格式的图像在内存中有 2 个平面,而 RGBA 格式的图像只有一个平面...格式的图像需要用到 3 个纹理,渲染 YUV420SP 格式的图像只需用到 2 个纹理即可,而渲染 RGBA 格式图像只需一个纹理。

    3.2K30

    PHPGD库如何使用SVG格式进行图像处理

    PHPGD库如何使用SVG格式进行图像处理SVG是可缩放矢量图形(Scalable Vector Graphics)的缩写,是一种基于XML的开放标准矢量图形文件格式,支持图像的无损放大和缩小,同时还可以用...PHP GD库是PHP中一种常用的图像处理库,它支持各种常见的位图格式(如JPEG、PNG等)和少数矢量图形格式(如PDF),但不支持SVG格式。...可以使用成熟的SVG转PNG的库来完成这个过程,例如ImageMagick,但是这样会浪费服务器资源,因为需要在转换图像格式时重新生成一张图片。...在使用PHP GD库对PNG格式的图片进行图像处理时,就像使用任何其他支持的格式一样,可以使用GD库中提供的函数绘制、剪切、改变大小、旋转、加水印、合并等操作。...,而使用PHP GD库处理图像时,SVG格式的使用会使图像处理更加优雅、高效和灵活。

    38720

    Android平台GB28181设备接入模块如何对接NV21、YV12、RGB、YUV等外部数据

    技术背景我们在对接Android平台GB28181设备接入模块的开发者时,遇到这样的场景,除了Android设备(如执法记录仪、智能安全帽等)自带的camera或camera2前后摄像头数据外,还有些场景是需要外部编码前或编码后数据...YUV数据接口支持标准的I420数据接口对接,不再赘述:/** * 投递层I420图像 * * @param index: 层索引, 必须大于等于0 * * @param left: 层叠加的左上角坐标...NV21转I420并旋转接口这个接口也是主要用于特定的数据类型对接,NV21的数据,直接转I420后,对接即可,接口参数比较简单,不再赘述。.../** * NV21转换到I420并旋转 * * @param src: nv21 data * * @param dst: 输出I420 data * * @param width: 图像宽 * *...针对NV12、NV21格式/** * 投递层NV21图像 * * @param index: 层索引, 必须大于等于0 * * @param left: 层叠加的左上角坐标, 对于第0层的话传0 * *

    32960

    音视频知识体系(基础篇3)----图像颜色空间

    使用这种方式表示彩色图像的方式为RGB颜色空间。RGB颜色空间常用于显示器系统。通过这种形式表示的图像,每个像素的每一个颜色分量用1个字节表示,则可以表示256×256×256种不同的颜色。...在常见的图像格式中,如位图(bmp)格式以RGB形式保存数据。 RGB 颜色空间可以看作是三维直角颜色坐标系中的一个正立方体。如上右图所示。...但在现今,YUV通常已经在电脑系统上广泛使用。...除了上面两种,还有两种4:2:0,NV12和NV21,这两种是比较特殊的存储格式,是planar和packed混合存储的,分别看下 NV12 该格式是先存储全部的Y分量,然后UV分量交叉存储,用图像表示下...:(参考) 4202.png NV21 该格式与NV21的区别和上面YU12/YV12一样,唯一的区别只是UV分量交叉的顺序不同,NV12是U排前面,NV21是V排前面,用图像表示如下: 4203.png

    1.9K100

    Android二维码扫描开发(二):YUV图像格式详解

    其中从相机里获取到的数据是NV21格式的,NV21属于YUV图像,当然有些外置摄像头会返回其他YUV格式的数据,那么我们就来看一看,到底什么是YUV图像。...NV21和NV12,这两种格式都属于YUV420SP图像,Y连续存储,然后是交错的UV,二者区别是,NV21是V在U前,NV12是U在V前。...[YUV图像处理] ①YUV422和YUV420之间的转换 YUV422转YUV420,需要在垂直方向上隔行采样,只保留奇数行或偶数行的UV数据。...②YUV转RGB YUV和RGB的计算方法,用矩阵公式表示的话,如下图所示: 如果用算数公式表示的话如下所示: RGB转YUV: Y = 0.299 R + 0.587 G + 0.114 B U =...YUV图像就先讲解到这里,下一篇我将对YUV图像和RGB图像的亮度计算,以及zxing的使用方法进行介绍。

    2K100

    面试官:请使用 OpenGL ES 将 RGB 图像转换为 YUV 格式。我 ……

    针对这位读者大人的疑惑,今天专门写文章介绍一下如何使用 OpenGL 实现 RGB 到 YUV 的图像格式转换,帮助读者大人化解此类问题。...OpenGL 实现 RGB 转 YUV 好处 使用 shader 实现 RGB 到 YUV 的图像格式转换有什么使用场景呢?在生产环境中使用极为普遍。...以渲染 NV21 格式的图像为例,下面是 (4x4) NV21 图像的 YUV 排布: (0 ~ 3) Y00 Y01 Y02 Y03 (4 ~ 7) Y10 Y11 Y12 Y13...关于 shader 实现 YUV 转 RGB (NV21、NV12、I420 格式图像渲染)可以参考文章:OpenGL ES 3.0 开发(三):YUV 渲染 和 FFmpeg 播放器视频渲染优化,本文主要重点讲...转换成 YUYV 时数据量减半,那么 glViewPort 时 width 变为原来的一半,同样 glReadPixels 时 width 也变为原来的一半。

    5.3K41
    领券