分享

XBMC缩略图(本地电影海报、专辑封面等)使用详解

 uqt123 2015-05-12
缩略图

目录 
  • 1. 自定义缩略图
    • 1.1 缩略图缓存
  • 2. 宽图标
  • 3. 同目录下不同项目的缩略图
  • 4. 文件夹缩略图
  • 5. 程序缩略图
  • 6. 音乐缩略图
  • 7. 视频海报缩略图
    • 7.1 用户定义视频缩略图范例
  • 8. 图片缩略图
  • 9. 源缩略图
  • 10. 资料库项目的自定义图标
    • 10.1 音乐
    • 10.2 视频
  • 11. 散列算法
    • 11.1 范例
    • 11.2 样本代码

XBMC一个抢眼的功能是可以为多数项目显示自定义的缩略图(又被称为“图标”)。你可以为文件夹、程序、音乐、视频、书签,当然还有图片指定缩略图。你可以选择让XBMC从互联网自动下载音乐专辑和视频/电影的缩略图,也可以使用本地磁盘中的自定义缩略图。你还可以下载别人做好的自定义缩略图。

自定义缩略图
使用象Adobe PhotoShop或Paint Shop Pro(甚至用Windows画图程序)之类图象工具,你可以在计算机上轻松创建自己独有的自定义缩略图。你也可以从互联网下载别人做好的缩略图(如ChokeManiac.net、xbox-skins.net、MediaIcons.org,和其他一些XBMC爱好者论坛)。你只要把这些缩略图拷贝到正确位置并修改下文件名,XBMC就能把它显示出来了。使用JPG或PNG(用于透明图标)图象格式,图片规格可以是从128x128到256x256的象素大小(图片越大显示效果越好,同时大图片读取速度会慢些)。在非高清示器推荐使用大约100x140的视频/电影缩略图(IMDb常用的规格),音乐专辑使用约75x75的图片(的默认规格)。对于720p/1080i高清显示器,则要使用约182x256的视频/电影缩略图,和约200x200的音乐专辑封面(可在找到)。

缩略图缓存
XBMC把所有缩略图缓存到UserData\Thumbnails\目录,使用文件路径名或目录名的CRC值为文件名。XBMC将首先从缓存目录中读取缩略图。要使你修改后的自定义缩略图显示出来,先得删除缓存的缩略图。

宽图标

宽图标是缩略图最引人注目的一种展示形式。这个特性最早于2007年1月加入到XBMC中,现在已经是集成的一个功能。通过对皮肤xml文件的调整,你可以消除标题名,或把一个图标叠加到另一个上面。
要显示大图标,可切换到新的视图,大宽图标或宽图标。
视图记忆功能:现在XBMC能记住你在不同目录使用的视图,这样你就可以让剧集显示宽图标,而让电影显示普通图标。


同目录下不同项目的缩略图
图标文件名要和相应项目的文件名相同,并且以.tbn为扩展名,如:Transformers.avi, Transformers.tbn。这种方式常用于电影缩略图。
范例:
Movies\path\moviename.avi
Movies\path\moviename.tbn

文件夹缩略图

你把媒体文件存储在不同的子目录以便管理,还能给文件夹指定自定义缩略图。要实现这个效果,可以把JPG/PNG缩略图以folder.jpg为文件名存到你的电影/专辑文件夹中,或者以<文件夹名>.tbn形式存到相应文件夹的同级目录中。
  • 要记住XBMC先检查<文件夹名>.tbn,而后才查找folder.jpg。
  • 有些文档说folder.tbn也可以使用,而通常最好使用folder.jpg。XBMC会正确使用folder.jpg而非folder.tbn。
  • 注意folder.jpg必须以.jpg为扩展名,即使它是一个.png格式的图片。


范例:
Movies\path\foldername\
Movies\path\foldername.tbn

Movies\path\moviename\folder.jpg
Music\path\album\folder.jpg
现在你的媒体文件夹就有一个可爱的自定义缩略图了。
你可以通过advancedsettings.xml修改XBMC用于音乐文件夹的默认图标文件名。详情参见<musicthumbs>标签。

