腾讯实时音视频 分享系统声音

2023-02-10 10:14:16 浏览数 (1)

什么是分享系统声音?举个例子,如果你常关注游戏直播,那这种直播方式你一定不陌生,直播中不仅可以看到主播当前屏幕所展示的画面,也能听到主播的声音和游戏的声音,简单分析一下功能点:

1、看到主播当前屏幕所展示的画面可使用屏幕分享实现,这里腾讯实时音视频(简称TRTC,后文统一使用简称)SDK已支持;

2、主播的声音是通过主播那边麦克风采集到后上行

3、听到游戏的声音,这里我们要介绍的就是利用TRTC SDK实现将游戏的声音分享到直播间里使其他用户听到

为了更直观些也可看看下面这张腾讯会议的截图,被红框框起来的部分就是分享系统声音

腾讯会议截图腾讯会议截图

下面介绍TRTC SDK各个端怎么实现分享系统声音:

iOS

首先实现iOS屏幕分享可参考官网文档:https://cloud.tencent.com/document/product/647/45750

这里iOS 跨应用分享使用的是苹果提供的用于 iOS 系统进行屏幕录制的框架ReplayKit,这里我们来看一下ReplayKit 的数据回调接口(SampleHandler.m中):

代码语言:txt复制
- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {
    
    switch (sampleBufferType) {
        case RPSampleBufferTypeVideo:
            [[TXReplayKitExt sharedInstance] sendVideoSampleBuffer:sampleBuffer];
            break;
        case RPSampleBufferTypeAudioApp:
            // Handle audio sample buffer for app audio
            break;
        case RPSampleBufferTypeAudioMic:
            // Handle audio sample buffer for mic audio
            break;

        default:
            break;
    }
    
}

从枚举 sampleBufferType 上可以看出刚好能符合我们对媒体流的需求,有视频流、音频流,音频流又分为麦克风录制进来的音频流(AudioMic),与当前响应的应用播放的音频流(AudioApp)。如果在屏幕分享过程中分享系统声音可直接如下调用

代码语言:txt复制
- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {
    //媒体数据(音视频)发送方法
    [[TXReplayKitExt sharedInstance] sendSampleBuffer:sampleBuffer withType:sampleBufferType];
}

需要8.6版本以上,升级版本时请将从官网下载下来的SDK文件里面的TRTC SDK和ReplayKitExt SDK一起替换,否则在屏幕分享时会报“版本不一致”问题

MAC

TRTC Mac 端分享系统声音需要安装虚拟声卡插件TRTCAudioPlugin.driver,集成以及调用可参考官网文档https://cloud.tencent.com/document/product/647/52989

需注意的是Mac端分享系统声音需8.4版本以上,9.4版本增加对系统声音采集 startSystemAudioLoopback 的双声道支持。

Windows

Windows端算是最简单的了,直接调startSystemAudioLoopback这个接口

startSystemAudioLoopback startSystemAudioLoopback

Web

支持屏幕分享以及系统声音分享

实现的话看接口文档介绍https://web.sdk.zijiebao.com/trtc/webrtc/doc/zh-cn/TRTC.html#createStream

安卓

更新一下,安卓也支持分享系统声音了https://cloud.tencent.com/document/product/647/79928

小程序

不支持屏幕分享以及系统声音分享......

还有一点需要注意的是iOS、Mac、Windows、分享系统声音的流与麦克风采集的音频走的同一路流,就是说上行时需要调startLocalAudio,调muteLocalAudio会静音,调stopLocalAudio会停止采集上行,使用时要注意哦。

0 人点赞