跳到主要内容

关于HiFier

HiFier的设计目标#

  • 跨平台:HiFier目前使用的是react-native框架进行开发,为跨平台开发提供了基础支持。目前已经支持iPhone, iPad, Mac(基于iOS接口,非原生)平台,在不久的将来也要支持Android平台。
  • 流畅的用户体验:流畅的播放体验和UI体验。
  • 降低播放器的使用门槛:尽量不出现比较专业的名词;自动发现局域网内的服务器,更多的专业技术名词尽量让程序自己来消化掉。
  • 专业的播放器,专业的HiFi音乐播放器:
    • 去掉任何播放过程中不需要的中间环节,把最原始的声音呈现出来: 任何对音频数据的处理都是有损失的,包括重采样,均衡器,声道合并等, 目前播放器在播放音乐过程中已经把任何的多余环节都去掉了,保证了最佳音质。并且支持高解析度音频。(后期有增加均衡器的计划,要保证关闭均衡器后依然保证原始输出)
  • 降低用户的使用成本:目前支持不限数量的云盘和账户支持,每个云盘都有一个免费容量,你可以注册多个账户,同时使用;云盘是最好的存储方案,不需要任何专业知识就能在任何有网络的地方使用。由于播放器支持自动缓存能力,再次播放的时候几乎不需要流量,还不需要你手动去下载后离线播放。
  • 兼顾高阶用户:支持媒体服务器。支持DSD播放,支持DoP输出。

HiFier 目前的能力#

1. 媒体格式的支持情况#

我们的设计目标是支持所有的音频格式和常见的视频格式,播放器内核使用了FFmpeg,可以支持几乎所有的媒体格式的播放。

所以如果您在使用过程中发现某些音频格式不支持,或者根本没有显示出这个格式的文件,请联系我们,提供对应的文件,我们会很快支持。

一个例外是ISO文件,这种文件本身其实是光盘的镜像,目前我们还没有支持,此类文件体积很大,个人感觉这种格式其实体验不太好,所以暂时没有支持;支持此格式要花费而外的开发成本,但目前感觉这种格式也不怎么流行,所以暂时还没考虑支持;

对于视频格式,目前支持了常见的mp4,mkv,flv,ts格式,支持hevc,avc的硬解码和软解码,但是对HDR视频没有做过多的支持,目前只支持标准的HDR10的渲染,对于杜比视界目前没有做适配。

2. 云盘的支持情况#

目前我们支持以下云盘的接入:

Google Drive(未认证),Dropbox,OneDrive(不支持企业版,需要认证),Box, 阿里云盘,115网盘,百度网盘,pCloud

接入云盘从技术本身来讲,成本很低,只要接入的厂商的api不是特别古怪,一到两人天的成本就能接入完成。但是某些云盘需要资质认证。

所有云盘的接入全部使用官方api,不用任何非正规渠道的api。

目前115网盘不支持在app内登录,需要跳转到系统浏览器。

3. 文件服务器的支持情况#

目前支持webdav和samba文件服务器的挂载。

samba#

也就是Windows文件共享,由于其安全性问题,建议只在局域网内使用,不要在公网使用,这个协议的设计也是在局域网内的。

WebDAV#

使用的是标准的http协议,支持密码明文和摘要进行认证,这个和具体的服务器有关,由于两种方式都不是很安全(明文最不安全),有条件的,在公网上使用时,建议都是用https协议。

FTP, NFS等协议目前并不流行,暂时没有计划支持。

4. 媒体服务器的支持#

HiFier开始设计是文件服务类型的客户端,媒体服务器是后续支持的,由于媒体服务器的歌单,收藏等功能和HiFier本身提供给文件服务器的这些功能冲突了,所以目前的历史记录,歌单,收藏等功能都不会同步到服务器上去,只保存到程序中。目前对媒体服务器的支持仅限于读取媒体服务器的内容进行播放,搜索等。

针对目前的媒体服务器被圈养在HiFier中的这个问题,未来考虑单独做一个app,专门支持媒体服务器,应该能获得更好的体验。

提示

建议有条件的情况下,所有媒体服务器都是用https协议,以防止服务器密码泄漏。

目前支持的服务器

EMBY 和Jellyfin#

这两个服务器其实用的是一套接口,所以在添加服务器的时候其实用哪个都可以,此协议支持局域网发现,HiFier可以自动发现局域网内的服务器。

Subsonic API#

Subsonic已经停止更新了,目前用的比较多的是Navidrome;Navidrome对Subsonic的api有一些扩展,但是我研究发现这些扩展的api并没有什么实际的用处,所以并没有用;

Subsonic API的设计比较陈旧,最显而易见的问题是客户端不知道服务器里面有没有某个歌曲的封面信息,在没有图片资源的情况下返回一个默认的图片;这样导致客户端下载大量重复的图片,并且无法使用其他图片代替,图片的url地址和歌曲的id有关,所以即使是同一个专辑的封面,显示的时候也会下载很多次,客户端没有任何办法复用和缓存图片。

Navidrome有一套自己的web api,它自己的web客户端用的就是自己的这套api,但是这套api目前看也没有对原API有更大的提升;并且这套api,作者声明是不稳定的,会随着服务器的版本升级而改变,并且没有公开;也就是说,它这个api就是为了实现它服务器自带的web 客户端的,可能随时改动,HiFier作为一个独立于服务器的客户端,就不太适合用他的这些api。

群晖AudioStation#

支持通过quickConnect ID和地址进行连接;AudioStation本身并没有发现协议,目前的实现逻辑是:先发现群晖的samba,然后判断是否是群晖,是否有安装AudioStation,所以你的群晖如果没有开启samba的话,AudioStation的自动发现功能也没法用。

AudioStation实现的比较弱,没有办法查询最近添加的功能,也不记录任何播放历史,但是他支持电台,后续可以加上。

5. CarPlay#

因为开车的时候不适合做复杂的操作,所以目前CarPlay支持的比较简单,我不希望任何人因为操作CarPlay分心开车。目前是支持直接播放下载目录下的内容,历史记录,收藏的歌曲,还有之前保存的歌单,可以轻松点击进行播放,不提供文件或者媒体服务器浏览的能力,如果您有什么需求需要在CarPlay上实现,在反馈前请确认此功能操作是否足够简单。

6. DoP输出能力#

受到iOS系统的限制,目前最高输出DSD128,高于此采样率的DSD将被转换成pcm进行输出,目前测试可以解码的最高DSD为 DSD1024,但可能会因为手机的性能而有所不同。由于目前的mac版本,使用的是iOS的底层库,并不支持DSD输出,如果后续需要在Mac上输出DSD则需要单独支持mac系统。

Android的DSD输出能力理论上是可以高于iOS系统的,待后续支持Android版本后再更新。