程序缩略图
要为一个游戏、模拟器或应用程序显示缩略图,只要重命名所需图片文件为default.tbn,并将其放置在相应的default.XBE所在的文件夹中。

音乐缩略图
XBMC从多个来源来读取并显示音乐缩略图。首先,标签读取程序会读取并使用专辑和专辑艺术家(或歌曲艺术家)名称来缓存所有内嵌于音乐文件的图片。专辑或艺术家不可用,则以歌曲的目录名来缓存图片。当然,前提是你在系统设置里选择了“启用音乐文件标签信息读取”。
你还可以使用“获取缩略图”从 (AMG)为指定音乐专辑/文件夹下载专辑缩略图,或者对你所有音乐文件扫描并下载。
当你用XBMC为XBox抓取音乐CD时也会下载缩略图,详见Ripping CDs的介绍。
建议按音乐专辑或艺术家分目录存放音乐。这样你还能为每个目录指定自定义缩略图图片。


注意:“启用音乐文件标签信息读取”并启动自动扫描,所有内容都会被缓存。扫描时,所有文件和它们关联的缩略图被存入数据库。在专辑信息对话窗(可从上下文相关菜单打开)中,你可以选择下载在可用的封面图片和你自定义的缩略图。
按下“获取缩略图”按钮,可以选择本地缩略图、当前缩略图和远程缩略图。

缩略图显示程序按以下顺序来查找缩略图:
1) 缓存的专辑缩略图
就是标签读取程序用专辑名和专辑艺术家缓存的嵌入式专辑艺术图片。
2) 缓存的filename.tbn
就是以音乐文件路径名缓存的嵌入式艺术图片。
3) 远程filename.tbn
缓存的远程共享目录中的filename.tbn。
4) 缓存的folder.jpg
从文件夹路径中取得并缓存的folder.jpg。
5) 远程folder.jpg
缓存的远程共享目录中的folder.jpg。
6) Remote foldername.tbn
缓存的远程共享目录中的foldername.tbn。

范例:
本例中audiofilename.mp3的缩略图是audiofilename.tbn:
Music\path\audiofilename.mp3
Music\path\audiofilename.tbn
播放列表、cue表单、SHOUTcast和互联网音频流也一样:
Music\path\audioplaylistname.m3u
Music\path\audioplaylistname.tbn
Music\path\cuelistname.cue
Music\path\cuelistname.mp3
Music\path\cuelistname.tbn
Music\path\shoutcastlinkname.pls
Music\path\shoutcastlinkname.tbn
Music\path\audiostreamname.strm
Music\path\audiostreamname.tbn

 

视频海报缩略图
你可以使用刮削器从互联网获取缩略图并缓存到本地,也可以使用自定义的缩略图。
XBMC按照以下顺序查找并显示缩略图:

1) 缓存缩略图
缩略图以文件或文件夹的路径名的CRC数值缓存到UserData\Thumbnails\Video目录。
2) 用户定义缩略图
对于文件: XBMC检查如果<文件名>.tbn存在就使用它。首次读取后会把它缓存起来。
对于电影: 将首先使用movie.tbn。
对于文件夹: XBMC首先检查文件夹所在目录中的<文件夹名>.tbn,如果<文件夹名>.tbn不存在,再检查这个电影文件夹中的folder.jpg。当然,不管找到那个缩略图,首次读取后会把它缓存起来。


用户定义视频缩略图范例
单个视频文件
本例中videofilename.avi使用缩略图videofilename.tbn。
Videos\path\videofilename.tbn
Videos\path\videofilename.avi
堆叠视频文件
可以使用堆叠中的第一个文件名或堆叠文件名,对于:
Movies\path\moviename-CD1.avi
Movies\path\moviename-CD2.avi
用以下形式都可:
Movies\path\moviename-CD1.tbn
Movies\path\moviename.tbn
电影
如果一个目录内容被设定为电影的话,则此目录中的movie.tbn会被首先使用。本例中videofilename.avi将使用缩略图movie.tbn。
Videos\path\movie.tbn
Videos\path\videofilename.avi
剧集季缩略图
本例中的缩略图将用于电视剧资料库中相应的季,这里xx可以是01、02等。
TV\showfolder\seasonxx.tbn
对于剧集特别篇则为:
TV\showfolder\season-specials.tbn
对于全季则为:
TV\showfolder\season-all.tbn
播放列表和互联网流媒体的例子:
Playlists\path\videoplaylistname.pls
Playlists\path\videoplaylistname.tbn
Streams\path\videostreamname.strm
Streams\path\videostreamname.tbn

