特效直播

智能视频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
  • 开发指南
  • arrow
  • Android开发说明
  • arrow
  • 特效直播
本页目录
  • 1.1 AR直播实现流程
  • 1.2 AR推流器初始化
  • 1.3 直播创建与销毁
  • 1.4 直播状态控制
  • 1.5 推流体验优化及其它
  • 1.6 推流器(协议)选择

特效直播

更新时间:2025-08-22

ARMediaStreamingPusher类控制AR直播推流的执行。内部封装这一套完整的音视频编码,打包,上传等功能。
其中AR直播管理类包含通用推流接口、及AR控制接口两部分。

1.1 AR直播实现流程

整个推流流程涉及的调用包括:AR推流器初始化、直播创建与销毁、直播状态控制、拍摄器与AR设置、及推流体验优化及状态访问五部分。

AR 直播关键步骤示例,具体可参考demo工程AnchorARActivity.java文件。

Plain Text
1// 初始化AR直播推流器
2mSession = new ARMediaStreamingPusher(this, mGlSurfaceView, liveConfig);
3// 设置直播事件监听
4mSession.setLiveEventListener(this);
5
6// 初始化音视频采集设备
7mSession.setupDevice(mOnCaptureReadyCallback);
8// 配置推流地址、创建推流通道
9mSession.configRtmpSession(mPushUrl);
10// 在拍摄器就绪(onVideoCaptureReady)且推流通道连接后开始推流
11public void onSessionConnected() {
12    ... ...
13if (mIsVideoCaptureReady && mIsLiveConnected) {
14        // 开始推流
15       mSession.startStreaming();
16   }
17}
18    ... ...
19// 退出直播 释放直播通道
20// 停止推流
21mSession.stopStreaming(); 
22// 销毁推流通道
23mSession.destroyRtmpSession();
24// 释放音视频采集设备
25mSession.releaseDevice();

1.2 AR推流器初始化

配置推流参数

Plain Text
1LiveConfig.Builder builder = new LiveConfig.Builder();
2builder.setCameraId(Camera.CameraInfo.CAMERA_FACING_FRONT) // 设置前置相机
3        .setCameraOrientation(90) // 设置相机旋转角度
4        .setVideoWidth(mWidth) // 设置视频采集与输出宽度(像素)
5        .setVideoHeight(mHeight) // 设置视频采集与输出高度(像素)
6        .setOrientation(mOrientation) // 设置屏幕方向
7        .setVideoFPS(mFps) // 设置视频采集与输出帧率
8        .setInitVideoBitrate(mBitrate) // 设置视频码率初始比特率
9        .setQosEnabled(mEnableAutoBitrate) // 设置是否开启码率自适应
10        .setMaxVideoBitrate(mMaxBitrate) // 设置码率自适应最大比特率
11        .setMinVideoBitrate(mMinBitrate) // 设置码率自适应最小比特率
12        .setVideoEnabled(true) // 设置是否推视频流
13        .setAudioEnabled(true) // 设置是否推音频流
14        .setAudioSampleRate(44100) // 设置音频采样率
15        .setAudioBitrate(64000); // 设置音频比特率
16
17builder.setPicStreamingEnabled(true); // 使能后台推流
18if (mOrientation == LiveConfig.PORTRAIT) {
19    builder.setPausePicPath("pause_streaming_portrait"); // 设置竖向暂停图片
20} else {
21    builder.setPausePicPath("pause_streaming_land"); // 设置横向暂停图片
22}

初始化AR直播推流器

Plain Text
1/**
2 * AR媒体推流器构造函数
3 * @param context 上下文环境
4 * @param surfaceView 本地预览视窗
5 * @param liveConfig 推流配置
6 */
7public ARMediaStreamingPusher(Context context, GLSurfaceView surfaceView, LiveConfig liveConfig)

注:AR 推流器使用GLSurfaceView 作用本地预览控件

设置直播事件监听

