树莓派搭建一个DLNA多媒体下载机

配置表

  • 树莓派一台
  • TF卡一张
  • 1T硬盘一个
  • 硬盘供电一个

1. 安装系统

我们选择原生系统 RaspBian

RaspBian下载地址: 点击下载

将下载的img写入到TF卡

Windows

Windows下直接使用 win32diskimager 工具

win32diskimager下载地址: 戳我下载

Mac

前往我的另外一篇博客: 点我前往

2. 启动树莓派

系统准备就绪,接上电源,接上网线,启动PI

启动后使用SSH登录(将下面的IP改为你的树莓派地址)

ssh pi@192.168.1.1

默认账户 pi

默认密码 raspberry

3. 启用root账户

为什么要启用? 因为我懒的一直用sudo

设置root账户密码

pi@raspberrypi:~$ sudo passwd root
Enter new UNIX password:   #输入第一遍密码
Retype new UNIX password:  #输入第二遍密码

启用root账户登录

pi@raspberrypi:~$ sudo passwd --unlock root
passwd: password expiry information changed.

输入上面第一行代码 第二行是提示错误的代码

原因是 新版本ssh默认关闭root登陆 你可以修改一下ssh的配置文件

编辑配置文件 启动

pi@raspberrypi:~$ sudo nano /etc/ssh/sshd_config

Ctrl + W 快捷键 搜索 PermitRootLogin without-password

修改 PermitRootLogin without-password 为 PermitRootLogin yes

Ctrl + O 快捷键 保存

Ctrl + O 快捷键 退出 Nano 编辑器

执行完之后,用 reboot 命令重启,这样就可以解锁root账户。

使用root账户登录

ssh root@192.168.1.1

4.准备硬盘

准备硬盘格式

安装程序 支持硬盘格式

apt-get install ntfs-3g
apt-get install exfat-nofuse

装上这两个模块后,就可以支持 NTFS 和 exFAT 了

查看硬盘

root@raspberrypi:~# fdisk -l
Device     Boot Start        End    Sectors  Size Id Type
/dev/sda1        2048 3907026943 3907024896  1.8T  7 HPFS/NTFS/exFAT

上面的/dev/sda1 就是需要用到的

为了性能问题,格式化硬盘为ext4

mkfs.ext4 /dev/sda1

挂载硬盘

新建一个文件夹用来挂载硬盘

mkdir -p /mnt/disk

编辑/etc/fstab文件,就可以进行开机自动挂在配置了

/dev/sda1       /mnt/disk      ext4    defaults,noatime        0       0
/dev/sda1       /mnt/disk      ntfs    defaults,noatime,uid=1000,gid=1000        0       0
/dev/sda1       /mnt/disk      exfat    defaults,noatime,uid=1000,gid=1000        0       0

执行命令 让配置生效

mount -a

5.安装迅雷远程下载

下载安装迅雷

前往下载迅雷固件 点我下载

选择 armel_v5te_glibc 版本

将程序下载到目录 /mnt/xunlei (你可以选择其他目录)

启动迅雷程序

./portal

启动成功后会出现一串激活码, 类似于 H2DS72

将激活码填入 迅雷远程下载

将迅雷程序添加到开启启动项

编辑 /etc/rc.local 文件

在 exit 0 之前添加执行代码

./mnt/xunlei/portal

迅雷安装完成,随时随地 看见喜欢的电影 可以直接到迅雷远程下载进行下载

6.安装minidlna

我们可以直接使用 apt-get install minidlna 安装

但是安装之后的dlna协议,不支持rmvb格式 所以我们要下载源码 进行修改后编译

添加源:

echo "deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free" | sudo tee -a /etc/apt/sources.list

更新源:

apt-get update

安装编译环境依赖包:

apt-get build-dep minidlna -y

下载minidlna1.1.4源码:

wget http://sourceforge.net/projects/minidlna/files/minidlna/1.1.4/minidlna-1.1.4.tar.gz

解压

tar -xvf minidlna-1.1.4.tar.gz

修改源码

metadata.c (840行左右)

else if( strncmp(ctx->iformatctx->name, "matroska", 8) == 0 )  
    xasprintf(&m.mime, "video/x-matroska");  
else if( strcmp(ctx->iformatctx->name, "flv") == 0 )  
    xasprintf(&m.mime, "video/x-flv");  

/* 添加下面的代码 */ 
else if( strcmp(ctx->iformat->name, "rm") == 0 )  
    xasprintf(&m.mime, "video/x-pn-realvideo");  
else if( strcmp(ctx->iformat->name, "rmvb") == 0 )  
    xasprintf(&m.mime, "video/x-pn-realvideo");  
/* 添加上面的代码 */ 

if( m.mime )  
    goto video_nodlna;  

upnpglobalvars.h(169行左右)

⚠️ 在 “http-get::application/ogg:,” 后 添加一个反斜杠

"http-get:*:audio/mp4:*," \  
"http-get:*:audio/x-wav:*," \  
"http-get:*:audio/x-flac:*," \  
"http-get:*:application/ogg:*," \  

/* 添加下面的代码 */ 
"http-get:*:video/x-pn-realvideo:*"  
/* 添加上面的代码 */ 

#define DLNA_FLAG_DLNA_V1_5      0x00100000  
#define DLNA_FLAG_HTTP_STALLING  0x00200000 

utils.c (381行左右)

ends_with(file, ".m2t") || ends_with(file, ".mkv")   ||  
ends_with(file, ".vob") || ends_with(file, ".ts")    ||  
ends_with(file, ".flv") || ends_with(file, ".xvid")  ||  

/* 添加下面的代码 */ 
ends_with(file, ".rm")  || ends_with(file, ".rmvb")  ||  
/* 添加上面的代码 */ 

#ifdef TIVO_SUPPORT  
    ends_with(file, ".TiVo") ||  
#endif
    ends_with(file, ".mov") || ends_with(file, ".3gp"));  

安装编译环境

执行命令

apt-get install autoconf automake autopoint
./autogen.sh
./configure

编译并安装

make
make install

移动配置文件并编辑

cp minidlna.conf /etc/
nano /etc/minidlna.conf

修改media_dir字段, 将media_dir字段修改为你的硬盘挂载目录

media_dir=/mnt/disk

测试minidlna

/usr/local/sbin/minidlnad -d -v  

没出错就ctrl+c 结束进程

添加到开机启动

cp linux/minidlna.init.d.script /etc/init.d/minidlna
chmod 755 /etc/init.d/minidlna
update-rc.d minidlna defaults

所有配置完成, 开启你的设备 看看能不能查找到