图片缩略图
XBMC按照以下顺序查找并显示图片文件的缩略图:
1) 缓存缩略图
缩略图以文件或文件夹的路径名的CRC数值缓存到UserData\Thumbnails\Pictures目录。
2) 图片文件
读取JPEG图片文件中的EXIF缩略图。如果没有,将读取图片文件,生成并缓存缩略图。
3) 文件夹
先看图片文件夹中是否存在folder.jpg,如果没有,XBMC会随机读取文件夹中的4个图片文件来生成缩略图。

源缩略图
你可以通过编辑UserData\sources.xml来改变源缩略图。
注意:源缩略图必须是本地图片!
只要按以下方式修改来源设置:
<source>
<name>Music</name>
<path>xbms://192.168.1.100:1400/Music/</path>
<thumbnail>F:\Apps\XBMC\thumbs\shares\thumb.png</thumbnail>
</source>

资料库项目的自定义图标
你可以通过把自定义图标拷贝到media文件夹来改变资料库项目显示的缩略图,有关项目对应的文件名如下:

音乐
"DefaultMusicArtists.png"
"DefaultMusicGenres.png"
"DefaultMusicTop100.png"
"DefaultMusicAlbums.png"
"DefaultMusicRecentlyAdded.png"
"DefaultMusicRecentlyPlayed.png"
"DefaultMusicSongs.png"
"DefaultMusicTop100Albums.png"
"DefaultMusicTop100Songs.png"
"DefaultMusicYears.png"
"DefaultMusicCompilations.png"
"DefaultMusicSearch.png"
"DefaultMusicPlaylists.png"
"DefaultMusicPlugins.png"

视频
"DefaultMovies.png"
"DefaultMovieTitle.png"
"DefaultRecentlyAddedMovies.png"

"DefaultTvshows.png"
"DefaultTvshowTitle.png"
"DefaultRecentlyAddedEpisodes.png"

"DefaultMusicVideos.png"
"DefaultMusicVideoTitle.png"
"DefaultRecentlyAddedMusicVideos.png"

"DefaultActor.png"
"DefaultDirector.png"
"DefaultGenre.png"
"DefaultStudios.png"
"DefaultYear.png"
"DefaultVideoPlaylists.png"
"DefaultVideoPlugins.png"
此外,"DefaultProgramPlugins.png" 和 "DefaultPicturePlugins.png" 也许可用。

散列算法

缩略图.tbn缓存文件名是用一个散列函数生成的。散列算法基于转换为小写字母的路径名(加文件名)的CRC32较验。本地文件使用所在磁盘符,远程文件使用smb://协议以及用户名和密码。

范例
  • 123456789 返回 0376e6e7
  • F:\Videos\Nosferatu.avi 返回 2a6ec78d
  • smb://user:pass@server/share/directory/ 返回 c5559f13
  • smb://user:pass@server/share/directory/file.ext 返回 8ce36055
注意:
  • 以远程共享使用散列算法时,使用sources.xml文件中指定的路径,包含了 用户名 和 密码
  • 对目录的缩略图使用散列算法时,包含末尾的斜杠。

代码样本
以下为 C# 代码,其运算结果与XBMC的散列函数是一致的。
public string Hash(string input)
{
   uint m_crc = 0xffffffff;
   System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
   bytes = encoding.GetBytes(input.ToLower());
   foreach (byte myByte in bytes)
   {
       m_crc ^= ((uint)(myByte) << 24);
       for (int i = 0; i < 8; i++)
       {
           if ((System.Convert.ToUInt32(m_crc) & 0x80000000) == 0x80000000)
           {
               m_crc = (m_crc << 1) ^ 0x04C11DB7;
           }
           else
           {
               m_crc <<= 1;
           }
       }
   }
   return String.Format("{0:x8}", m_crc);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多