Plain Text
1// 直播事件监听
2public interface OnLiveEventListener {
3    /**
4     * 直播通道已经建立
5     */
6    void onSessionConnected();
7    /**
8     * 直播过程中出错
9      *
10     * @param errorCode 错误码
11     */
12    void onError(int errorCode);
13}
14
15// 错误码定义:
16public interface BidirectRtmpEventListener {
17    int ErrorCodeBase = -10000;
18    //与服务器建立rtmp连接过程出错
19    int ErrorCodeConnectToServerFailed = -10000;
20// 创建rtmp推流通道出错
21    int ErrorCodePulishStreamFailed = -20000;
22    //Disconnect过程中出错
23    int ErrorCodeDisconnectFromServerFailed = -30000;
24    // 推流过程中,遇到未知错误导致推流失败
25    int ErrorCodeUnknownStreamingError = -60000;
26    /**
27     * 推流过程中,遇到弱网情况导致推流失败
28     * 收到此错误后,建议提示用户当前网络不稳定,
29     * 如果反复收到此错误码,建议调用停止推流
30     */
31    int ErrorCodeWeakConnection = -70000;
32    // Try again 重试
33    int ErrorCodeWeakConnection_EAGAIN = -70011;
34    // No buffer space available 没有可用的缓存空间
35    int ErrorCodeWeakConnection_ENOBUFS = -70105;
36    // Interrupted system call 中断的系统调用
37    int ErrorCodeWeakConnection_EINTR = -70004;
38    // Connection timed out 连接超时
39    int ErrorCodeWeakConnection_ETIMEDOUT = -70110;
40    /**
41     * 推流过程中,遇到服务器网络错误导致推流失败
42     * 收到此错误后,建议调用立即停止推流,并在服务恢复后再重新推流
43     */
44    int ErrorCodeServerNetworkError = -80000;
45    // Connection reset by peer 连接被对方复位
46    int ErrorCodeServerNetworkError_ECONNRESET = -80104;
47    /**
48     * 推流过程中,遇到设备断网导致推流失败,
49     * 收到此错误后,建议提示用户检查网络连接,然后立即停止推流
50     */
51    int ErrorCodeLocalNetworkError = -90000;
52    // Broken pipe 管道破裂
53    int ErrorCodeLocalNetworkError_EPIPE = -90032;
54    // Bad file number 错误文件编号
55    int ErrorCodeLocalNetworkError_EBADF = -90009;
56    // Network is down 网络已关闭
57    int ErrorCodeLocalNetworkError_ENETDOWN = -90100;
58    // Network is unreachable 网络不可达
59    int ErrorCodeLocalNetworkError_ENETUNREACH = -90101;
60    // License 失效
61    int ErrorCodeLicenseInvalid = -100000;
62                   ... ...
63}
64
65// 设置直播事件监听
66public void setLiveEventListener(OnLiveEventListener listener)

1.3 直播创建与销毁

初始化音视频采集设备

Plain Text
1/**
2 * 拍摄器初始化回调
3 */
4public interface OnCaptureStateListener {
5    //拍摄头尺寸变化
6    void onCameraSizeChange(int width, int height);
7
8   // 摄像头开启状态
9    void onCameraOpenResult(boolean var1);
10
11   // 拍摄器就绪回调接口
12    void onVideoCaptureReady(boolean success);
13}
14
15// 初始化音视频采集设备
16public void setupDevice(VideoCaptureSession.OnCaptureStateListener callback)

配置推流地址、创建推流通道

Plain Text
1/**
2 * 创建rtmp推流通道
3 * @param pushUrl 推流地址
4 * @return 推流通道创建是否成功
5 */
6public boolean configRtmpSession(String pushUrl)

销毁直播通道

Plain Text
1// 销毁推流通道
2public void destroyRtmpSession()

释放媒体采集设备

Plain Text
1// 释放音视频采集设备
2public void releaseDevice()

1.4 直播状态控制

开始推流

Plain Text
1// 启动音视频编码 开始推流
2public void startStreaming()

暂停推流

Plain Text
1// 暂停推流, 如配置使能后台推流则开启图片推流否则暂停推流
2public void pauseStreaming()

注:如使能了后台推流,则调用该接口进行图片推流,否则暂停音视频推流。

恢复推流

Plain Text
1//恢复推流
2public void resumeStreaming()

