Android 腾讯实时音视频TRTC音频冲突,麦克凤抢占问题,实时音视频过程中录音导致失败

       接入了腾讯实时音视频TRTC的SDK,使用中遇到一些问题,比较严重的是在音视频过程中进行本地录屏,获取不到声音导致录屏失败。

1.通道

       SDK 目前提供了三种系统音量类型的控制模式,分别为

(1)TRTCCloudDef#TRTCSystemVolumeTypeAuto: “麦上通话,麦下媒体”,即主播上麦时使用通话音量,观众不上麦则使用媒体音量,适合在线直播场景。 如果您在 enterRoom 时选择的场景为 TRTCCloudDef#TRTC_APP_SCENE_LIVE 或 TRTCCloudDef#TRTC_APP_SCENE_VOICE_CHATROOM,SDK 会自动选择该模式。

(2)TRTCCloudDef#TRTCSystemVolumeTypeVOIP: 通话全程使用通话音量,适合多人会议场景。 如果您在 enterRoom 时选择的场景为 TRTCCloudDef#TRTC_APP_SCENE_VIDEOCALL 或 TRTCCloudDef#TRTC_APP_SCENE_AUDIOCALL,SDK 会自动选择该模式。

(3)TRTCCloudDef#TRTCSystemVolumeTypeMedia: 通话全程使用媒体音量,不常用,适合个别有特殊需求(如主播外接声卡)的应用场景。

判断是通话通道还是媒体通道:

音量键关音量,如果可以关到没有声音为媒体通道,如果不能关到没声音则为通话通道。

2.Xlog日志

      使用过程中可以有问题或异常可以查看xlog日志,可以发给腾讯的客服去看,xlog日志在手机本地文件的路径
xlog日志:https://cloud.tencent.com/developer/article/1502366

3.麦克风抢占

      麦克风抢占可能与手机尝试的底层实现有关,其中一个处理方法是关闭腾讯实时音视频的音频,然后使用其提供的API实时传输自己的音频数据,这样既不会冲突,也可以传输音频数据。

(1)设置tRTCCloud.enableCustomAudioCapture(true)

       启用音频自定义采集模式

扫描二维码关注公众号,回复: 12124992 查看本文章

      开启该模式后,SDK 不在运行原有的音频采集流程,只保留编码和发送能力。 您需要用 sendCustomAudioData() 不断地向 SDK 塞入自己采集的音频数据。

参数

enable 是否启用 true:启用;false:关闭,默认值:false

(2)不调用tRTCCloud.startLocalAudio();,如果调用了需要注掉。关掉后就没有腾讯实时音视频sdk的音频传输了

(3)通过tRTCCloud.sendCustomAudioData(mTRTCAudioFrame);实时发送音频数据,

private TRTCCloudDef.TRTCAudioFrame mTRTCAudioFrame = new TRTCCloudDef.TRTCAudioFrame();
mTRTCAudioFrame.data = data; //data为你自己采集到的音频数据
mTRTCAudioFrame.sampleRate = 48000; //采样率需要与自己音频的采样率一样,不与其推荐的一样也可以
mTRTCAudioFrame.channel = 1;  //1-单声道,2-双声道
mTRTCAudioFrame.timestamp = 0; //时间戳设为0即可
if (trtcCloud != null) {
   trtcCloud.sendCustomAudioData(mTRTCAudioFrame);
}

 sendCustomAudioData()

向 SDK 投送自己采集的音频数据

TRTCAudioFrame 推荐如下填写方式:

data:音频帧 buffer。音频帧数据必须是 PCM 格式,推荐每帧20ms采样数。【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。
sampleRate:采样率。
channel:频道数量(如果是立体声,数据是交叉的),单声道:1; 双声道:2。
timestamp:如果 timestamp 间隔不均匀,会严重影响音画同步和录制出的 MP4 质量。
参考文档:自定义采集和渲染。

参数
frame    音频帧。目前只支持单声道,仅支持48K采样率。请参考 TRTCAudioFrame
注意
可以设置 frame 中的 timestamp 为 0,相当于让 SDK 自己设置时间戳,但请“均匀”地控制 sendCustomAudioData 的调用间隔,否则会导致声音断断续续。

猜你喜欢

转载自blog.csdn.net/qq_37980878/article/details/111557146