投屏功能接入

智能视频SDK VideoCreatingSDK

  • 智能视频SDK开发者个人信息保护合规指引
  • 智能视频SDK隐私政策
  • 功能发布记录
  • 播放器SDK
    • SDK&Demo下载
    • 产品简介与下载
    • ios播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 功能列表
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Unity播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • uniapp播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 快速进阶
    • HarmonyOS NEXT
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • Andriod播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Web 播放器
      • license指引
      • 简介
      • 使用指南
      • 版本更新记录
      • 开发指南
      • 接口速查
        • 事件响应接口
        • 控制接口
  • 图片加载SDK
    • SDK&Demo下载
    • SDK集成
    • 快速开始
    • 版本更新记录
    • 接口速查
    • 产品简介
    • 快速进阶
  • 短视频SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • 能力限制
      • DEMO体验
      • SDK下载
    • 使用指南
      • License申请
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 录制
        • 编辑
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • IOS版本开发接入文档
      • 视频指导
        • 视频指南
      • Android开发说明
        • 录制
        • Android版本开发接入文档
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • 概述
  • 移动直播SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • demo体验
      • SDK下载
    • 使用指南
      • 接入教程
      • License申请
      • License续费
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 互动直播
        • 特效直播
        • 拉流
        • IOS接入概述
        • 超低延迟直播
        • 直播推流
      • Android开发说明
        • 超低延时直播
        • 互动直播
        • 普通直播
        • 特效直播
        • 拉流
        • Android接入概述
        • 推流参数配置
所有文档
menu
没有找到结果,请重新输入

智能视频SDK VideoCreatingSDK

  • 智能视频SDK开发者个人信息保护合规指引
  • 智能视频SDK隐私政策
  • 功能发布记录
  • 播放器SDK
    • SDK&Demo下载
    • 产品简介与下载
    • ios播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 功能列表
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Unity播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • uniapp播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 快速进阶
    • HarmonyOS NEXT
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • Andriod播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Web 播放器
      • license指引
      • 简介
      • 使用指南
      • 版本更新记录
      • 开发指南
      • 接口速查
        • 事件响应接口
        • 控制接口
  • 图片加载SDK
    • SDK&Demo下载
    • SDK集成
    • 快速开始
    • 版本更新记录
    • 接口速查
    • 产品简介
    • 快速进阶
  • 短视频SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • 能力限制
      • DEMO体验
      • SDK下载
    • 使用指南
      • License申请
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 录制
        • 编辑
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • IOS版本开发接入文档
      • 视频指导
        • 视频指南
      • Android开发说明
        • 录制
        • Android版本开发接入文档
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • 概述
  • 移动直播SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • demo体验
      • SDK下载
    • 使用指南
      • 接入教程
      • License申请
      • License续费
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 互动直播
        • 特效直播
        • 拉流
        • IOS接入概述
        • 超低延迟直播
        • 直播推流
      • Android开发说明
        • 超低延时直播
        • 互动直播
        • 普通直播
        • 特效直播
        • 拉流
        • Android接入概述
        • 推流参数配置
  • 文档中心
  • arrow
  • 智能视频SDKVideoCreatingSDK
  • arrow
  • 播放器SDK
  • arrow
  • Andriod播放器
  • arrow
  • 高级版功能接入
  • arrow
  • 投屏功能接入
本页目录
  • 接入准备
  • 功能介绍
  • 快速开始
  • 接口说明
  • ProjectionEngine类
  • DeviceUpnp类

投屏功能接入

更新时间:2025-08-22

接入准备

接入投屏功能,需要使用播放器SDK高级版,并申请高级版License。

功能介绍

在高级版SDK中,提供了DLNA投屏能力,可以将手机端的视频内容推送到大屏端进行播放,并且支持在手机端远程控制大屏端的媒体播放,该能力由ProjectionWrapper组件提供,请确保该组件已集成到你的App中。

快速开始

1.初始化ProjectionEngine组件,传入LicenseID和设备发现回调

Java
1// 需要传入您申请的高级版证书LicenseID,ID可以在百度智能云控制台查看
2ProjectionEngine.setLicenseID(BaseApp.APP_ID);
3// 设备发现回调,可以在这里将发现到的接收端信息保存起来
4private ArrayList<DeviceUpnp> mCastReceivers = new ArrayList<>();
5private DeviceUpnp.Devicelistener upnpListenerImp = new  DeviceUpnp.Devicelistener() {
6
7    @Override
8    public void OnAddDevice(DeviceUpnp device) {
9        Log.d(TAG, "onAddDevice " + device.getUuid());
10        mCastReceivers.add(device);
11    }
12
13    @Override
14    public void OnRemoveDevice(DeviceUpnp device) {
15
16    }
17};
18ProjectionEngine.getInstance().setUpnpDeviceServerListener(getContext(), upnpListenerImp);

