Как вывести звук с консоли на компьютер

Обновлено: 04.07.2024

Я не являюсь большим поклонником диванного гейминга, поэтому весь мой консольный экспирианс я попытался привести по удобство к ПК. Но есть один неудобным момент, это звук.

Вывод звука с двух консолей и ПК на одни наушники/колонки, с возможностью переключения между ними в один клик.

Две консоли и компьютер подключены к HDMI свитчу, который подключен к монитору. Это без проблем мне позволяет переключать картинку между любыми из устройств. Мне даже делать ничего не надо, как только я включаю одну из консолей, картинка на мониторе переключается на неё.
Соответственно у монитора есть выход на наушники, его с помощью обычного 3.5 провода я подключил к линейному входу компьютера. В настройках ПК включено прослушивание этого разъема, благодаря этому я могу слышать звук с монитора (то бишь с консоли) на ПК. Но дальше возникает несколько проблем:

  • Прослушивание разъема не реагирует на выбор устройства по умолчанию для воспроизведения, из-за чего когда я переключаю наушники на колонки, воспроизведение с монитора продолжается на том устройстве, которое выбрано в настройках разъема. Там есть вариант выбора "Устройство по умолчанию", но к сожалению этот вариант никак не реагирует на смену устройства.
  • Когда я не пользуюсь консолями, я постоянно слышу какие-то помехи и треск, если включаю музыку, игру или смотрю видео, до тех пор пока я не отключу целиком линейный вход в настройках звука Windows. Но при этом когда я играю на консоли никаких посторонних звуков через эту схему нет.

Хотелось бы иметь возможно удобно переключаться между наушниками/колонками и между всеми устройствами, без лишних трудностей. Поэтому ищу решение этих двух проблем, возможно в виде какого-то внешнего устройства, но не хотелось бы платить уж очень дорого. Буду рад если кто-то сможет чем-то помочь.

UPD: Забыл уточнить, данная схема позволяет мне на наушники или колонки одновременно получать звук с ПК и с консоли. Это тоже одно из критичных условий для меня.

Бронзовый охотник за трофеями


Карма: 7812 ( 10) 7770


Гарнитура есть

Гарнитура:



Знаток компаса


Объединение звука с PS4 и ПК в гарнитуру, рили?

Привет.
Задался таким вопросом, можно ли объединить звук с игры на пс4 и звук с пк (мюзик по заявкам), и поместить их в гарнитуру от пс4?
Есть идеи? Есть практика в таком деле?
Подскажите, буду премного благодарен.
PREMIUM


Карма: 5954 ( 10) 55102


Гарнитура есть

Гарнитура:


yoshimidzo yoshimidzo



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

покупаешь разветлитель 4pin 3.5 jack. нормальных у себя я не нашел (были с перепутанным стерео). купил у китайца.

микро напрямую в геймпад через разветлитель, а звук выводи с разветвителя на ПК другим шнуром в Line In звуковой карты. там уже микшируешь и выводишь обратно на наушники. тебе понадобится еще 2 шнура папка мамка 3pin jack 3.5

Последний раз редактировалось Yoshimidzo; 19.01.2016 в 10:03 .


Металлический охотник за трофеями


Карма: 1137 ( 6) 5368


Гарнитура есть

Гарнитура:



Выбирая геймпад для своего компьютера, я остановился на DualShock4, так как мне понравилась идея, что можно будет слушать аудио через подключаемые к нему наушники. Но после покупки я узнал, что, оказывается, никто не знает, как передать звук на геймпад через Bluetooth. Поэтому я решил разобраться с данным вопросом. Если вам интересно узнать, как DualShock4 общается с игровой консолью, жду под катом.

К сожалению, у меня нет PlayStation 4, поэтому пришлось довольствоваться только выложенными в Интернете дампами, а также уже известными фрагментами обмена.
В процессе изучения темы мне очень помогла вот эта страница. В ней описаны основные моменты передачи данных между консолью и геймпадом, а также выложен дамп этих данных. Нас интересует файл дампа с именем ds4_uart_hci_cap_playroom_needs_sorting.pcap.gz. Открываем его в Wireshark и начинаем изучать. Отсортируем пакеты по времени, так как, видимо, дамп записывался отдельно на приём и передачу. Дамп снимался напрямую с UART геймпада, после чего был сконвертирован в pcap.