注:若如使能后台推流则停止图片推流恢复正常推流

结束推流

Plain Text
1//关闭音视频编码器、结束推流
2public void stopStreaming()

1.5 推流体验优化及其它

推流重连

Plain Text
1// 推流重连
2public void sessionReconnect()
3
4示例: 在推流事件监听错误回调里根据错误类型发起推流重连。
5public void onError(int errorCode) {
6                ... ...
7    // 非直播授权失效异常下发起外部重连
8    if (errorCode != BidirectRtmpEventListener.ErrorCodeLicenseInvalid) {
9        mSession.sessionReconnect();
10    }
11}

配置推流水印

Plain Text
1WaterMarkConfig waterMarkConfig = new WaterMarkConfig("baidu_watermark", 100, 100, 0.04f, 0.98f);
2mSession.setWaterMarkConfig(waterMarkConfig);

背景音乐
推流状态开启/关闭背景音乐,相关接口:

Plain Text
1/**
2 * 开始播放背景音乐
3 * @param bgmPath 背景音乐本地路径
4 * @param isLooping 是否循环播放
5 */ 
6public void startBGM(String bgmPath, boolean isLooping)
7
8/**
9 * 选择背景音乐区间, 默认从0 播放整首音乐
10 *
11 * @param clipStartInUSec    微秒
12 * @param clipDurationInUSec 微秒
13 */
14private void configBGMClip(long clipStartInUSec, long clipDurationInUSec) 
15
16/**
17 * 设置本地mic采集音量的大小,默认是 1f
18 *
19 * @param gain 范围在 0f 到 1f 之间
20 */
21public void setRecordTrackGain(float gain)
22
23/**
24 * 设置背景音量的大小,默认是 1f
25 *
26 * @param gain 范围在 0f 到 1f 之间
27 */
28public void setBGMTrackGain(float gain)
29
30// 暂停播放背景音乐
31public void pauseBGM()
32
33// 恢复背景音乐播放
34public void resumeBGM()
35
36// 停止播放背景音乐
37public void stopBGM()

音视频源外部采集
直播SDK支持从外部导入音视频数据源,使用外部采集首先须使能音视频外部采集,然后分别使用如下接口开启视频外部采集、更新外部视频纹理(当前仅支持视频纹理输入方式)、更新音频数据(pcm 格式)。

Plain Text
1/**
2 * 开始外部视频采集, 有外部渲染控制
3 * @param eglContext 外部视频渲染EglContext, sdk内部依赖eglconect 获理视频纹理
4* @note 该接口一般在外部渲染器创建成功回调函数里调用
5 */
6@Override
7public void startExtVideoDevice(EGLContext eglContext)
8
9/**
10 * 外部纹理更新导入接口
11 * @param textureId 外部视频纹理id
12 * @param width 预览视频宽度
13 * @param height 预览视频高度
14 */
15public void onExtTextureUpdate(int textureId, int width, int height)
16
17/**
18 * 外部音频pcm 数据导入接口
19 * @param bufferData 音频pcm数据
20 * @param bufferInfo 音频数据信息
21 */
22public void onExtAudioFrameUpdate(ByteBuffer bufferData, MediaCodec.BufferInfo bufferInfo)

媒体采集数据回调
推流器支持将内部采集的音频数据(pcm)及视频数据(yuv nv21 / textureId)对外输出。

静音推流
推流过程关闭/开启音频流

Plain Text
1/**
2 * 是否静音推流
3 * @param isMute 是否静音
4 */
5public void setMuteAudio(boolean isMute)

获取推流帧率

Plain Text
1// 获取视频上传帧率
2public double getUploadFps()

获取推流码率

Plain Text
1// 获取媒体发送码率
2public double getUploadBindwidthInKBps()

获取推流缓冲区水位

Plain Text
1// 获取推流缓冲区百分比
2public double getPacketCacheRate()

1.6 推流器(协议)选择

Rmtp推流器:ARMediaStreamingPusher

SRT推流器:SrtMediaStreamingPusher

SRT + AR推流器:ARSrtMediaStreamingPusher

上一篇
普通直播
下一篇
拉流