Jellyfin是什么?Jellyfin是开源构建的媒体解决方案,可以收集、管理流媒体,并通过运行Jellyfin服务器,通过web、移动终端甚至TV访问Jellyfin服务器。

令三星电视垂涎的Jellyfin的强大功能
三星的TIZEN系统和苹果的IOS系统一样都是闭源系统,表面上APP只能安装官方APP,官方源少之有少,要实现影院级的观影效果要么借助蓝光播放机,要么就开发一个类似于KODI的媒体中心,所以,Jellyfin能不能在三星电视上实现呢?
不过方法肯定是有的,三星Tizen系统还提供了一种安装其他源的方法,那就是开发者模式,换句话说,就是软件的提供者必须是官方认证的开发者,其实认证的方法很简单,直接在三星官网注册就行了,然后就是软件的开发,所幸Jellyfin的开发者也考虑了TIZEN系统,相应的也出了开发教程,但是笔者第一次按照教程来的时候,也遇到了许多坑,足足花了8个小时才安装成功,初探之后发现方法还是挺简单的,因为有些教程确实在误导你,下面我就结合windows和Ubuntu系统说一下具体的流程。
一、前期准备
开发软件:
Tizen Studio with IDE or Tizen Studio with CLI (https://developer.tizen.org/development/tizen-studio/download)

windows系统选择Windows安装,ubuntu系统选择Ubuntu安装
Git(windows安装)
Node.js 16+
Samsung accountWindows系统可以直接安装Tizen Studio 5.0 with IDE installer和Tizen Studio 5.0 with CLI(command line interface) installer ,而Ubuntu系统不建议用root权限安装,直接在下载目录下:
sudo chmod +x Tizen Studio 5.0 with IDE installer
sudo chmod +x Tizen Studio 5.0 with CLI(command line interface) installer
./ Tizen Studio 5.0 with IDE installer
./Tizen Studio 5.0 with CLI(command line interface) installer
这样就自动安装了。
现在在Windows系统或者Ubuntu系统下我们都可以看到'TIZEN STUDIO'和'TIZEN STUDIO Package Manager'这两个开发软件。

在'Package Manager'上选择除了mobile和wearable外的所有支撑软件(这里也可以通过命令安装,但是经过踩坑,我是严重不建议的),安装完毕后,你将会看到如下软件(‘Certificate Manager’、'Device Manager'是必须的安装)。

二、安装Node最新版
Windows系统可以从官网直接下载最新版Node16安装,而Ubuntu系统则需要通过一定的方法(唯一有效的)安装,这也是踩坑最多的地方,因为Ubuntu系统默认最新的是Node12。
首先在官网(https://nodejs.org/en/)下载最新的版本:

先在Ubuntu系统安装默认的nodejs,再安装最新的nodejs,这个过程一定要注意,在终端输入如下命令:
sudo apt install nodejs
wget https://nodejs.org/dist/v18.12.1/node-v18.12.1.tar.gz 下载得到gz压缩包,输入:
sudo tar -xvf node-v18.12.1.tar.gz 得到node-v18.12.1LTS文件夹,并移到通用的软件安装目录 /opt/:
sudo mv node-v18.12.1 /opt/ 建立软连接,变为全局,直接替换原来版本的node(切记: 运行完第一行命令后可能会出现sudo权限不可用的情况,所以一定要另外打开一个终端,并输入:'sudo -i', 保持登录root账户,方便第一个终端出错后直接纠正!!!!):
sudo chmod -R 777 /usr/bin #运行完这行命令后可能会出现sudo权限不可用的情况,所以一定要再打开一个终端,并输入:'sudo -i' 登录root账户,方便出错后直接纠正
sudo ln -s /opt/node-v18.12.1/npm /usr/bin/
sudo ln -s/opt/node-v18.12.1/bin/node /usr/bin/ 验证是否安装成功:
node -v
npm -v 如果不是对应的版本号,则说明没有安装成功,需要重新安装。
三、构建Jellyfin-tizen
Clone 或者直接下载Jellyfin Web repository (https://github.com/jellyfin/jellyfin-web):
git clone https://github.com/jellyfin/jellyfin-web.git Clone 或直接下载 Jellyfin Tizen (this) repository(建议用git Clone):
git clone https://github.com/jellyfin/jellyfin-tizen.git 构建 Jellyfin Web,输入:
cd jellyfin-web
SKIP_PREPARE=1 npm ci --no-audit
npm run build:production 等待完成,时间可能有点久,失败一般是网络问题,重来就行。
构建Tizen-Interface,终端输入:
cd jellyfin-tizen
JELLYFIN_WEB_DIR=../jellyfin-web/dist npm ci --no-audit 等待完成,时间可能有点久,失败一般是网络问题,重来就行。
同时可打开‘Certificate Manager’配置证书文件了(官网链接:Creating Certificates | Samsung Developers)
四、构建证书
在菜单栏中,单击Tizen STUDIO > 证书管理器。
单击 + 按钮以创建证书配置文件。 证书配置文件将包含作者证书和分发服务器证书。
选择三星以生成证书以开发和安装到三星设备,您可以将应用程序上传到应用商店。但是,如果要使用模拟器并且没有任何计划将应用程序上传到应用商店,只需选择SAMSUNG即可在本地创建证书。

选择设备类型,然后单击下一步。
选择“创建新的证书配置文件”以创建新的证书配置文件。如果是选择现有证书配置文件,请参阅管理证书配置文件。

选择“创建新的作者证书”。如果是选择现有作者证书,请参阅管理证书配置文件。

使用高级选项菜单,您可以选中使用现有作者证书选项以选择 Android 密钥库,也可以选择现有的三星作者证书。

相同的签名密钥有助于维护Tizen Gear应用程序和Android移动应用程序之间的安全对等身份验证。您可以从附件 SDK 中找到更多详细信息。如果选择三星作者证书,您只需使用相同的信息续订证书即可。此续订的证书将与原始 RSA 密钥相同,因此可以保证升级应用程序。
输入作者名称和密码。建议设置一个强密码,不要忘记它。如果要在下一步中对分发服务器证书使用相同的密码,请选中下面的框。其他字段包含更多要输入的 CSR 信息,但不是必填字段。

在下一步中,将弹出三星帐户登录。登录几秒钟后,即可获取作者证书。

作者证书应该是安全的。因此,我们建议您进行备份。您可以通过单击“浏览”按钮来指定备份位置。
注:要获得证书,您应该拥有一个三星帐户。
如果您还没有,请创建一个新帐户。
下一步是创建分发服务器证书。

选择“创建新的分发服务器证书”。如果是“选择现有分发服务器证书”,请参阅管理证书。

选择分发服务器证书的权限级别。若要确保实现的 API 在设备中正常工作,应使用具有适当权限级别的分发服务器证书对应用程序进行签名。
为了有效保护设备系统和用户私有数据,Tizen 安全架构基于 Linux 基础安全模型的权限和应用签名,包括进程隔离和强制访问控制。用户必须能够授予安全敏感操作的权限
公共 - 对所有 Tizen 应用程序开发人员使用没有限制。
合作伙伴 - 请求和获取此级别的分销商证书没有限制。但是,当应用程序上传到应用商店时,应用商店会使用官方合作伙伴级别分销商证书对应用程序重新签名,仅针对三星的注册合作伙伴开发人员。
单击完成。您可以找到创建的配置文件及其信息。

五、构建WGT
配置好证书就可以构建wgt文件了,首先确保tizen环境以及部署完成,如果出错则是环境出错,需要重新构建环境。
对于windows系统:

路径就是STUDIO下的安装路径加‘\tizen-studio\tools\ide\bin’
进入STUDIO的安装文件夹‘\tizen-studio\tools\ide\bin’文件夹下,找到‘tizen’批处理文件
选中‘tizen’,并按住键盘的‘shift’按键,鼠标右击‘在终端中打开’,并输入如下命令:
tizen build-web -e ".*" -e gulpfile.js -e README.md -e "node_modules/*" -e "package*.json" -e "yarn.lock"
tizen package -t wgt -o . -- .buildResult 得到Jellyfin.wgt文件。
对于Ubuntu系统,在终端输入如下命令创建tizen环境:
export PATH=$PATH:/Tizen-STUDIO的安装目录/tizen-studio/tools/ide/bin/ 创建环境成功后直接在终端输入:
tizen build-web -e ".*" -e gulpfile.js -e README.md -e "node_modules/*" -e "package*.json" -e "yarn.lock"
tizen package -t wgt -o . -- .buildResult 得到Jellyfin.wgt文件。
要将电视作为远程设备连接到 SDK,请执行以下操作:
在电视上启用开发人员模式:
在电视上,打开“智能集线器”。
选择“应用程序”面板。

“应用”面板位置

开发人员模式配置

重新启动弹出窗口

图4.已启用开发人员模式

设备管理器

远程设备管理器

“添加设备”对话框

打开连接
现在,您可以直接从Tizen工作室在电视上启动应用程序。如果提升证书错误,则需要重新安装证书。
七、安装Jellyfin.wgt
在Jellyfin生成的文件夹下打开终端并输入:
tizen install -n ./Jellyfin.wgt -t 远程连接的电视名字 #Device Manager上连接的电视的名字 等待安装成功:

安装后的样子:

参考文献:
[Jellyfin for Tizen](https://github.com/jellyfin/jellyfin-tizen)
[Using SDK for Web APPlications](https://developer.samsung.com/smarttv/develop/getting-started/using-sdk/tv-device.html)
[Creating Certificates](https://developer.samsung.com/galaxy-watch-tizen/getting-certificates/create.html)