Номер байта bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
[0] 0x0a – Тип Data 0x00 — Зарезервировано 0x02 — Направление передачи
[1] 0x11 – Код операции
[2 — 3] Неизвестно
[4] 0xf0 Запрещает изменение данных у геймпада, 0xf3 Разрешает изменение
[5 — 6] Неизвестно
[7] Rumble (right / weak)
[8] Rumble (left / strong)
[9] RGB color (Red)
[10] RGB color (Green)
[11] RGB color (Blue)
16 Неизвестно
[25] Громкость звучания в %
[26 — 74] Неизвестно
[75 — 78] CRC-32 от предыдущих данных

Хотя 26 байт помечен на упомянутой выше странице как неизвестный, во время моих экспериментов удалось выяснить, что он отвечает за громкость звучания и выставляется в процентах. Также хотя поле crc присутствует, но геймпад его не проверяет и можно просто отправлять нулевое значение.


Так как нам интересно, какие данные передаёт консоль, давайте отфильтруем их по 0-му байту HID Profile, который поможет нам определить направление пакета. Данные от гемпада имеют значение 0xa1, от консоли 0xa2. Фильтр для Wireshark получится таким: bthid[0] == 0xa2.

Если прокрутить пакеты, то, начиная с пакета №98516, сильно увеличился размер данных. Если судить по данным с вики страницы, то начало у пакетов с кодом операции 0x15 и 0x19 такое же, как и у 0x11, только без CRC, которая находится в конце.

Всё есть HID


Вот мы и подошли к самому интересному — как передать звук на геймпад. Вот как выглядит пакет с аудиоданными.

Теперь попробуем воспроизвести получившийся файл, для чего воспользуемся gstreamer'ом:

gst-launch-1.0 filesrc location=test.sbc ! sbcparse ! sbcdec ! autoaudiosink

В начале файла будет тишина (это видно и по сохраненным данным). Для удобства преобразуем данные в wav:

gst-launch-1.0 filesrc location=test.sbc ! sbcparse ! sbcdec ! audioconvert ! wavenc ! filesink location=output.wav

Еесли перемотать на 41 секунду получившийся wav, мы услышим звук.
Таким образом, мы удостоверились, что DualShock4 использует обычное SBC кодирование для передачи звука.

Теперь интересно попробовать самим сгенерировать данные для воспроизведения на геймпаде.
Воспользуемся для этого всё теми же инструментами. Gstreamer будет кодировать, а Python будет будет передавать данные на DualShock4.
В Linux можно очень просто работать с геймпадом благодаря тому, что в нём всё (включая устройства) является файлами.
Узнать, какой файл соответствует геймпаду, можно после сопряжения DualShock4 с компьютером. В результате удачного сопряжения в выводе dmesg появится строка
sony 0005:054C:05C4.0007: input,hidraw5: BLUETOOTH HID v1.00 Gamepad [Wireless Controller]
Значит, наш контроллер присутствует в системе в виде файла с именем /dev/hidraw5, и мы можем передавать данные на геймпад, просто записывая необходимые данные в этот файл.
Вот скрипт, с помощью которого это можно делать:


Скрипт читает из стандартного потока закодированные в SBC аудиоданные и формирует два типа пакетов 0x14 и 0x15 (также комментированием/раскомментированием строк можно включить формирование увеличенного в два раза пакета с опкодом 0x17) и отправляет их на геймпад путем записи в hidraw девайс.
Попробуем использовать этот скрипт, чтобы проиграть тестовый звуковой сигнал.
Данный сигнал будет генерироваться при помощи gstreamer и отправляться на стандартный поток вывода, откуда его будет забирать скрипт.

gst-launch-1.0 -q audiotestsrc is-live=true ! sbcenc ! 'audio/x-sbc,channels=2,rate=32000,channel-mode=dual,blocks=16,subbands=8,bitpool=25' ! queue ! fdsink | ./play.py

И у нас получилось (почти). Звук идет, но периодически слышны небольшие заикания. С чем они связаны, я понять так и не смог. Возможно, я не совсем правильно работаю с hid устройством в linux — если кто-нибудь сможет подсказать, как сделать правильнее, я буду благодарен. Попытка испопользования Bluetooth сокета успехом также не увенчалась — через полсекунды проигрывания звука всё заканчивалось(Смотри UPD).

