Pano开发者中心
  • 文档中心
  • 下载中心

›高级功能

新手入门

  • 简介
  • 名词解释
  • 账号注册指南
  • 创建第一个应用

规则说明

  • Channel ID命名规则
  • 权限控制
  • 计费说明
  • 最长通话时长说明
  • 每月一万分钟免费说明
  • 布局参数说明

场景方案

    教育行业

    • 1vN互动小班课
    • 互动直播大班课

快速接入

  • 简介
  • 音视频

    • Windows (C++)
    • Android (Java)
    • iOS (Objective-C)
    • Web

    白板

    • Web

高级功能

  • 简介
  • 屏幕共享
  • 状态回调
  • 音量指示
  • 混音/伴音
  • 耳返
  • 美颜
  • 音视频数据回调
  • 音视频外部采集
  • 反馈

RESTful API

  • 基本格式
  • 获取Token
  • 频道管理
  • 云端录制
  • CDN推流
  • 文档转码
  • 服务端消息通知API

SDK API

  • SDK接口说明
  • Android (Java)
  • Windows (C++)
  • iOS/macOS (Objective-C)
  • Web SDK

    • PanoRtc 参考
    • RtcEngine
    • RtcWhiteboard
    • Constants

更新记录

  • 简介
  • SDK

    • Windows
    • macOS
    • iOS
    • Android
    • Electron
    • Web
    • Web Whiteboard

    Demo-PanoVideoCall

    • Windows、Mac和Web
    • iOS
    • Android

    Demo-PanoAudioChat

    • iOS

帮助

  • FAQ
  • 更多帮助

音视频外部采集

简介

Pano SDK 支持由开发者进行音视频外部采集(也称自定义采集),支持自行处理音频播放和视频数据渲染。

  • 对于音频,一个简化的音频处理流程如下:

    采集* --> 3A前处理* --> 编码 --> 发送 --> 接收 --> Jitter Buffer --> 解码 --> 播放*

    * 3A前处理是指:AEC (Acoustic Echo Cancellation 回声消除)、AGC (Automatic Gain Control 自动增益控制)、ANS (Automatic Noise Suppression 自动降噪)

    Pano SDK 支持由开发者自行处理采集和播放环节。

各端 SDK 相关接口,请查看下列介绍:

  • Windows (C++)
  • Android (Java)
  • iOS/macOS (Objective-C)

Windows (C++)

音频外部采集与外部播放

通过 RtcEngine 对象的 getAudioDeviceManager 方法获取音频设备管理器(AudioDeviceManager)。

  • 通过 AudioDeviceManager 对象的 getExternalRecorder 方法获取外接音频录制设备(RtcExternalAudioRecorder)。
    • 通过 RtcExternalAudioRecorder 对象的 setEnableStatus 方法设置外接音频录制设备的启用状态,pushData 方法推送外部采集的音频数据给 Pano SDK。
  • 通过 AudioDeviceManager 对象的 getExternalPlayer 方法获取外接音频播放设备(RtcExternalAudioPlayer)。
    • 通过 RtcExternalAudioPlayer 对象的 setEnableStatus 方法设置外接音频播放设备的启用状态,pullData 方法从 Pano SDK 拉取音频数据。
  • 启用外接音频录制设备后,SDK 将不再采集音频,而使用外部采集的音频数据;
  • 启用外接音频播放设备后,SDK 将不再播放音频,而交由外部处理播放音频数据;
  • 可以同时启用外接音频录制设备和外接音频播放设备;
  • 还可以同时结合 音视频数据回调 功能实现更灵活的高级处理。

视频外部采集

通过 RtcEngine 对象的 getVideoDeviceManager 方法获取视频设备管理器(VideoDeviceManager)。

  • 通过 VideoDeviceManager 对象的 createExternalCapturer 方法创建外接视频采集设备(RtcExternalVideoCapturer)。
    • 通过 RtcExternalVideoCapturer 对象的 getDeviceID 方法获取外接视频采集设备 ID,putData 方法输入外部采集的视频数据给 Pano SDK。
  • 通过 VideoDeviceManager 对象的 setDevice 方法设置使用视频采集设备,startPreview 方法进行预览。

视频外部渲染

