如何在 android 上播放 webrtc.AudioTrack(无视频)

Sag*_*yan 5 android libjingle webrtc

我正在尝试为 android 使用本机 webrtc SDK (libjingle)。到目前为止,我可以将流从 android 发送到网络(或其他平台)就好了。我还可以从对等方接收 MediaStream。(到 onAddStream 回调)

我正在从事的项目只需要音频流。没有创建或发送给任何人的视频轨道。

我的问题是,如何播放从远程对等方获得的 MediaStream 对象?

@Override
public void onAddStream(MediaStream mediaStream) {
    Log.d(TAG, "onAddStream: got remote stream");
    // Need to play the audio ///
}
Run Code Online (Sandbox Code Playgroud)

再次,问题是关于音频的。我没有使用视频。显然所有原生 webrtc 示例都使用视频轨道,所以我没有在网上找到任何文档或示例。

提前致谢!

Aja*_*jay 6

我们可以使用以下代码获取远程音轨

import org.webrtc.AudioTrack;

@Override
public void onAddStream(final MediaStream stream){
    if(stream.audioTracks.size() > 0) {
        remoteAudioTrack = stream.audioTracks.get(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

显然所有原生 webrtc 示例都使用视频轨道,所以我没有在网上找到任何文档或示例。

是的,作为应用程序开发人员,我们只需要关注视频渲染。如果我们收到了远程音轨,默认情况下它将在基于默认扬声器(耳机/扬声器/有线耳机)的接近度设置中播放。

检查 AppRTCAudioManager.java 中的以下代码 以启用/禁用扬声器

/** Sets the speaker phone mode. */
private void setSpeakerphoneOn(boolean on) {
    boolean wasOn = audioManager.isSpeakerphoneOn();
    if (wasOn == on) {
      return;
    }
    audioManager.setSpeakerphoneOn(on);
}
Run Code Online (Sandbox Code Playgroud)

参考来源:AppRTCAudioManager.java