Заключение

Хотелось бы выразить благодарность таким проектам, как DS4Windows и ds4drv.
Данные проекты позволяют использовать геймпад на компьютере. Надеюсь, эта статья поможет добавить также и поддержку передачи звука в эти проекты.

Спасибо за внимание.

UPD:
Небольшие дополнение.
Если добавить is-live=true к audiotestsrc то звук идет почти без заиканий.
Вот полезный pipeline для gstreamer который позволяет захватывать все, что идет на аудио выход и отправлять на DualShock4.

Игровая консоль Sony PlayStation 4 лидирует на современном рынке. Если вы решите приобрести её, то наверняка не прогадаете. Но ведь вам понадобится ещё и телевизор, чтобы было к чему подключить приставку. Но лишние траты можно исключить, ведь PS4 можно подключить к ноутбуку и обычному монитору.

Подключение PS4 к ноутбуку или монитору при помощи HDMI кабеля

Стандартный HDMI кабель для подключения к телевизору уже имеется у PS4. Многие мониторы допускают его подключение, а вот про ноутбуки такое можно сказать не всегда. Дело в том, что, даже если на ноутбуке есть HDMI разъём, обычно он настроен на вывод изображения, а не его приём.

Но если девайс оснащён HDMI-in, то достаточно выполнить следующие действия:

    Подключите HDMI кабель к соответствующему разъёму на задней панели PS4.

Разъём HDMI

Подключение звука на PS4

Чтобы понять, принимает ли HDMI разъём сигнал, стоит ознакомиться со спецификацией техники на официальном сайте или в документации.

Подключение монитора выполняется таким же образом. Стоит отметить, что он может выводить звук, если он имеет встроенные колонки. В ином случае вам также понадобится подключать звуковое устройство напрямую к консоли. Кроме того, монитор может иметь VGA разъём, вместо HDMI.

В этом случае стоит сделать следующее:

    Подсоедините VGA/HDMI переходник к монитору.

Разъёмы монитора

Подключение к ноутбуку или компьютеру через Remote Play

Если у вас нет возможности подключить PS4 через HDMI, можно использовать программу для передачи изображения. В таком случае вы получите качественную картинку, но транслироваться она будет с небольшой задержкой. Это может стать проблемой при игре в динамичные игры. Чтобы настроить трансляцию Remote play, сделайте следующее:

  1. Скачайте и установите программу PS4 Remote Play на компьютер. Вы можете легко найти её в Сети — программа распространяется бесплатно.
  2. Запустите приложение. В нём откроется окно первоначальной настройки программы.
  3. Войдите в систему, используя свою учётную запись. Если аккаунта нет, то его нужно обязательно создать.

Настройки Remote Play

Настройки соединения дистанционного воспроизведения

Добавление устройства

Видео: подключение PS4 к компьютеру при помощи Remote Play

Подключение геймпада от PS4 к компьютеру

Вы можете использовать контроллер от Playstation 4, даже если играете в неё на мониторе или ноутбуке. Для этого необходимо сделать следующее:

  1. Установите программу Input Mapper и запустите её. Выберите беспроводной способ подключения (можно использовать и проводной, тогда дальнейшие настройки не требуются).
  2. Зажмите кнопку back (share) на контроллере пока он не начнёт мигать.
  3. Перейдите в раздел Bluetooth-соединений компьютера и выберите геймпад.

При таком методе подключения все возможности геймпада будут работать, включая отслеживание положения контроллера и вибрацию.

Возможные проблемы с подключением

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

  • HDMI разъём нацелен только на выход — в большинстве ноутбуков этот разъём не может принимать сигнал. В таком случае изображение не будет поступать на ноутбук;
  • изображение через Remote Play тормозит или рябит — компьютер или ноутбук не справляется с обработкой картинки В таком случае стоит использовать более мощное «железо»;
  • отсутствует звук — HDMI кабель не передаёт его. Используйте иные способы вывода звука с консоли, например, наушники.

Если у вас хороший монитор, можно получить немало удовольствия, играя на нём в Playstation 4. Удобство и зрелищность способны усилить погружение, предоставить более богатый игровой опыт. И при помощи этой статьи вы без труда подключите приставку к монитору или ноутбуку.

Читайте также: