You need to enable JavaScript to run this app.
文档中心
视频直播

视频直播

复制全文
下载 pdf
React Native
进阶功能
复制全文
下载 pdf
进阶功能

本章节为您介绍推流 SDK 进阶功能的接入方式,支持的进阶功能包括但不限于 QUIC 协议推流、多 URL 推流、H.265 硬件编码等。您可以根据实际业务需求,借助推流 SDK 实现更复杂的功能。

前提条件

  • 已完成基础功能接入。详见基础功能
  • 如需使用 H.265 硬编和软编功能,确保使用高级版或试用版 License。

    注意

    试用版 License 仅用于项目测试,不支持续签。过期的试用版 License 会导致鉴权失败,进而中断服务。请在项目上线前升级为正式版 License。详见升级试用版 License 为基础版或高级版 License

注意事项

真机调试:由于 SDK 使用了大量的音视频接口,这些接口在仿真模拟器下可能会出现异常,推荐您使用真机进行代码调试。

功能接入

RTMPS 协议推流

视频直播推流 SDK 支持 RTMPS 协议推流。

  1. 使用视频直播控制台的地址生成器,生成 RTMP 推流地址。

  2. 修改推流地址协议,将 RTMP 推流地址中的 rtmp 协议修改为 rtmps。例如:

    • 获取的 RTMP 地址为:rtmp://example.push/stream
    • 修改后的 RTMPS 地址为:rtmps://example.push/stream
    mLivePusher.startPush('rtmps://example.push/stream'); //添加 RTMPS 协议推流地址
    
  3. (可选)配置自定降级。代码示例如下所示:

    说明

    配置自动降级后,RTMPS 推流失败时,推流 SDK 将自动降级到 RTMP 推流。使用此功能需同时设置 RTMPS 和 RTMP 推流地址。

    const urls = [];
    urls.push('rtmps://example.push/stream'); // 添加 RTMPS 协议推流地址
    urls.push('rtmp://example.push/stream'); // 添加 RTMP 协议推流降级地址
    mLivePusher.startPushWithUrls(urls);
    

QUIC 协议推流

视频直播推流 SDK 支持 QUIC 协议推流。

  1. 使用视频直播控制台的地址生成器,生成 RTMP 推流地址。

  2. 修改推流地址协议,将 RTMP 推流地址中的 rtmp 协议修改为 rtmpq。例如:

    • 获取的 RTMP 地址为:rtmp://example.push/stream
    • 修改后的 QUIC 地址为:rtmpq://example.push/stream
    mLivePusher.startPush('rtmpq://example.push/stream'); //添加 QUIC 协议推流地址
    

    说明

    推流 SDK 默认开启 QUIC 协议推流的自动降级策略。无需额外配置, QUIC 协议推流失败后,SDK 将自动降级为 RTMP 协议推流。

多 URL 推流

使用多 URL 推流,可以在推流失败后自动切换到下一个推流地址继续推流,提高推流的稳定性和可靠性。

说明

多 URL 推流的地址数量无限制,推流引擎会按顺序遍历所有的推流地址,直至最后无可用地址后报错。

代码示例如下所示:

const urls = [];
urls.push('rtmp://example.push/stream_1');
urls.push('rtmp://example.push/stream_2');
mLivePusher.startPushWithUrls(urls);

H.265 硬件编码

使用 H.265 硬件编码,可在相同画质下有效降低带宽开销;也可在带宽开销相同时,提供更优异的画质体验。

说明

License 版本为高级版的 SDK 应用支持 H.265 硬件解码。

  1. 配置白名单。

    说明

    部分 Android 机型不支持 H.265 硬件编码,视频直播云端提供机型白名单,使用 H.265 硬件编码前请联系技术支持配置云端白名单。

  2. 配置硬件编码并创建推流引擎。代码示例如下所示:
    // 创建推流配置
    const encoderConfiguration = new VeLiveVideoEncoderConfiguration();
    // 配置编码类型为 H.265
    encoderConfiguration.setCodec(VeLiveVideoCodec.VeLiveVideoCodecByteVC1);
    // 创建推流引擎
    const mLivePusher = config.build();
    // 设置推流引擎的编码配置
    mLivePusher.setVideoEncoderConfiguration(encoderConfiguration);
    

图片推流

推流 SDK 除支持手机摄像头采集推流外,还支持使用单张图片推流。代码示例如下所示:

const image = Image.resolveAssetSource({
  uri: 'PATH/bg.jpg',
});
// 更新推流图片
mLivePusher.updateCustomImage(bitmap);
// 开启视频采集类型为自定义图片
mLivePusher.startVideoCapture(
  VeLiveVideoCaptureType.VeLiveVideoCaptureCustomImage,
);

背景音乐控制

