DLNA是用来在局域网中传输媒体文件的协议, 我主要是用来传输文件给电视机使用, 当然网内的手机电脑也可以获取树莓派上分享出来的资源.

安装配置minidlna

sudo apt install minidlna ufw
sudo ufw allow 8200
sudo vi /etc/minidlna.conf

上述命令安装了minidlna, 放行了dlna默认使用的8200端口, 并且打开了minidlna的配置文件/etc/minidlna.conf.

minidlna.conf中找到media_dir=, 将其后改为分享文件存放的目录, 再找到friendly_name, 去掉前面的#, 后面加上给DLNA服务器取的设备名, :wq保存.

sudo service minidlna force-reload
sudo systemctl enble minidlna

然后就可以在电视机等接入相同局域网的设备的家庭共享中添加树莓派zero w并获取其上的资源啦!

为了避免资源无法访问, 我给了分享的资源777的权限.

好像现在用smb协议分享文件的人比较多, 因为DLNA不支持密码登录, 只要是在同一个局域网的人都可以访问到, 除非用防火墙限定访问DLNA 8200端口的IP/MAC.

给树莓派添加媒体资源

最简单的就是直接给树莓派插U盘. 不过既然这样为什么不直接把U盘插入电视呢? 还可以用scp给树莓派传输资源, 同一个局域网内用scp仅有1MB/s的速度, 一部高清电影要传半小时, 还不如直接拷上U盘插电视… 而且scp给树莓派传资源时候树莓派的CPU使用率增加了不少, 要是再跑个什么服务树莓派岂不是要卡死… (传输速率与树莓派CPU使用率呈正相关, 估计是ssh数据传输要加密解密, DLNA传文件不加密, 所以电视上访问DLNA资源时候并没有费CPU%)

树莓派与U盘相比的优势在于它是一台完整的电脑, 可以去网络上整晚整晚地下载资源, 又没有PC费电. 某些网站的资源wget就能下载, 但是还有很多资源需要使用P2P网络.

有些网站提供迅雷下载链接, 格式是thunser://***, 后面被省略的部分其实是经过base64加密过的原链接, 在GNU/Linux系统中可以用base64 -d解密出原链接, 如果是http/https链接就可以用wget下载.

Transmission

Transmission是一个BT下载软件, 而且它可以通过网络远程控制下载. 直接apt下载就行, 默认使用9091端口.

sudo apt install transmission-daemon
sudo ufw allow 9091
sudo usermod -a -G pi debian-transmission

修改配置文件/etc/transmission-daemon/settings.json, 找到下列项目进行修改(我没按顺序写, 建议使用vim的查找功能, /向下查找, ?向上查找).

"download-dir": "DLNA分享资源所处目录",
"incomplete-dir": "/home/pi/incomplete",
"rpc-username": "用户名",
"rpc-password": "密码",
"rpc-whitelist-enabled": false,

最后重新加载配置文件和设置开机自启.

sudo service transmission-daemon reload
sudo systemctl enable transmission-daemon

这样就能够从其他机器通过浏览器访问树莓派IP:9091而控制树莓派下载BT资源了.

听说用aria2+yaaw能够下载更多协议的资源, 配合浏览器的百度网盘插件还能够下载网盘中的资源. 但是依赖aria2配置麻烦, 二来transmission已经够我用了, 就不再折腾aria2了.

安卓手机的妙用

安卓手机并不适合搭建网站服务器, 配置LNMP并不容易, 然而配置安卓的DLNA server却异常简单, 一个DLNA Server的app就能够搞定, 再加上百度网盘迅雷等app的官方支持, 真的很适合作为家庭媒体的共享中心. 而且一个省电的安卓机可以比树莓派省电! (别问我怎么算的.)

但是我已经用树莓派作为web服务器了, 就将DLNA服务和BT下载服务也搭建在树莓派上了(免得要付两倍电费)



server software card computer

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!