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

5

我正在尝试使用适用于Android的本地WebRTC SDK(libjingle)。到目前为止,我可以从Android端向Web(或其他平台)发送流,并且可以从对等方接收MediaStream(通过onAddStream回调函数)。

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

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

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

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

提前感谢!

1个回答

7
我们可以使用以下代码获取远程音频轨道。
import org.webrtc.AudioTrack;

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

显然,所有的WebRTC本地示例都使用视频轨道,所以我没有找到任何关于它的文档或示例。

是的,作为应用程序开发人员,我们只需要负责视频呈现。如果我们收到远程音频轨道,则默认情况下会在默认扬声器(耳机/扬声器/有线耳机)上播放,取决于靠近设置。

请查看AppRTCAudioManager.java中的以下代码,以启用/禁用扬声器。

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

Reference Source: AppRTCAudioManager.java


谢谢回答!在使用纯Libjingle时,我该如何获取AudioManager的实例? - Sagi Dayan
AudioManager 是一个 Android 内部库。 - Ajay
@Ajay,我在同样的问题上卡住了。在填充remoteAudioTrack之后,我应该在哪里使用它? - ADM
如果对等体之间的连接建立正确,音频轨道将自动播放。您可以使用AudioManager控制输出音量/设备。 - Ajay
好的。谢谢您的关注。也就是说,我们不必使用remoteAudioTrack对象和任何与视频相关的渲染器。我还在使用AppRTCAudioManager,但没有成功建立通话。我想我需要深入了解连接过程。感谢您的支持。如果问题存在,我会再次联系您。 - ADM
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接