Скринкаст - как передать аудио от компа?

Видео с десктопа передаётся прекрасно, а аудио что-то не хочет. И не могу найти примеров никаких. Есть где-либо пример как это сделать? Очень нужно.
 
Нет, мне нужен не микрофон. Мне нужно системное аудио - то что играет в моих колонках когда я шарю экран. Скажем я запускаю играть видос с youtube и шарю экран - видос с аудио - и хочу чтобы принимающий не только видел экран, но и слышал звук. И не через эхо от колонок в микрофон :)

В принципе через webrtc это возможно, конечно. А вот как в flashphoner клиенте - пока не найду...
 

Max

Administrator
Staff member
В текущем Web SDK этого сделать нельзя. Нужно его менять.
Мы недавно делали нечто подобное для видео стримов, чтобы можно было захватывать Canvas и отправлять как стрим.
https://github.com/flashphoner/flashphoner_client/blob/wcs_api-2.0/src/webrtc-media-provider.js#L479
Создали внутренний feature request WCS-1233.
Сообщим когда по нему будут продвижения.
 
А какой-то обходной способ есть? Капчить аудио поток как-то отдельно от колонок? Или без Web SDK, руками? Пусть в качестве хака? Можно дать пример какой-нибудь? Это очевидно необходимая фича которая есть у всех остальных.
 

Max

Administrator
Staff member
Можно сделать твик Web SDK и собрать его из исходников
Вот здесь описывается поцесс подмены аудио трека для Chrome браузера с целью наложить на него контрол уровня громкости микрофона.
Скорее всего можно подменить трек на кастомный.
https://github.com/flashphoner/flashphoner_client/blob/wcs_api-2.0/src/webrtc-media-provider.js#L540
Code:
var createGainNode = function(stream) {
    var audioCtx = audioContext;
    var source = audioCtx.createMediaStreamSource(stream);
    var gainNode = audioCtx.createGain();
    var destination = audioCtx.createMediaStreamDestination();
    var outputStream = destination.stream;
    source.connect(gainNode);
    gainNode.connect(destination);
    var newTrack = outputStream.getAudioTracks()[0];
    var originalTrack = stream.getAudioTracks()[0];
    stream.addTrack(newTrack);
    stream.removeTrack(originalTrack);
    return gainNode;
};
Документация по процессу сборки SDK в аттаче.
 

Attachments

Max

Administrator
Staff member
Добрый день.
Подскажите, есть ли где-то рабочий пример по захвату аудио, от которого можно оттолкнуться?
Пока видим что Chrome вроде как поддерживает такую функцию, а Firefox может захватывать аудио только с той вкладки, на которой в данный момент находится пользователь.
 
Вроде бы именно так и есть. Да ладно, де факто Chrome - это и есть (десктопный) интернет. Всё что работает в Chrome - good enough.
 

Max

Administrator
Staff member
Здравствуйте.

Добавили эту функцию для Chrome в пример Screen Sharing.
Сейчас на верификации. На этой неделе должны проверифицировать и выпустить.
Для тестирования нужно
1) Обновить Web SDK до последней версии.
https://flashphoner.com/downloads/builds/flashphoner_client/wcs_api-2.0/?C=M;O=D
2) Переустановить расширение скриншаринга.
https://chrome.google.com/webstore/detail/flashphoner-screen-sharin/nlbaajplpmleofphigmgaifhoikjmbkg
Будет работать только в том случае, если страница на домене *.flashphoner.com и доступна по https

Для внедрения в вашем проекте, нужно собирать расширение скриншаринга и выгружать в Chrome Store.
https://flashphoner.com/vnedrenie-demonstracii-ehkrana-na-vash/?lang=ru
 

Attachments

Max

Administrator
Staff member
Проверифицировали. Работает.
https://demo.flashphoner.com/client2/examples/demo/streaming/screen-sharing/screen-sharing.html
Только проверять желательно на двух разных PC.
Потому что если будете проверять на одном и сделаете mute, то звука не будет.
Если mute не сделаеть, то будет эхо.
Расширение для скриншаринга нужно удалить и установить заново.
При запросе доступа к экрану, отметить 'захватывать аудио'.
 
Top