2.开始搜索投屏设备,当找到设备时,会利用上面的回调进行通知

Java
1ProjectionEngine.getInstance().searchDeviceBegin();

3.选择设备并发起投屏

Java
1// 创建渲染控制器回调,当投屏开始后,会通知接收端的状态变化
2private ProjectionRenderListenerImp projectionRenderListenerImp = new ProjectionRenderListenerImp();
3class ProjectionRenderListenerImp  implements ProjectionRender.ProjectionRenderListener {
4    @Override
5    public void onSetAVTransportURI(int renderId, boolean result) {
6        Log.i(TAG, "ProjectionRender onSetAVTransportURI " + renderId + ", result: " + result);
7    }
8
9    @Override
10    public void onPaused(int renderId, boolean result) {
11        Log.i(TAG, "ProjectionRender onPaused " + renderId + ", result " + result);
12    }
13
14    public ProjectionRenderListenerImp() {
15    }
16
17    @Override
18    public void onDuration(int renderId, final Integer duration) {
19        Log.i(TAG, "ProjectionRender onDuration " + renderId + ", duration " + duration);
20    }
21
22    @Override
23    public void onCurrent(int renderId, final Integer current) {
24        Log.i(TAG, "ProjectionRender onCurrentPosition " + renderId + ", position " + current);
25    }
26
27    @Override
28    public void onPlayed(int renderId, boolean result) {
29        Log.i(TAG, "ProjectionRender onPlayed " + renderId + ", result " + result);
30    }
31
32    @Override
33    public void onStoped(int renderId, boolean result) {
34        Log.i(TAG, "ProjectionRender onStoped " + renderId + ", result " + result);
35    }
36}
37// 从之前保存的接收端信息中选出一个作为发起投屏的目标
38DeviceUpnp device = mCastReceivers.get(position);
39private int mCastReceiverIdx = -1;
40if (null != device) {
41    // 分配渲染控制器, mCastReceiverIdx作为渲染控制器标识,后续的媒体播放控制都基于它完成
42    mCastReceiverIdx = ProjectionEngine.getInstance().distributeProjectionRender(device, projectionRenderListenerImp);
43    // 设置接收端要播放的媒体url
44    ProjectionEngine.getInstance().setAVTransportURL(mCastReceiverIdx, url);
45    // 开始播放
46    ProjectionEngine.getInstance().play(mCastReceiverIdx, 1);
47}

4.控制接收端的媒体播放

Java
1// 播放
2ProjectionEngine.getInstance().play(mCastReceiverIdx, 1);
3// 暂停
4ProjectionEngine.getInstance().pause(mCastReceiverIdx);
5// seek, 单位为秒
6ProjectionEngine.getInstance().seek(mCastReceiverIdx, 30);
7// 停止
8ProjectionEngine.getInstance().stop(mCastReceiverIdx);

5.停止搜索设备

Java
1ProjectionEngine.getInstance().searchDeviceEnd();

6.结束投屏并释放渲染控制器

Java
1ProjectionEngine.getInstance().stop(mCastReceiverIdx);
2ProjectionEngine.getInstance().releaseProjectionRender(mCastReceiverIdx);

在播放器SDK Demo中的AdvancedMediaController类对上述流程有详细的展示,可以参考。

接口说明

ProjectionEngine类

接口名 描述
ProjectionEngine getInstance() 获取投屏引擎单例
void setLicenseID(String id) 传入LicenseID
String getVersion() 获取投屏引擎版本号
void setUpnpDeviceServerListener(Context context, DeviceUpnp.Devicelistener upnpListener) 设置设备发现回调
void searchDeviceBegin() 开始搜索设备,鉴权失败的情况下会抛出异常
void searchDeviceEnd() 停止搜索设备
int distributeProjectionRender(DeviceUpnp device, ProjectionRender.ProjectionRenderListener renderListener) 分配渲染控制器,返回值作为渲染控制器标识
void releaseProjectionRender(Integer renderIndex) 释放渲染控制器
void setAVTransportURL(Integer renderIndex, String url) 设置接收端播放的URL
void play(Integer renderIndex, Integer speed) 开始接收端播放,当前speed仅支持传入1
void pause(Integer renderIndex) 暂停接收端播放
void stop(Integer renderIndex) 停止接收端播放
void seek(Integer renderIndex, Integer realTime) 控制接收端进度seek,单位为秒
Integer getDuration(Integer renderIndex) 获取媒体流时长
Integer getCurPos(Integer renderIndex) 获取当前播放位置

DeviceUpnp类

接口名 描述
String getUuid() 获取接收端设备ID
String getFriendlName() 获取接收端设备名

事件回调 含义
void OnAddDevice(DeviceUpnp device) 发现设备
void OnRemoveDevice(DeviceUpnp device) 移除设备

上一篇
绿幕抠图功能接入
下一篇
全景声功能接入