[aTV2]
XBMC + NAS 高级运用全攻略(原创),补充插件的用法,2/22日补充:修改中文影片名
zypro 发表于 2011-9-17 02:52:10
最近都在讨论NAS的问题,本帖不涉及NAS的选购,只是以楼主家里的情况为例,介绍一些XBMC的高级运用,希望抛砖引玉
先介绍一下硬件配置:
1。 客厅,HTPC(Win7), HDMI接大屏幕液晶,光纤音频输出至功放,由功放做DTS/AC3解码输出至5.1扬声器 2。 书房,Mac Mini (Mac OSX) 23'Dell 液晶显示器 3。 卧室,Apple TV2 + XBMC ,HDMI接液晶电视 4。 Nas,Synology DS211j 装载2*2T Raid0 共4T空间,内有几百部720P的电影(以好莱坞电影为主) 5。 Buffalo 300N无线路由 + 千兆交换机 -----------------------------------------------------------------------------
XBMC和NAS的结合,可以达到以下几个效果:
1。 所有设备共享Nas上的电影,照片(废话) 2。 所有设备共享XBMC的Library和Thumbnail(缩略图) 3。 一部电影看到一半,可以在其他房间继续播放
先介绍一下如何共享Library Library的概念不解释了,XBMC自动扫描添加的电影(国内只能是从TMDB,因为IMDB被q1ang),会把所有的信息存入本地的数据库,如果多个房间有多个设备,那就需要添加多次。 其实XBMC内置了对mySql数据库的支持,由于几乎所有的Nas都是基于Linux内核的,所以无论你买了什么牌子的Nas,一般都可以找到内置的mySql数据库(某些牌子需要额外安装一下)。 当然如果Nas不支持的话,可以在电脑上安装一个mySql,这种情况也适用于把PC当成共享源的情况。
1。 假设你的Nas已经有了mySql数据库的服务,以synology ds211j为例,这个服务默认是不开启的,先开启
2。使用任意支持mySql的客户端用root用户登陆到数据库,新建一个库,取名为xbmc,然后新建一个用户名/密码都为xbmc,赋予所有操作权限。 具体客户端的使用,不属于本文范围,推荐去下载一个Navicat,支持windows和mac平台,使用起来一目了然,没有数据库经验的人也会操作。
3。启动XBMC,在setting-》Video-》library下,把所有的数据export出来,选择单一文件存放
4。新建一个文件advancedsettings.xml,内容如下:- <advancedsettings> <videodatabase> <type>mysql</type> <host>Nas IP</host> <port>3306</port> <user>xbmc</user> <pass>xbmc</pass> <name>xbmc</name> </videodatabase></advancedsettings>
复制代码 将这个文件复制到各个平台下的XBMC的userdata目录下,这样,XBMC启动时就会认为Nas上的mySql数据库是默认的Library位置。 各个平台的userdata目录位置如下: windows7: 用户目录\AppData\Roaming\XBMC\userdata Mac OSX: 用户目录\Library\Application Support\XBMC\userdata 默认情况下Library是隐藏的,在finder中看不到,最简单的方法是用命令行方式直接cd进去然后复制 Apple TV2: /private/var/mobile/Library/Preferences/XBMC/userdata 在win下可以用winscp来连,在Mac OSX,直接可以用scp命令复制上去,默认root密码是alpine- scp advancedsetting.xml root@atvip:/private/var/mobile/Library/Preferences/XBMC/userdata
复制代码 5。启动XBMC,此时会发现,所有的Movie下都是空白一片,因为Library的位置改成了Nas,而此时这个库是空的,所以把步骤3里面export的数据,import进去。此时就会发现,无论在哪台设备上启动XBMC,所有的数据都已经同步了。
6。数据同步了,但是缩略图每个平台都要单独下载,现在来解决这个问题 把userdata下的Thumbnails目录复制到Nas上的一个共享目录中,然后在上面提到的advancedsetting.xml中追加以下内容- <pathsubstitution> <substitute> <from>special://masterprofile/Thumbnails</from> <to>smb://用户名:密码@NasIP/共享目录名/Thumbnails</to> </substitute></pathsubstitution>
复制代码
注意,追加的内容要放置在<advancedsettings>这个tag中
然后把各自平台的Thumbnail目录都删掉(不是必须的),打开XBMC,发现缩略图也同步了
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
说一下Apple TV2播放电影时Buffering的问题。 我们访问Nas时,最常用的协议是SMB,也就是大家熟悉的Windows文件共享协议。这个协议大部分时候工作的很好,速度也很不错,兼容性是最强的。 但是很可惜,在ATV2/XBMC中的内置的该协议,存在比较大的效率问题。 具体表现就是看Nas中电影的时候,经常会缓冲。 很影响心情。
解决这个问题的最佳方法就是换一种网络协议。 最常见的适用于ATV的,有以下几种: 1。 SMB windows文件共享 2。 AFP Mac文件协议 3。 NFS 发自Soloris的一个网络文件共享协议,现在是几乎所有的Linux内置的协议 4。 uPnP 以上各种协议,同时也需要Nas支持(Synology都支持)
其中AFP协议在ATV和Mac上工作的都很好,但是很遗憾,Windows不支持该协议,所有如果家里有Windows电脑,同时需要共享访问Library的,就不能使用该协议
uPnP是专用于网络流媒体传输的,理论上是最佳选择,而且各个平台都支持,但是有一个致命的缺陷,uPnP不是基于文件/目录结构的,所以无法装载字幕。在国内看美国大片的话,这个缺陷几乎不能接受。
NFS协议在ATV和Mac上都能正常工作,但是Windows对该协议的支持不是Native的,不过好消息是,从9月版的XBMC Nightly Build中,已经引入了nfslib的代码,所以XBMC for Windows已经可以支持NFS协议。 所以除去SMB之外,NFS作为一个全平台支持的协议,成为我们的另一个选择。
简洁描述一下NFS协议的使用方法: 1。 在NAS上打开NFS协议支持,由于目前几乎所有的NAS都是基于Linux,所以几乎都可以支持NFS协议,以synology ds211j为例:
2. 对Nas上的共享文件夹进行权限设置
看似复杂,其实就如Windows文件共享一样,先选择需要共享的文件夹,然后设置哪些IP可以访问,填*的话,就代表所有的IP NFS协议不是基于用户名密码的,而是基于网络主机/ip的认证。所以只需设置允许的IP,这里填的是万用符号“ * ”
理论上到这一步就可以通过NFS协议来访问数据了,但是在Apple TV2/Mac OSX下,对NFS协议的使用有个特殊的地方,非root用户是不能使用reserved ports的,而NFS Server默认是不支持非reserved ports,对于这个规则,这里不展开,只需要知道,如果要让Apple TV2和Mac OSX使用NFS,需要在NFS的Server上(也就是Nas)的配置文件中增加一个参数“ insecure”。 这个参数只能手工添加,在Nas的/etc/exports文件中,记录了所有通过NFS共享的目录信息。- /volume1/Movie *(rw,insecure,async,no_wdelay,no_root_squash,insecure_locks,anonuid=0,anongid=0)
复制代码 insecure这个参数需要手动添加。 然后重启NFS服务。
3。 对于我们已经存在的library,从SMB换成NFS协议之后,需要重新扫描电影信息。 其实更换一个网络协议,大可省略这一步,下面简单说一下步骤。 通过XBMC Setting-》Video -》export library 导出的文件,里面有一个videodb.xml,找到这个文件,用文本编辑器打开,可以看到,所有的电影的路径都记录在内,如果原先是通过SMB协议共享的,则路径应该类似这种- smb://用户名:密码@IP地址/文件夹/文件名
复制代码 我们只需把前一段替换一下,全部替换- smb://用户名:密码@IP地址/替换成nfs://IP地址/volume1/
复制代码 在不同的Nas系统上,这个volume1可能会有变化,可以参考上面提到的etc/exports文件的内容。
然后把mySql上的这个xbmc的数据库清空,可以直接删除整个数据库,然后再建一个空的,比较省事。 再把这个修改过的文件,通过xbmc导入一遍,就可以直接把协议切换成NFS --------------------------------------------------------------------------
XBMC还支持自定义插件。 一般是由python语言开发的脚本。 推荐几个插件包:
1。 国内视频网站的插件包,是国内几个高手做的,在googleCode上开源了,大部分都很有用,可以用XBMC看youku,搜狐高清,天翼高清等,一般国内热播的连续剧在上面都能看到,清晰度往往比数字电视还要好。 速度很好。 家里如果有人喜欢看国内连续剧的,必装。 2。 Adult插件包,不解释。 速度较慢,尝尝鲜还行 3。 Tommy‘s 插件包。 里面有不少国外的电视剧,ESPN等频道,经常更新,也有热播的电影。 速度一般
一般插件包都是以Zip格式打包的,下载到XBMC能访问到目录(ATV的话需要放置到Mobile目录下),然后在Setting菜单下,用install from Zip file来安装。 安装之后默认并不启用,还需要在插件菜单下启用,就能使用了。 ATV的话,需要复制到Mobile目录下才能访问到。 windows下用winscp,OSX下用下面命令就直接可以复制过去,密码默认是alpine- scp xxx.zip root@atvIP:/var/mobile
复制代码 附上提到的这几个插件
2012-2-22日补充------------------------------------------------------------------------------- 发帖的时候本区没有什么人气,所以离开几个月没有回来看,没想到已经回复了10页了 现在补充一些内容: 1。针对回复中对NFS的insecure参数如何添加不明白的,原文写的不是很清晰,补充一下: 所有的基于Linux/Unix的系统,都可以用SSH协议登录上去。 目前主流的Nas几乎都是可以这样做。 在Windows中,没有内置的SSH工具,所以需要去下载一个,可选择的有很多,只要支持SSH协议即可,比如Putty 在非Windows系统中,几乎都内置了SSH命令行,以OS X为例,直接在命令行中键入 ssh admin@NasIP,然后根据提示输入密码即可成功登录,用户名这里用的是admin,也可能是root或者其他,登录之后,直接vi /etc/exports就可以打开该文件修改,不会用vi的建议google一下。vi的命令只需记住:进入编辑模式,先按一下键盘上的i,然后就可以编辑。编辑完成之后按键盘上的esc,然后键入:wq就可以保存退出,如果编辑错了不想保存就键入:q!
2。XBMC目前的版本是不支持中文输入的,所以如果Library里面的影片名字想编辑成中文,只能在数据库中直接修改。简单说一下方式: 还是用任意支持my sql的客户端登录,以上文提到的Navicat为例,连上Nas上的my sql之后,打开xbmc_movie数据库,然后在Tables下找movie表,双击打开
可以看到c00字段都是电影名称,直接修改就可以改成任意你想要的名字。
3。最新版的XBMC支持MovieSet的功能,也就是一个系列的电影在XBMC中可以显示为一个系列,比如哈利波特1-7原本是7部电影,现在可以显示为哈利波特全集,集中在一个系列里,如下图
要实现该功能,需要在最新版的XBMC中,进入系统设置,在Group movies in sets上打钩
TMDB削刮器会自动把很多同系列的影片归为同一个movie set,但是也有很多例外,比如最近的暮光之城:破晓,削刮器就没有自动归到暮光之城的movie set中,遇到这类情况,只能自己动手,而XBMC的界面上是没有地方可以进行设置的,所以只能改数据库。 动手之前,先说一下大致的数据结构。 在数据库中,电影的相关信息首先存放在movie表中,上面提到的把电影改成中文名就是在这张表当中修改。 在这张表中,我们需要找到我们要修改的电影,然后把第一个字段idMovie的值记下来。 参照前一张截图中,比如功夫熊猫1和2的idMovie值为126和127。 然后数据库中还有一张表sets:
里面记录了削刮器自动给你产生的movieset,这个表可以修改,也可以添加。 修改通常是改改名称,把英文改成中文的。 添加的话,要注意第一个字段idset的值是一个不可重复的顺序增长的整数。 要把电影加入到Movieset中,还有一张表需要知道setlinkmovie
以功夫熊猫1和2举例: 假设削刮器没有把功夫熊猫归为movieset,我们首先要在sets表中增加一条记录,idset填一个数字比如11,并且记下,然后在strSet中填入“功夫熊猫(系列)” 然后在movie表中找到功夫熊猫1和2的idMovie,假设是126和127 然后在setlinkmovie中增加两条记录
大功告成。打开XBMC看看,是不是出现了功夫熊猫(系列),点进去就出现两部功夫熊猫电影。 |
|