前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 移动直播(LiteAV)直播播放如何获取YUV数据

Android 移动直播(LiteAV)直播播放如何获取YUV数据

原创
作者头像
腾讯云-yyuanchen
修改2019-09-30 11:43:14
1.5K1
修改2019-09-30 11:43:14
举报

场景

开发者因为场景需要,希望能获取到视频画面的原始数据(YUV 数据),然后再进行处理或渲染。

解决方案

1、实现 TXLivePushListener 接口,然后在onPlayEvent(int event, Bundle param) 方法中,监听TXLiveConstants.PLAY_EVT_CHANGE_RESOLUTION 事件

代码语言:txt
复制
mLivePusher.setPushListener(this);

public void onPlayEvent(int event, Bundle param) {
    //...
    if (event == TXLiveConstants.PLAY_EVT_CHANGE_RESOLUTION) {
        //获取视频的宽高
        int width = param.getInt(TXLiveConstants.EVT_PARAM1, 0);
        int height = param.getInt(TXLiveConstants.EVT_PARAM2, 0);
        if (width != 0 && height != 0 && !mHWDecode) {
            //创建存储 yuv 数据的 buffer,目前输出的 yuv 格式为 I420
            byte[] buf = new byte[width * height * 3 / 2];
            //将 buffer 设置进 mLivePlaye
            mLivePlayer.addVideoRawData(buf);
        }
    }
}

2、通过 VideoRawDataListener 获取 YUV 数据

代码语言:txt
复制
mLivePlayer.setVideoRawDataListener(rawDataListener);

TXVideoRawDataObserver.ITXVideoRawDataListener rawDataListener = new
TXVideoRawDataObserver.ITXVideoRawDataListener() {
    @Override
    public void onVideoRawDataAvailable(byte[] buf, int width, int height, int timestamp) {
        //解码一帧后的数据回调,buf 中存放了 yuv 数据,格式为 I420
        if (!mHWDecode) {
            // 如果需要继续获取yuv数据,需要重新调用addVideoRawData方法
            // yuvBuffer大小应该等于视频width*height*3/2
            mLivePlayer.addVideoRawData(buf);
        }
    }
};

原理

软件解码是由CPU负责解码,然后进行播放。这种方式解码出来的画面数据格式是 YUV 数据。而硬件解码是使用显卡进行解码,需要使用 OpenGL进行解码,所以解码出来的画面数据格式 Texture。

注意事项

1、setVideoRawDataListener只支持软件解码。

2、只能获取直播场景下的 YUV 数据,不支持点播场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
  • 解决方案
  • 原理
  • 注意事项
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档