Пользовательское аудиоустройство в Android WebRTC с использованием libjingle - PullRequest
0 голосов
/ 16 сентября 2018

Я разрабатываю собственный клиент WebRTC для Android, который предназначен для потоковой передачи звука с пользовательского устройства (с этого устройства я получаю аудиопоток через Bluetooth).Я использую библиотеку libjingle для реализации WebRTC, и мне интересно, можно ли и как подключить пользовательский аудиопоток к звуковой дорожке?

В настоящее время я добавляю звуковую дорожку по умолчанию, например:

localMS = factory.createLocalMediaStream("ARDAMS");

AudioSource audioSource = factory.createAudioSource(new MediaConstraints());
localMS.addTrack(factory.createAudioTrack("ARDAMSa0", audioSource));

Я видел, что есть WebRtcAuidioRecord (https://github.com/pristineio/webrtc-android/blob/master/libjingle_peerconnection/src/main/java/org/webrtc/voiceengine/WebRtcAudioRecord.java) - можно ли его переопределить?

Кто-нибудь пытался сделать что-то подобное?

1 Ответ

0 голосов
/ 09 января 2019

Ваш пост привел меня к приведенному ниже коду, я попробую его и сообщу, заставлю ли я его работать.Я пытаюсь отправить один аудиопоток в Watson API, а другой - в WebRTC, но Android позволяет только одному InputStream читать для микрофона.Я сообщу вам, если я заставлю его работать.

private org.webrtc.MediaStream createMediaStream() {
    org.webrtc.MediaStream mediaStream = mFactory.createLocalMediaStream(ARDAMS);

    if (mEnableVideo) {
        mVideoCapturer = createVideoCapturer();
        if (mVideoCapturer != null) {
            mediaStream.addTrack(createVideoTrack(mVideoCapturer));
        } else {
            mEnableVideo = false;
        }
    }

    if (mEnableAudio) {
        createAudioCapturer();
        mediaStream.addTrack(mFactory.createAudioTrack(
                AUDIO_TRACK_ID,
                mFactory.createAudioSource(mAudioConstraints)));
    }

    return mediaStream;
}

/**
 * Creates a instance of WebRtcAudioRecord.
 */
private void createAudioCapturer() {
    if (mOption.getAudioType() == PeerOption.AudioType.EXTERNAL_RESOURCE) {
        WebRtcAudioRecord.setAudioRecordModuleFactory(new WebRtcAudioRecordModuleFactory() {
            @Override
            public WebRtcAudioRecordModule create() {
                AudioCapturerExternalResource module = new AudioCapturerExternalResource();
                module.setUri(mOption.getAudioUri());
                module.setSampleRate(mOption.getAudioSampleRate());
                module.setBitDepth(mOption.getAudioBitDepth());
                module.setChannel(mOption.getAudioChannel());
                return module;
            }
        });
    } else {
        WebRtcAudioRecord.setAudioRecordModuleFactory(null);
    }
}

Источник: https://www.programcreek.com/java-api-examples/?code=DeviceConnect/DeviceConnect-Android/DeviceConnect-Android-master/dConnectDevicePlugin/dConnectDeviceWebRTC/app/src/main/java/org/deviceconnect/android/deviceplugin/webrtc/core/MediaStream.java

...