Есть ли способ потоковой передачи звуковой карты в режиме реального времени с нашего настольного компьютера 12.04.1 LTS amd64 на внешнее устройство, совместимое с DLNA, в нашей сети? Выбор медиа-контента в общих каталогах с использованием Rygel, miniDLNA и uShare всегда удобен, но до сих пор мы полностью не смогли передать живой аудиопоток клиенту через DLNA.
Pulseaudio утверждает, что имеет медиасервер DLNA / UPnP, который вместе с Rygel должен делать именно это. Но мы не смогли запустить его.
Мы выполнили шаги, изложенные в live.gnome.org , этот ответ здесь, а также в другом аналогичном руководстве .
В 12.04 LTS мы можем выбрать локальное аудиоустройство или наш поток GST-Launch в клиенте DLNA, но Rygel отображает следующее сообщение, и клиент заявляет, что достиг конца списка воспроизведения:
(rygel:7380): Rygel-WARNING **: rygel-http-request.vala:97: Invalid seek request
Не было никакого способа слушать живые аудиопотоки на клиенте.
Только после обновления дистрибутива до 14.04 LTS мы смогли выбрать прямую трансляцию на наших DLNA-рендерерах из настроек, описанных в ответе ниже . Тем не менее, нам нужно было выбрать установленный поток после того, как мы запустили rygel и не смогли отправить новый поток на наши устройства UPnP. Аудио метаданные не были переданы.
Существуют ли другие альтернативы для отправки аудио нашей звуковой карты в режиме реального времени на клиент DLNA?
Ответы:
Pulseaudio-DLNA
Я создал небольшой сервер, который обнаруживает все рендеры upnp в вашей сети и добавляет их в качестве приемников в pulseaudio. Таким образом, вы можете контролировать каждое приложение через pavucontrol для воспроизведения на ваших устройствах upnp.
Это тот комфорт, который я всегда хотел иметь при работе с устройствами upnp под linux.
Приложение может быть установлено из исходного кода или пакета DEB, загружаемого из git , или после того, как мы добавили официальный ppa проекта : qos / pulseaudio-dlna в наши источники с помощью:
Затем мы запускаем pulseaudio-dlna из командной строки со следующими параметрами:
Смотрите также pulseaudio-dlna "About" для более подробной информации.
Когда присутствовал DLNA-рендер, мы можем выбрать его из звукового меню в качестве выходного приемника:
источник
python-requests
в качестве зависимости, и мы могли выбрать рендерер из элементов управления аудио по умолчанию - не нужно устанавливать pavucontrol.Pavucontrol - недостающий элемент в этой мозаике! Я также все правильно настроил, и внешнее устройство (LG TV) показывало, что звук воспроизводится, но я не слышал звука. Сегодня я установил pavucontrol и, открыв его, нашел возможность передавать звук через сервер DLNA. Опция DLNA отображается только при наличии звука, выводимого с проигрывателя на pulseaudio.
источник
Invalid seek request
от Rygel. Медиа-каталоги есть, но мой GST-поток всегда EOF.Извините, я не могу вам помочь с Ригелем, но может быть альтернатива, которая может вам помочь.
Принцип заключается в том, чтобы получить программу для записи потока в аудиофайл, а затем запустить miniDLNA с пользовательской конфигурацией, которая указывает на каталог, в котором находится поток.
Пример: скажем, мы работаем в ~ / stream /. Создать ~ / stream / minidlna.conf
Затем сохраните поток в аудиофайл в этом каталоге. Поиск в Google для записи звука звуковой карты FFmpeg дал эту команду
но мне не очень повезло с этим. Другой вариант - vlc, если у вас есть графический интерфейс, и это не работает.
Затем загрузите miniDLNA в другом окне терминала:
Он должен найти OutputStream.flac и затем быть доступным с вашего сетевого устройства.
Надеюсь, если вы еще не решили, что это даст вам несколько идей.
источник
Одна идея, которую я должен был передать «то, что я слышу» в DLNA-рендерер (например, WDTV), состояла в том, чтобы сервировать поток с VLC как http-поток с
pulse://alsa_output.xxx.monitor
вводом и транскодировать его в MP3 или FLAC. Затем я хотел использовать некоторую контрольную точку DLNA, чтобы позволить рендереру воспроизводить поток. VLC правильно обслуживает транскодированный поток, но не позволяет установить тип MIME, поэтому средство визуализации отказывается его воспроизводить.Следующей идеей было написать http-сервер на python, который вместо этого будет обслуживать поток. Он получает аудиопоток от импульса с
parec
, кодирует его сflac
(илиlame
или как вы хотите) и правильно устанавливает тип пантомимы.Работает со следующим (очень простым) скриптом:
Настройте параметры, запустите его и укажите DLNA-рендер на вашем компьютере. У меня это работало с WDTV в качестве средства рендеринга и телефоном Android с BubbleUPnP в качестве контрольной точки (Вы можете ввести URL потока при добавлении нового элемента в список воспроизведения вручную). Но он должен работать с любыми устройствами, совместимыми с DLNA.
источник
ПРИМЕЧАНИЕ. Это решение работает, но Massimo предложил более новое и, вероятно, лучшее решение .
Вот ответ для Ubuntu 14.04 (также протестированный и работающий на 15.04 ) для полноты:
установите все необходимые пакеты:
sudo apt-get install rygel rygel-preferences rygel-gst-launch
создайте файл,
~/.config/rygel.conf
который содержит следующее:Выполните следующие команды из командной строки (при желании их можно поместить в скрипт):
Запустите
paprefs
команду и убедитесь, что обе опции DLNA включены (отмечены) на вкладке «Сетевой сервер».Воспроизведите аудио на своем компьютере. Запустите
pavucontrol
программу и на вкладке «Воспроизведение» измените устройство вывода на «DLNA / UPnP Streaming».На этом этапе вы сможете воспроизводить потоки MPEG и FLAC с клиента DLNA (средство визуализации / контрольная точка).
ПРИМЕЧАНИЕ: вам может потребоваться перезагрузить компьютер (или перезапустить импульс), чтобы все заработало.
источник
Скрипт Python от Адама - это как раз то, что мне нужно. Brilliant. Rygel с gst-launch не работает с одним из моих рендеров, но этот скрипт работает с обоими. В моем случае я беру входной аудиопоток из squeezelite (для squeezebox) и отправляю рендереру. Сценарий также работает в исходном виде, чтобы получать данные от монитора импульса, если это то, что нужно.
Немного зная об этом, мне удалось сделать несколько дополнений в сценарии, которые:
i) разрешить его запуск из сценария оболочки и завершить его с помощью SIGTERM / SIGKILL (оператор «кроме» теперь включает «systemexit»)
ii) позволяет сценарию быть остановленным и перезапущенным и повторно использовать тот же порт (так как это был перезапущенный сценарий, который имел тенденцию терпеть неудачу, говоря, что он не мог открыть порт, если визуализатор все еще имел его открытым) - (оператор allow_reuse_address = True)
iii) создать версию, которая принимает входные данные из stdin и повторно сэмплирует их с помощью sox для вывода в формате wav (на порту 8082)
Итак, моя версия выглядит так:
источник
Не уверен, что это будет полезно для вас сейчас, но я написал пост о том, как заставить это работать на Ubuntu 12.10:
http://dpc.ucore.info/blog/2012/11/07/dlna-streaming-in-ubuntu-12-dot-10/
источник