有没有办法将声卡的实时输出从我们的 12.04.1 LTS amd64 桌面传输到我们网络中兼容 DLNA 的外部设备?使用 Rygel、miniDLNA 和 uShare 在共享目录中选择媒体内容始终没问题 - 但到目前为止,我们完全无法通过 DLNA 将实时音频流传输到客户端。
Pulseaudio 声称拥有一款 DLNA/UPnP 媒体服务器,与 Rygel 配合使用可以实现这一功能。但我们无法让它运行。
我们遵循了live.gnome.org,这个答案在这里,还有另一个类似指南。
在12.04 LTS我们可以在 DLNA 客户端中选择本地音频设备或 GST-Launch 流,但 Rygel 显示以下消息,并且客户端指出它已到达播放列表的末尾:
(rygel:7380): Rygel-WARNING **: rygel-http-request.vala:97: Invalid seek request
无法在客户端上收听实时音频流。
仅在发行版升级到14.04 长期支持我们可以从设置中很好地选择 DLNA 渲染器上的直播以下答案概述。尽管如此,我们还是需要选择一个成熟的流后我们启动了 rygel,但无法将新流推送到我们的 UPnP 设备。音频元数据未传输。
还有其他方法可以将我们声卡的音频作为实时流发送到 DLNA 客户端吗?
答案1
Pulseaudio-DLNA
我创建了一个小型服务器,它可以发现您网络中的所有 upnp 渲染器,并将它们添加为 pulseaudio 的接收器。因此,您可以通过 pavucontrol 控制每个应用程序在您的 upnp 设备上播放。
这正是我在 Linux 下处理 upnp 设备时一直想要的那种舒适感。
该应用程序可以从源代码或 DEB 包安装可从 git 下载,或者在我们添加了项目的官方ppa:qos/pulseaudio-dlna向我们的消息来源提供:
sudo apt-get update && sudo apt-get install pulseaudio-dlna
然后我们从命令行运行 pulseaudio-dlna,使用以下选项:
pulseaudio-dlna [--host <host>] [--port <port>] [--encoder <encoder>] [--renderer-urls <urls>] [--debug]
pulseaudio-dlna [-h | --help | --version]
另请参阅pulseaudio-dlna“关于”了解更多信息。
当存在 DLNA 渲染器时,我们可以从声音菜单中选择它作为输出接收器:
答案2
Pavucontrol 是这个拼图中缺少的物品!我也正确设置了所有东西,外部设备(LG 电视)显示正在播放声音,但我没有听到任何声音。今天我安装了 pavucontrol,当我打开它时,我发现可以通过 DLNA 服务器传输声音的选项。只有当播放器向 pulseaudio 输出声音时,才会显示 DLNA 选项。
答案3
很抱歉我无法完全帮助您解决 Rygel 问题,但可能有其他方法可以满足您的需求。
其原理是获取一个程序将流录制到音频文件,然后使用指向该流所在目录的自定义配置启动 miniDLNA。
例如:假设我们在 ~/stream/ 中工作。创建 ~/stream/minidlna.conf
network_interface=wlan0
media_dir=/home/<user>/stream/
friendly_name=Live Audio Stream
db_dir=/home/<user>/stream/
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
inotify=no
enable_tivo=no
strict_dlna=no
notify_interval=900
serial=12345678
model_number=1
然后将流保存到该目录中的音频文件。谷歌搜索“FFmpeg 录制声卡音频”会得到这个命令
ffmpeg -f alsa -i default -acodec flac ~/stream/OutputStream.flac
但我运气不太好。另一个选择是 vlc,如果你有可用的 GUI,但它不起作用。
然后在另一个终端窗口中启动 miniDLNA:
minidlna -d -f ~/stream/minidlna.conf -P ~/stream/minidlna.pid
它应该找到 OutputStream.flac 然后可以从您的网络设备访问。
如果您还没有解决这个问题,希望这能给您提供一些想法。
答案4
注意:此解决方案有效,但更新且可能更好的解决方案由 Massimo 提出。
这是答案对于 Ubuntu 14.04(也经过测试并正在15.04),为了完整性:
安装任何需要的软件包:
sudo apt-get install rygel rygel-preferences rygel-gst-launch
~/.config/rygel.conf
创建包含以下内容的文件:[GstLaunch] enabled=true title=@REALNAME@'s stream launch-items=myaudioflac;myaudiompeg myaudioflac-title=FLAC audio on @HOSTNAME@ myaudioflac-mime=audio/flac myaudioflac-launch=pulsesrc device=upnp.monitor ! flacenc quality=8 myaudiompeg-title=MPEG audio on @HOSTNAME@ myaudiompeg-mime=audio/mpeg myaudiompeg-launch=pulsesrc device=upnp.monitor ! lamemp3enc target=quality quality=6 [Playbin] enabled=true title=Audio/Video playback on @REALNAME@'s computer [general] interface= upnp-enabled=true [MediaExport] uris=
从命令行执行以下命令(如果需要,可以将这些命令放入脚本中):
pactl load-module module-http-protocol-tcp pactl load-module module-rygel-media-server rygel &
运行该
paprefs
命令,并确保在“网络服务器”选项卡上启用(选中)两个 DLNA 选项。在电脑上播放一些音频。运行
pavucontrol
程序,在“播放”选项卡上,将输出设备更改为“DLNA/UPnP 流媒体”。
此时,您应该能够从 DLNA 客户端(渲染器/控制点)播放 MPEG 和 FLAC 流。
注意:您可能需要重新启动计算机(或重新启动脉冲)才能开始工作。