Однажды у меня возникла необходимость подключить большие колонки к ноутбуку, но так, чтобы не быть привязанным к ним кабелем. Протестировав несколько приложений для трансляции звука по Wi-Fi, я сделал вывод, что самым гибким из такого рода программ является SoundWire, позволяющее добиться задержки звука не более 100 миллисекунд (при условиях, что телефон довольно мощный, с версией Android 4.2+ и поддерживает режим native audio). А это означает, что уже можно смотреть фильмы без заметного отставания звука.
Примечание: конечно же, в первую очередь, все зависит от мощности и аппаратных возможностей Вашего Android-телефона. Протестировав данное приложение на разных устройствах я сделал вывод, что на старом Android-телефоне (Процессор: 1 ядро, 600 МГц; Память: 256 Мб; Режим аудио: standard_audio) не удается сделать задержку звука меньше 100 миллисекунд и при просмотре фильма чувствуется явное отставание звука.
Приложение обладает достаточно большим набором настроек под любой тип Wi-Fi сети (в плане скорости соединения). В Google Play Маркете есть платная и бесплатная версии. В платной версии доступна возможность установки размера буфера в миллисекундах (в бесплатной только в килобайтах), функция сжатия звука и функция стабилизации размера буфера, позволяющие максимально снизить нагрузку на беспроводную сеть и добиться минимальной задержки звука.
Настройка SoundWire Server в Windows
Скачайте программу SoundWire Server, соответствующую вашей версии Windows и установите её на компьютер.
Убедитесь, что она нормально работает, запустив какую-нибудь музыку в плеере или браузере. В окне программы, в поле "Level", должен отображаться индикатор звука. Если он подымается до уровня красного цвета (искажение звука), отрегулируйте ползунком "Audio Output" уровень звука так, чтобы цвет был только зеленым.
В зависимости от версии Windows ползунок регулятора громкости будет регулировать или уровень звука динамиков ноутбука, или трансляции по Wi-Fi. У меня Windows 8.1, и в моем случае реализован первый вариант, поэтому, чтобы звук от самого ноутбука не мешал, я его просто отключил.
Совет: на время тестирования приложения с разными настройками, звук компьютера лучше оставить включенным, тогда Вы будете слышать реальную задержку между воспроизведением звука на компьютере и по сети, через телефон на Android.
Настройка SoundWire на Android
Установите с GooglePlay Маркета приложение SoundWire.
Убедитесь, что Ваш телефон на Android и ноутбук находятся в одной сети Wi-Fi. Откройте приложение SoundWire и нажмите на кнопку с изображением спирали.
После небольшого ожидания спираль должна изменить цвет на золотистый, и Вы должны услышать звук на вашем Android-телефоне. Если этого не произойдет, попробуйте вручную прописать в приложении на Android IP-адрес, который показывает программа SoundWire Server в Windows и снова нажмите на кнопку со спиралью.
Если и в этот раз Вы ничего не услышите, тогда откройте в Windows через кнопку "Пуск" приложение "Командная строка", наберите команду "ipconfig" и нажмите клавишу "Enter". Введите в поле адреса в приложении SoundWire на Android IP-адрес, указанный в строке "IPv4-адрес" командной строки и снова нажмите на кнопку со спиралью.
Уменьшение задержки звука
Для уменьшения задержки звука в приложении SoundWire предусмотрен целый набор инструментов.
Бесплатная версия:
- Настройка буферизации (Audio buffer size);
- Сжатие звукового потока, только демо на несколько минут (Audio compression);
- Включение альтернативного звукового тракта (Android native audio).
Платная версия:
- Настройка буферизации в миллисекундах (Audio buffer size);
- Сжатие звукового потока (Audio compression);
- Включение альтернативного звукового тракта (Android native audio);
- Уменьшение "плавания" размера буфера (Latency steering amount).
А теперь более подробно о каждой опции.
Audio buffer size
Первое, что можно сделать, чтобы уменьшить задержку звука, это уменьшить размер буфера входящего звукового потока. Для этого нажмите кнопку меню, затем выберите опцию "Settings", в открывшихся настройках нажмите на пункт "Audio buffer size" и выберите желаемый размер буфера.
Чем он меньше, тем меньше будет задержка, но очень маленький размер буфера может привести к эффекту дискретного "роботизированного звука". Размер буфера в бесплатной версии выставляется в килобайтах, в платной версии в миллисекундах. Кроме того, в платной версии реальная задержка звука в миллисекундах отображается на главной странице приложения.
Audio compression (платная версия)
Как показывает опыт, очень важная функция, так как позволяет не только уменьшить задержку, но и экономно использовать канал связи, чтобы, например, видео не подвисало во время просмотра онлайн. Приложение умеет сжимать транслируемый звуковой поток с помощью кодека Opus. В бесплатной версии пробный период использования этой опции составляет 10 минут. Чтобы включить сжатие звукового потока, поставьте в настройках галочку рядом с опцией "Audio compression", нажмите на опцию "Compression bitrate" и выберите битрейт сжимаемого аудиопотока. Чем он меньше, тем меньше трафика будет тратиться на передачу звука и, как следствие, уменьшится задержка и обрывы при передаче звука, но пострадает качество, поэтому экспериментируйте.
Как видно из рисунка выше, в моем случае при битрейте 64 кБит/с (как мне кажется, самом оптимальном) скоростьWi-Fi соединения, затрачиваемая на передачу звука, уменьшилась от ~167 до ~18 кБайт/с, то есть примерно в 10 раз!
Android native audio
Внимание: Эта опция поддерживается не всеми устройствами!
При включении опции "Android native audio" выбирается альтернативный внутренний звуковой тракт (OpenSL ES native audio), который может работать лучше и позволяет получить более низкие времена задержки звука на некоторых устройствах, поддерживающих "Android native audio". Опция "Android native audio" имеет три переключателя:
- Auto – используется native audio с малыми размерами буфера (32 кБ / 190 мс или меньше), а также standard audio с более крупными размерами буфера. Рекомендуется для устройств, которые поддерживают низкую задержку звука (Android 4.2+).
- Standard audio – рекомендуется для устройств, которые не поддерживают низкую задержку звука. Стандартный звуковой тракт является более надежным, на большинстве устройств Android.
- Android native audio – выберите, если альтернативный внутренний звуковой тракт работает лучше на устройстве даже при больших размерах буфера, например, если при использовании Auto или Standard audio есть проблемы.
На некоторых современных телефонах для корректной работы функции "Android native audio" необходимо транслировать звук с частотой дискретизации не 44.1 кГц, а 48 кГц. Требуемая частота дискретизации будет отображаться при нажатии на опцию "Android native audio". Если нужно, перенастройте SoundWire Server и Windows на использование частоты дискретизации 48 кГц (см. документацию).
Latency steering amount (платная версия)
Опция "Latency steering amount" позволяет контролировать, насколько агрессивно SoundWire будет пытаться достичь установленной задержки звука (примерно размер буфера, деленный на 2). Опция имеет три режима: Normal (нормальный), Tight (сжатый), Very Tight (сильно сжатый).
Обратите внимание, что фактическая задержка звука будет выше, чем отображаемая на панели, так как многие другие факторы способствуют задержке, такие как внутренний аудиотракт телефона на Android и буферизация на стороне сервера. Поэтому для оценки реальной задержки используйте Ваши уши, а не отображаемые цифры на экране телефона.
Лучший гайд по данному приложению. Все объяснено как надо, но сразу говорю для тех кто захочет это повторить в игры через это приложение не поиграешь, слишком велика задержка