chrome.desktopCapture - не можете записать как системный звук, так и микрофон? - PullRequest
0 голосов
/ 26 июня 2018

Я создал расширение Chrome, которое фиксирует активность экрана и микрофонный вход и выводит видеофайл. Поскольку chrome.desktopCapture не может записывать звук вход вместе со снимком экрана, я получаю микрофон в отдельном отдельном потоке. Итак:

//get screen stream
chrome.desktopCapture.chooseDesktopMedia(['screen'], null, (stream_id, opts) => {
    let constraints = {video: mandatory: {
        chromeMediaSource: 'desktop',
        chromeMediaSourceId: stream_id
    }};
    navigator.mediaDevices.getUserMedia(constraints).then((stream) => {
        video_stream = stream;
    });
});

//get mic stream
navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {
    audio_stream = stream;
});

Затем, позже, когда у меня есть оба потока, перед тем как начать запись, я объединяю их, создавая главный поток и добавляя в него соответствующие дорожки из отдельных потоков видео и аудио.

let master_stream = new MediaStream(video_stream);
master_stream.addTrack(audio_stream.getTracks()[0]);

И, в конечном итоге, когда я получаю видеофайл, это работает ОТЛИЧНО. Я получаю экран и микрофон.

Вопрос: Почему эта техника НЕ ​​работает, если я прошу Chrome ТАКЖЕ записать системный звук?

Так что, если я изменю ['screen'] на ['screen', 'audio'], при всем остальном, то же самое, я получу без микрофона в результирующем видео.

Если я выведу getTracks() на master_stream, вот что я получу:

Array(3)
    0: MediaStreamTrack {kind: "audio", id: "9ee3ee33-73ee-41e4-957c-d6fd3aaada43", label: "System Audio", enabled: true, muted: false, …}
    1: MediaStreamTrack {kind: "audio", id: "ab2429a1-7f75-48f2-9ee1-6a4bfd7ca942", label: "Default - Microphone (Samson Meteor Mic) (17a0:0310)", enabled: true, muted: false, …}
    2: MediaStreamTrack {kind: "video", id: "4ecb1929-31d0-4a79-8cbc-1a8759323c3b", label: "screen:0:0", enabled: true, muted: false, …}

Я не вижу очевидной причины того, почему добавление системного звука убивает микрофонный звук в результирующем выводе. У кого-нибудь есть идеи?

...