Начало здесь:
https://nowhereman2k.livejournal.com/16435.html Засада №1 и ее преодоление.
По умолчанию все работает через штатную аудиоподсистему Windows, при создании которой никто не заботился об обработке звука в реальном времени.
Поэтому мы слышим свой микс с громадной задержкой, и использовать этот сигнал для мониторинга просто невозможно.
Здесь нам на помощь приходит протокол asio (
https://ru.wikipedia.org/wiki/Audio_Stream_Input/Output). Качаем и устанавливаем фриварный драйвер для этого протокола asio4all (отсюда -
http://www.asio4all.org).
Примечание. Ко многим внешним звуковухам идут специализированные asio-драйвера от производителя, но нам нужен именно универсальный asio4all, почему это важно - об этом далее.
Заходим в настройки mixcraft:
На вкладке «Звуковое устройство» выбираем Asio, а в графе «ASIO устройство» выбираем именно ASIO4ALL:
Дальше нам надо убедиться, что драйвер asio видит наши подключенные внешние звуковухи и может принимать с них данные. Для этого здесь же жмем кнопку «Настройки» - открывается вкладка свойств asio:
При наведении на название устройства в дереве должна высвечиваться подсказка «устройство готово к работе».
Обе кнопки слева от названия устройства (“вкл/выкл”, обозначенная номером 1, и “Play”, обозначенная номером 2) должны быть активными.
Тут наступает время танцев с бубнами, поскольку далеко не всегда подключенные устройства автоматически становятся активными, поэтому:
- может потребоваться несколько раз тыкнуть кнопки “вкл/выкл” и “Play” рядом с устройством, учитывая, что реакция на нажатие (изменение состояния кнопки) будет не мгновенной, а 3-5 сек. и более.
- если не помогает, то выдернуть устройство, воткнуть заново и вернуться к тыканью кнопок.
Но все же добиться рабочего состояния устройств можно - после этого жмем везде ОК и возвращаемся в главное окно Mixcraft.
Далее несколько моментов:
- Настройки входов для дорожек (левый и правый каналы) будут сброшены, и их надо будет переназначить, указав входы внешней USB звуковой карты;
- Кнопки «Запись» и «Мониторинг» на дорожках также будут отжаты, и их надо заново включить;
- Сигнал с мастер-дорожки теперь будет идти на выход нашей внешней USB-звуковухи, поэтому колонки или наушники надо переткнуть туда.
Если все хорошо, то мы услышим свой микс уже с приемлемой задержкой - там будет несколько миллисекунд, и этим сигналом уже можно пользоваться для мониторинга.
Выбор программы для трансляции.
Допустим, мы хотим сделать трансляцию ВКонтакте.
Как это сделать, написано здесь:
https://vk.com/@authors-create-stream.
Основное в том, что надо выбрать и установить на комп специальную программу, которая будет брать видео с вебкамеры, аудио из указанного источника, и отдавать генерируемый видеопоток на канал трансляции, создаваемый ВКонтактом (по атрибутам URL и KEY).
Первая из предлагаемых прог (OSB) вроде всем хороша - и фриварная, и самая распространенная, но она категорически отказалась работать с моей древней как г.. мамонта GeForce 6600. Если у вас что-то более новое - скорее всего вам она подойдет.
Запускается и работает фриварный FFSplit (
https://www.ffsplit.com/). Однако же, после нескольких проб выяснилось, что при кодировании звука в формате aac (который только и принимает ВКонтакт) он выдает аудиопоток с жуткими искажениями (срезание частот, бульканье и пр.). Такое впечатление, что он всегда берет низкий битрейт, вне зависимости от установок в настройках (а там для aac вроде доступны битрейты до 256).
Как окончательный вариант , выбрал продукт под названием vMix (
https://www.vmix.com/software/download.aspx). Он небесплатный, но у него есть 60-дневная пробная версия.
(Опять же этот выбор актуален только для меня, поскольку это одна из двух прог (из десятка опробованных), которые согласились работать с моей устаревшей видеокартой).
Засада №2 и ее преодоление.
И тут возникает проблема - микшированный звук с помощью DAW мы получить можем, но его еще надо включить в трансляцию. А там, в качестве источника звука для трансляции , можно указать только устройство записи (со вкладки «Запись», которая в окне «Панель управления» -> «Звук»).
Можно, конечно, спаять кабель - переходник с аудиовыхода на линейный вход - но это сразу же влечет ухудшение качества за счет двойного преобразования.
И тут на каком-то форуме встретил упоминание некого Virtual Audio Cable, вот он:
https://www.vb-audio.com/Cable/. Качаем, устанавливаем.
Это драйвер, который создает в системе:
- виртуальное воспроизводящее устройство (на которое, например, можно направить микс с мастера DAW),
- соединенное с ним виртуальное устройство записи, которое можно указать в качестве источника звука для трансляции.
Что важно - этот виртуальный аудиокабель поддерживает функции asio. А драйвер asio4all, в отличие от проприетарных, поддерживает отновременную работу с несколькими asio-устройствами.
Открываем заново настойки asio4all и включаем одновременно два устройства:
В mixcrafte вдобавок к основному каналу вывода (master) добавляем еще один - с коммутацией на приемный конец виртуального аудиокабеля.
Для этого создаем одну send-дорожку, и на дорожках 1 и 2 устанавливаем регуляторы «send 1» в позицию 100:
То есть сигналы с дорожек 1 и 2 пойдут дополнительно на дорожку Send 1 в той же пропорции, что и на master.
Далее, создаем output-дорожку, и в качестве устройства вывода назначаем VB-Audio Point 1 / 2 , т.е. виртуальный аудиокабель. А для send-дорожки, соответственно, ставим в качестве выхода output -дорожку:
Всё, mixcraft у нас почти полностью сконфигурирован для трансляции - можно сохранить проект, чтобы потом повторно это все не накручивать.
Теперь переходим к настройке программы трансляции - указываем источники видео и аудио.
В vMix’е это выглядит так (не самым очевидным образом):
1) Жмем AddInput, выбираем опцию More:
2) В появившемся окне настройки указываем источники видео и аудио, ставим разрешение видео, соответствующее разрешению вашей камеры:
3) Жмем кнопку настроек стриминга:
4) Вбиваем URL и KEY для трансляции, дополнительно (с помощью подчеркнутой кнопки настроек) выбираем параметры кодирования видео и аудио:
Вуаля! Почти все готово.
Остался еще один момент. Практически у всех дешевых вебкамер картинка идет с задержкой: если вы помашете в камеру рукой, увидите, что ваш двойник на мониторе машет вам с видимым запозданием. А звук будет идти практически без задержки.
То есть на звук для трансляции нам надо добавить компенсирующую задержку. Это можно сделать в mixcraftе, повесив эффект Delay на output-дорожку:
Обратите внимание, что в настройках дилея надо убрать на ноль обратную связь и выставить соотношение Wet/Dry как 100/0 - то есть получить чистый задержанный сигнал.
Величину задержки надо подобрать опытным путем - например, снимая пробные ролики с пощелкиванием пальцем по микрофону.
В vMix’е для этого есть кнопка Record, а шестеренка рядом с ней - это, соответственно, настройки записи:
Вот теперь точно все готово, и можно начинать трансляцию, нажав кнопку Stream: