zoukankan      html  css  js  c++  java
  • 视频流媒体播放器EasyPlayerRTSP硬解码后如何设置YUV渲染格式?

    YUV主要用于优化彩色视频信号的传输。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。因此我们在编译视频流媒体播放器EasyPlayer-RTSP时,使用的大多是YUV渲染方式。

    前文我们说过EasyPlayer-RTSP是怎样渲染画面的,本文讲一下在流媒体播放器EasyPlayer-RTSP硬解码后获得的YUV格式应该如何设置。

    不同的Android设备,MediaCodec解码得到的YUV格式不相同,且由于各种格式繁杂,很难写出高效的格式转换方法。统计发现市面上Android设备MediaCodec解码得到的不同YUV格式所占的比例,表格中显示出格式之繁多,且以
    COLOR_QCOM_FormatYUV420SemiPlanar32m,
    OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka和
    COLOR_FormatYUV420SemiPlanar占据绝大多数。

    通用方法:

    MediaCodec不仅在编码,而且在解码是也能够指定帧格式。能够指定的原因是,解码得到的帧的格式,并不是由如H.264编码的视频文件提前确定的,而是由解码器确定的,解码器支持哪些帧格式,就可以解码出哪些格式的帧。

    得益于API 21加入的COLOR_FormatYUV420Flexible格式,MediaCodec的所有硬件解码都支持这种格式。但这样解码后得到的YUV420的具体格式又会因设备而异,如YUV420Planar,YUV420SemiPlanar,YUV420PackedSemiPlanar等。

    简述COLOR_FormatYUV420Flexible

    YUV420Flexible并不是一种确定的YUV420格式,而是包含COLOR_FormatYUV411Planar, COLOR_FormatYUV411PackedPlanar,
    COLOR_FormatYUV420Planar, COLOR_FormatYUV420PackedPlanar,
    COLOR_FormatYUV420SemiPlanar和COLOR_FormatYUV420PackedSemiPlanar。在API 21引入YUV420Flexible的同时,它所包含的这些格式都deprecated掉了。

    只要解码器支持YUV420Flexible中的任意一种格式,就会被认为支持YUV420Flexible格式。也就是说,几乎所有的解码器都支持YUV420Flexible代表的格式中的一种或几种。

    最终方案

    硬解码时指定解码后的帧格式:
    format.setInteger(MediaFormat.KEY_COLOR_FORMAT, COLOR_FormatYUV420Flexible)。

  • 相关阅读:
    ActiveMQ (一) 简介
    MSMQ .NET下的应用
    MSMQ
    RabbitMq C# .net 教程
    Rabbit MQ
    Dynamics 365—脚本
    DNS服务器地址汇总
    特殊字符 编码
    4s前置摄像头调用
    登陆前后导航栏处理 2015-12-12
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/13156324.html
Copyright © 2011-2022 走看看