使用gmediarender-resurrect搭建DLNA音箱

官方提供的软件包 gmediarender 好像无法发音,于是使用 gmrender-resurrect

github地址
https://github.com/hzeller/gmrender-resurrect
安装依赖
sudo apt-get install libupnp-dev libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav

#音频sink
sudo apt install gstreamer1.0-alsa gstreamer1.0-pulseaudio

编译依赖
sudo apt-get install build-essential autoconf automake libtool pkg-config

git clone https://github.com/hzeller/gmrender-resurrect.git

编译
cd gmrender-resurrect
./autogen.sh
./configure
make
安装到系统
sudo make install

测试启动
运行 ./src/gmediarender -f “My Renderer”

防火墙

  1. 根据 --port 指定端口 监听 ipv4 tcp 默认 49152
  2. 监听 upnp 1900 组播

sudo iptables -t filter -A INPUT -p tcp --dport 49152 -j ACCEPT
sudo iptables -t filter -A INPUT -p udp --dest 239.255.255.250 --dport 1900 -j ACCEPT

音量

   0db    100     *设置为0  100%音量
  -6db    85        -6  	     85%
 -10db    75      -10  	75%
 -20db    50      -20   	 50%
 -40db    25      -40   	25%	
 -60db    0        -60		0% 静音

创建运行用户 需要创建home目录以保存数据
sudo adduser --system --home /var/gmrender gmrender
日志文件
sudo touch /var/log/gmediarender.log
sudo chown gmrender:gmrender /var/log/gmediarender.log

配置选项文件 由init.d加载使用
/etc/default/gmediarender

#基于alsa
DAEMON_USER=“gmrender:audio”
UPNP_DEVICE_NAME="$(hostname)-PLAY"
INITIAL_VOLUME_DB=-40
GS_SINK_PARAM=“alsasink”
#alsa 使用 aplay -L #pulseaudio 使用 pacmd list-sinks|grep name:
ALSA_DEVICE=“sysdefault”
LISTEN_PORT=49152
DAEMON_EXTRA_ARGS="–mime-filter=audio"

对原始 /etc/init.d/gmediarender 经过修改
创建或替换 /etc/init.d/gmediarender
chmod +x /etc/init.d/gmediarender

#!/bin/sh

### BEGIN INIT INFO
# Provides: gmediarender
# Required-Start: $remote_fs $syslog $all 
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start GMediaRender at boot time
# Description: Start GMediaRender at boot time.
### END INIT INFO

DESC="gmRender"
DAEMON_USER="nobody:audio"
UPNP_DEVICE_NAME="Raspberry"
INITIAL_VOLUME_DB=-10
LISTEN_PORT=49152

#---------------------------------------
#对于原始版本的gmediarender  -I 指定的是ipv4地址  这个与下面的LISTEN 二选一
#LISTEN=`ip -4 route list default|awk -F " " '{print $5}'`; LISTEN=`ip -4 addr |grep $LISTEN|grep inet|awk -F " " '{print $2}'|awk -F "/" '{print $1}'`

#gmediarender-resurrect 的-I 指定的是接口名
LISTEN=`ip -4 route list default|awk -F " " '{print $5}'`

LOG_FILE="/var/log/gmediarender.log"
ALSA_DEVICE="sysdefault"

NAME=gmediarender

#deb包安装路径  ------------------------------------------
#DAEMON=/usr/bin/$NAME
#gmRender-resurrect 编译安装的路径
DAEMON=/usr/local/bin/$NAME

PIDFILE=/var/run/$NAME.pid
DAEMON_EXTRA_ARGS=""

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME
. /lib/init/vars.sh
. /lib/lsb/init-functions

if [ -n "$ALSA_DEVICE" ] ; then
	GS_SINK_PARAM="--gstout-audiosink=alsasink"
	GS_DEVICE_PARAM="--gstout-audiodevice=$ALSA_DEVICE"
fi


# A simple stable UUID, based on this systems' first ethernet devices MAC address,
# only using tools readily available to generate.
UPNP_UUID=`ip link show | awk '/ether/ {print "salt:)-" $2}' | head -1 | md5sum | awk '{print $1}'`


case "$1" in
	start)
		echo "Starting GMediaRender"
		start-stop-daemon  --start --quiet  --exec $DAEMON -c "$DAEMON_USER" --pidfile $PIDFILE -- \
-f "$UPNP_DEVICE_NAME" -d -u "$UPNP_UUID" $GS_SINK_PARAM $GS_DEVICE_PARAM \
--gstout-initial-volume-db=$INITIAL_VOLUME_DB -I "$LISTEN" -p "$LISTEN_PORT" \
--logfile "$LOG_FILE" "$DAEMON_EXTRA_ARGS"
		;;

	stop)
		echo "Stopping GMediaRender"
		start-stop-daemon -x $DAEMON -K
		;;

	*)
		echo "Usage: /etc/init.d/gmediarender {start|stop}"
		exit 1
		;;
esac

服务启动
sudo systemctl start gmediarender.service

前台运行

sudo -H -u gmrender bash -c "gmediarender -I ens3 --port=49152 --friendly-name=DOPLAY --gstout-initial-volume-db=0.0 --gstout-audiodevice=sysdefault  --uuid=20b7e477-9f8a-4ba0-9b3c-b2b342dd2f45 --logfile=stdout --mime-filter=audio -d"

Android播放体验
网易云 dlna 只能播放一首 —可以连续播放
qq音乐 可以使用 dlna 但是遇到不支持qplay播放的就会暂停播放 这时需要打开界面 下一首
应用管理 -> QQ音乐 -> 电池->启动管理-> 去掉选中 自动管理

但是碰到收费音乐就会停止 需要手动下一首

电池 或者
自动管启动 选中
关联启动 选中
后台运行 选中

如果/dev/snd被独占了 例如docker --device /dev/snd 宿主的gmediarender 就不能播放声音

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值