在直播业务中,有些主播会在直播间 K 歌或播放背景音乐,下面为您介绍相关能力的接口。

  1. 获取媒体音乐播放器。代码示例如下所示:

    const mediaPlayer = mLivePusher.createPlayer();
    
  2. 设置音乐文件路径,支持的文件格式包括 MP3、AAC、M4A、WAV。代码示例如下所示:

    // 设置文件路径
    mediaPlayer.prepare('PATH/music.mp3');
    
  3. 设置是否混音到直播流。代码示例如下所示:

    // 设置是否混音到直播流
    mediaPlayer.enableMixer(true);
    
  4. 设置是否循环播放。代码示例如下所示:

    // 设置是否循环播放。
    mediaPlayer.enableBGMLoop(true);
    
  5. 开始播放。代码示例如下所示:

    // 开始播放
    mediaPlayer.start();
    
  6. 调整背景音乐音量和主播音量。代码示例如下所示:

    // 设置背景音乐音量大小 0.0 - 1.0
    mediaPlayer.setBGMVolume(0.8);
    // 设置主播声音音量大小 0.0 - 1.0
    mediaPlayer.setVoiceVolume(1.0);
    
  7. 快进播放。代码示例如下所示:

    // 快进到某个时间点,可以通过 mediaPlayer.getDuration() 获取文件总时长
    mediaPlayer.seek(3000);
    
  8. 暂停播放、继续播放。代码示例如下所示:

    // 暂停
    mediaPlayer.pause();
    // 继续
    mediaPlayer.resume();
    
  9. 停止播放。代码示例如下所示:

    // 停止播放
    mediaPlayer.stop();
    

SEI

在直播过程中,有些信息需要跟随视频帧到达每一个观众,推流引擎提供了发送 SEI 的接口,可以编码自定义信息到关键帧或者每个视频帧里。代码示例如下所示:

// 发送 SEI 信息
mLivePusher.sendSeiMessage(
  'key',
  {
    key: 'value',
    key2: 'value2',
  },
  -1,
  true,
  true,
);

直播录制

直播过程中,支持主播将自己的精彩直播录制并保存在手机上,推流 SDK 提供了相应的录制能力。

  1. 配置录制参数,开始录制。代码示例如下所示:

    // 设置录制参数
    VeLivePusherDef.VeLiveFileRecorderConfiguration recordConfig = new VeLivePusherDef.VeLiveFileRecorderConfiguration();
    // 录制视频的宽度
    recordConfig.setWidth(720);
    // 录制视频的高度
    recordConfig.setHeight(1280);
    // 录制视频的帧率
    recordConfig.setFps(15);
    // 录制视频的码率
    recordConfig.setBitrate(2000);
    
    mLivePusher.startFileRecording("PATH/record.mp4", recordConfig, {
     // 直播录制开始回调。
     onFileRecordingStarted() {},
     // 直播录制停止回调。
     onFileRecordingStopped() {},
     // 错误码,详情请参见 VeLivePusherCode
     // 直播录制错误回调。
     onFileRecordingError(errorCode: number, message: string) {}
    });
    
  2. 停止录制。代码示例如下所示:

    mLivePusher.stopFileRecording();
    

后台推流

直播过程中,支持主播在 App 进入到后台时持续推流,推流 SDK 提供了相应的后台推流能力。

说明

  1. 使用后台推流能力,需先打开 App 的后台音频采集权限;
  2. 后台推流提供尾帧、黑帧、图片三种模式推流。

根据不同的模式,切换后台视频采集类型。代码示例如下所示:

AppState.addEventListener('change', async state => {
  if (state === 'active') {
    // 这里业务上可以记录上次开启的视频采集类型,在进入前台后切换为上次的采集类型
    mLivePusher.switchVideoCapture(VeLiveVideoCaptureFrontCamera);
  } else if (state === 'backgroud') {
    // 尾帧推流
    mLivePusher.switchVideoCapture(VeLiveVideoCaptureLastFrame);
    // 黑帧推流
    // mLivePusher.switchVideoCapture(VeLiveVideoCaptureDummyFrame);
    // 后台图片推流
    // Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
    // mLivePusher.updateCustomImage(bitmap);
    // mLivePusher.switchVideoCapture(VeLiveVideoCaptureCustomImage);
  }
});

录屏推流(仅 Android 端支持)

推流 SDK 除了支持手机摄像头采集推流外,还支持手机屏幕采集推流。屏幕采集推流适用于游戏直播、移动端 App 演示等场景。

import {startScreenCapture} from '@volcengine/react-native-live-push';
// 开启屏幕采集
startScreenCapture(mLivePusher, {
  enableAppAudio: true,
});
最近更新时间:2026.03.31 15:33:48
这个页面对您有帮助吗?
有用
有用
无用
无用