以下接口均支持设置外部数据接收漕(RtcRenderSink),来接收渲染数据地址(buffer),以便开发者自行渲染:

  • VideoDeviceManager::startPreview 开启本地预览
  • RtcEngine::startVideo 发送本地视频
  • RtcEngine::subscribeVideo 订阅其他用户的视频

Android (Java)

音频外部采集与外部播放

  • 通过 RtcEngine 对象的 getExternalAudioRecorder 方法获取外接音频录制设备接口(RtcExternalAudioRecorder)。
    • 通过 RtcExternalAudioRecorder 对象的 setEnableStatus 方法设置外接音频录制设备的启用状态,pushData 方法推送外部采集的音频数据给 Pano SDK。

    pushData 方法的参数 RtcAudioDataFormat format 中,type 设置为 0 表示数据类型为 PCM。

  • 通过 RtcEngine 对象的 getExternalAudioPlayer 方法获取外接音频播放设备接口(RtcExternalAudioPlayer)。
    • 通过 RtcExternalAudioPlayer 对象的 setEnableStatus 方法设置外接音频播放设备的启用状态,pullData 方法从 Pano SDK 拉取音频数据。
  • 启用外接音频录制设备后,SDK 将不再采集音频,而使用外部采集的音频数据;
  • 启用外接音频播放设备后,SDK 将不再播放音频,而交由外部处理播放音频数据;
  • 可以同时启用外接音频录制设备和外接音频播放设备;
  • 还可以同时结合 音视频数据回调 功能实现更灵活的高级处理。

视频外部采集

暂不支持。

视频外部渲染

以下接口的 IVideoRender render 参数支持由开发者自行实现其 onFrame(VideoFrame videoFrame) 方法来处理数据。

  • RtcEngine.setLocalVideoRender(IVideoRender render) 设置本地用户的视频画布
  • RtcEngine.setRemoteVideoRender(long userId, IVideoRender render) 设置远端用户的视频画布

示例代码:

public class MyRtcView implements IVideoRender {
    ...

    @Override
    public void onFrame(VideoFrame videoFrame) {
        // 由开发者自行处理 VideoFrame
    }
}

iOS/macOS (Objective-C)

音频外部采集与外部播放

  • 通过 PanoRtcEngineKit 对象的 - externalAudioRecorder 方法获取外接音频录制设备(PanoRtcExternalAudioRecorder)。
    • 通过 PanoRtcExternalAudioRecorder 对象的 - setEnableStatus:withSampleRate:channels: 方法设置外接音频录制设备的启用状态,- pushData:withLength:format:timestamp: 方法推送外部采集的音频数据给 Pano SDK。
  • 通过 PanoRtcEngineKit 对象的 - externalAudioPlayer 方法获取外接音频播放设备接口(PanoRtcExternalAudioPlayer)。
    • 通过 PanoRtcExternalAudioPlayer 对象的 - setEnableStatus:withSampleRate:channels: 方法设置外接音频播放设备的启用状态,- pullData:withLength:format:timestamp: 方法从 Pano SDK 拉取音频数据。
  • 启用外接音频录制设备后,SDK 将不再采集音频,而使用外部采集的音频数据;
  • 启用外接音频播放设备后,SDK 将不再播放音频,而交由外部处理播放音频数据;
  • 可以同时启用外接音频录制设备和外接音频播放设备;
  • 还可以同时结合 音视频数据回调 功能实现更灵活的高级处理。

视频外部采集

暂不支持。

视频外部渲染

PanoRtcEngineKit 类以下接口的 delegate 参数支持由开发者自行实现 PanoRtcRenderDelegate 的 - onRenderVideoData:withLength:format:timestamp: 方法来处理数据。

  • - startPreviewWithDelegate:profile: 开启本地预览
  • - startVideoWithDelegate:profile: 发送本地视频
  • - subscribeVideo:withDelegate:profile: 订阅其他用户的视频
Last updated on 11/20/2020
← 音视频数据回调反馈 →
  • 简介
  • Windows (C++)
    • 音频外部采集与外部播放
    • 视频外部采集
    • 视频外部渲染
  • Android (Java)
    • 音频外部采集与外部播放
    • 视频外部采集
    • 视频外部渲染
  • iOS/macOS (Objective-C)
    • 音频外部采集与外部播放
    • 视频外部采集
    • 视频外部渲染
浙ICP备20002645号 Copyright ©2020 拍乐云. All Rights Reserved