科技改變生活 · 科技引領未來
本內容來源于@什么值得買APP,觀點僅代表作者本人|作者:達文牛大家Docker常用的jellyfin通常是官方的jellyfin/jellyfin,以及基礎庫支持更完善的Linuxsever/jellyfin,而今天我們將見到目前最強的N
本內容來源于@什么值得買APP,觀點僅代表作者本人 |作者:達文牛
大家Docker常用的jellyfin通常是官方的jellyfin/jellyfin,以及基礎庫支持更完善的Linuxsever/jellyfin,而今天我們將見到目前最強的Nyanmisaka/jellyfin。
說到nyanmisaka,如果大家訪問過github的jellyfin官網,就知道nyanmisaka是官方開發人員。傳說他跟阿塞拜疆有點聯系,也說他是自己人。目前國內各大軟硬件論壇博客都能看到他的留言,國外論壇上也有不少,一會兒英文,一會兒國語,看得我云里霧里。據我偷看了一眼,貌似此大佬專攻jellyfin硬件編解碼方面,我記得還有好幾個技術方向也看到他的專業提示,不過我最近忘了炒股,損失了好大一筆,精神不佳,導致記憶力衰退,都忘記是哪些領域了。不過,不少官方權威解答,ffmpeg調試改進,都是此大佬。那么大佬2個月前也悄悄說過(說這話的論壇轉型關閉了,關閉可真快...眨眼都1個多月了),要做個國內特供版本,免受官方開源限制,直接集成更新的驅動和基礎庫,國內用戶裝上就用,不用再打補丁。。。。現在,他來了。
據nyanmisaka不公開的秘密,他的docker主要強化了核顯驅動、字庫驅動、ffmpeg優化參數以及10.8.0alpha3最新改進和改進還未發布的各種東東。其實nyanmisaka是有公開宣布的,但是他是用英文宣布的,我看不懂。既然視頻優化上nyanmisaka大佬做了這么多工作,所以我也希望熱衷硬解的小伙伴們能看到并試用這個版本的jellyfin。畢竟使用的人越多,nyanmisaka就越可能天天幫我們更新,有自己人真好。
如果你擅長于重裝各種Docker版本的jellyfin,請直接跳到后面的章節去看。文章貼圖比較多,為了便于小伙伴快速跳轉,先列出章節:
全新安裝 nyanmisaka/jellyfin
大家不要被標題全新安裝嚇到了,nyanmisaka是官方開發人員。所以據我測試,nyanmisaka/jellyfin兼容以前版本的jellyfin/jellyfin,你可以直接使用jellyfin/jellyfin的配置目錄無損升級。
那么,這個docker是不是裝上就用呢,我還是要講一講全新安裝一個nyanmisaka/jellyfin。
首先,下載docker,我們還是以群暉為背景,開工。
獲取nyanmisaka版本
如上圖,打開docker搜索到nyanmisaka的jellyfin,雙擊下載latest版本。如果網絡卡頓的小伙伴們,可以去SSH里面pull,我們可以復習一下pull指令。
docker pull nyanmisaka/jellyfin:latest
因為nyanmisaka大佬想提供的是即裝即用,所以以上命令行有點違背初衷,下次不再提示。
回顧SSH的閑暇功夫,映像應該下載完畢了,(如果沒有完畢,請再看看SSH.......),我們去為鏡像啟動一個新容器。
啟動新容器
這里再復習一下為什么都推薦選latest版本,因為今后有版本升級,我們直接再次拉取latest版本,等映像更新后,我們停止以前的容器->選擇重置->再啟動,就可以無損升級到最新版本了。是不是感覺很不踏實,這么容易就升級了??但是,很愉快吧?
進入高級設置
我們標注1位置填寫容器名稱,標注2位置勾選高權限以便于我們可以使用硬件解碼,標注3位置啟動資源限制,可以在標注4和5位置進行一下資源限制,最后在標注6位置打開高級設置。其中2是必須的,1,3,4,5大家隨意,如果你真的很隨意只給jellyfin分配了1MB內存,我很想知道結果會。。。。怎么樣。。。
點擊【高級設置】我們要進一步設置。
高級設置啟動
網絡模式
存儲空間設置
高級設置里面建議勾選自動啟動,網絡模式選【使用與 Docker Host 相同的網絡】,直接使用當前設備IP和端口。儲存空間這里,標注1位置,選擇添加文件夾,分別添加 cache,config和media目錄,nyanmisaka的配置目錄與官網的jellyfin/jellyfin相同。實際上,如果你以前有jellyfin官方的docker配置有目錄,你可以直接指向你以前的配置目錄,平滑升級無憂。這個我好像前面提過?。。。太平滑了,不得不再說一次。
標注5位置,我將media目錄設置為只讀,防止jellyfin里面誤操作刪除媒體源文件,安全第一。標注6位置為我在NAS里面對應的目錄,大家目錄不同,你不要說我寫錯了。
配置完成按【應用】回到創建容器界面,點擊【下一步】。
摘要顯示
這里再次確認我們的設置,如果有問題,請不要找我。。。。點擊【應用】,馬上開始多媒體之旅。
不得不說,啟動jellyfin可真快,即使我左手點【應用】,右手開網頁,都能馬上打開jellyfin。其實好像也沒這么快,我鍵盤上找數字按字母,還帶指甲太長按著老別扭,先去修理一下指甲。。。。
瀏覽器打開你的設備IP地址加上端口號8096。
設置中文
當然選漢語了,奇怪jellyfin官方不是有自己人嗎,怎么常見的中文這里是漢語。。。。
配置管理員賬號
這里需要注冊一個管理員,我就默認root用戶名了吧。
添加一個媒體庫
這個可以跳過,但是為了便于演示,我按要求先添加一個媒體庫。
媒體庫設置
我這里媒體庫只做最簡單的電影類媒體庫演示,還有劇集,音樂,相冊等類型可供選擇,小伙伴可以自行研究,我們會盡快過度到后期的轉碼效果測試,所以這里僅僅提供電影類媒體庫設置作為參考。標注1位置選電影類,標注2位置取個霸氣點的名字,比如:《最讓人不討厭的電影》,《廁所常用影院》。不過我還是覺得《經典電影》吐槽率高一點,萬一我說經典你說不經典呢,是不是。
標注3位置按【+】選擇文件夾,就是我們前面【高級設置】里面設置的那個,如果你忘了是哪個高級設置,那忘了就忘了吧。
媒體庫下載語言和地區,按圖設置一下,今后刮削對應刮削中文。什么是刮削,這個你可以搜一下。本文不會深入介紹刮削,刮削可能遇到元數據下載器沒法訪問服務器的故障,這個需要改hosts或自建DNS代理。這個是常見問題,有很多文章介紹。我的解決方案是局域網自定義DNS代理,隨時可以更新,整個內網都能同步更新刮削服務器地址(api.themoviedb.org的IP時不時就不靈光了,常換常新吧)。但是這個方法有點安全隱患,這里就不展開了。我默認大家刮削是沒有問題的,甚至是已經預先刮削好。
媒體庫建議選項
標注1位置是10.8.0帶來的新特性,每個媒體庫可以自動收集合集,我暫時把它關了。因為它會自己建了一個名叫合集的媒體庫,更重要的是,因為刮削元數據的原因,它統計的合集并不準確,有時候系列名也不對。想試試的小伙伴可以打開,默認是勾選上的。元數據下載器這里,第一個TheMovieDb,就是我們提到的會調用api.themoviedb.org來刮削,如果你有未刮削的電影,這個服務器基本都能刮削出來。第二個 The Open MovieDatabase 默認是勾選的。它可以補充第一服務器沒刮削到的資料,比如獲取爛番茄的評分。兩個服務器的優先順序可以用旁邊的上下箭頭調整。
標注2位置是新選項。按照音樂媒體庫的同樣選項解釋,應該是指從電影文件內嵌的附件提取封面或海報圖片。標注3位置建議取消,是刮削不了海報圖片的時候從視頻中截取畫面。
如果你的電影已經刮削好,建議圖片獲取可以全部取消。
取消圖片獲取方式
即使你的電影已經刮削好,也建議保持元數據下載器的選項,比如你關閉了TheMovieDb,那么你的演員表頭像和演員信息,就不會再更新了。
點擊【確定】,第一個媒體庫配置完成,【下一個】。
元數據默認選項
這里提示我們將為后期的媒體庫配置默認語言和地區。
默認遠程訪問
轉碼,當然還有個作用就是外網訪問了,默認是勾選的,點擊【下一個】。
完成設置
若干個下一個后,終于有【完成】了,點擊后會再次出現登錄界面,登錄我們的管理賬號進去。
左上角點擊進入控制臺
我們觀看電影之前還有點事情要做,那就是設置硬件編解碼。點擊左上角,進入控制臺。
控制臺
打開硬件解碼
我們直接配置個目前官方10.8.0alpha3都不能干活的配置,如上圖。注意標注5的下方、標注8和標注9這幾個地方出現了新選項。標注2、標注7、標注8這個位置,我們會不同選擇來進行一組簡單的性能對比。這里先暫時不管,按圖配置就能愉快的轉碼了。
對了,我們先回到媒體庫看看。
已經默認支持中文字庫
完美,我們沒做任何補丁,媒體庫字庫已經支持中文,不會顯示框框框框了。如果你的媒體庫沒有出現圖片,請耐心等待它自己自動更新,如果已經更新完成還是沒有顯示圖片和標題,那么可以選擇手動刷新,來一波:
手動刷新媒體庫封面
按照標注順序,執行三步等待刷新完成。這次出現圖片和中文了吧。
到此,一個全新的jellyfin安裝完畢,這個即裝即用的硬解jellyfin究竟如何呢,接下來我們來試試。
牛刀小試,改進的轉碼能力與效率
大戲出場,我們選一部4K電影,先看看該視頻元數據。
視頻參數
這部4K電影是63Mbps碼率的HDR視頻,需要HDR轉SDR、帶燒錄PGS字幕,轉碼目標分辨率為1080,碼率限制15Mbps。分別在QSV和VAAPI解碼方式下,采用VPP和openCL色調映射方式,查看在同一段場景穩定后的轉換幀率。
編解碼速度對比
5組數據分別是,1.QSV轉碼 openCL映射 108 fps,2.QSV轉碼 VPP映射 77 fps,3.VAAPI轉碼 openCL映射 48 fps,4.VAAPI轉碼 VPP映射 61 fps,5.對比10.7.7版本VAPI轉碼 VPP映射 46 fps。
再拿一部60fps的電影測試一下。
60fps 4K 測試
同樣的選QSV轉碼 openCL映射 穩定在110 fps 左右。
以上數據測試硬件環境 intel 8代i5,intel UHD核顯655,軟件系統為黑裙DSM6.2.3。測試的視頻需要HDR轉SDR,燒錄PGS,缺少一項,轉碼速度都可能起飛達到3xx fps以上。
對比數據可以看到,nyanmisaka自帶的驅動和ffmpeg,加上jellyfin功能支持,轉碼提升非常明顯。
轉碼功能:如nyanmisaka大佬所說,無腦安裝完成,無須自己打補丁,即可支持完整硬件功能。以前版本存在的QSV解碼沒有openCL色調映射選項,現在有了;QSV解碼燒錄PGS卡在19fps的問題解決了;VAAPI以前openCL無法燒錄PGS字幕問題也解決了。
轉碼能力:QSV整體轉碼能力優于VAAPI。與以前的版本相比,VAAPI轉碼VPP映射(以前版本只有這個模式支持PGS燒錄)幀率由46fps提高到61fps,提升33%。QSV轉碼與VAAPI轉碼在映射方式上效率相反,QSV在openCL映射方式下效率最高,而VAAPI轉碼在VPP映射方式下效率高于openCL映射。實際上,經過幾天的連續轉碼試用,我更推薦大家用QSV轉碼配合openCL色調映射來日常工作,畢竟這個轉碼幀率能達到110fps左右,比以前的能用的模式(模式不一樣哦)46fps,如果直接對比的話提升135%,稱為吊打也不過分。
畫質提升:以前VAAPI轉碼的時候,如果大家仔細看畫面,可以看到畫面被切分為好幾個矩形塊,而相鄰兩個塊交接線會看到輕微色差和亮度差。新的驅動和ffmpeg更新,已經消除了這個問題。
結論:Nyanmisaka/jellyfin真的是裝完就用,玩硬解的小伙伴們可以愉快的過度到這個版本來,nyanmisaka大佬這幾天也是火力全開,各大論壇都看到他在互動,docker也在頻繁更新,什么,好像剛剛又更新了。。。。
番外,nyanmisaka帶來的核心提升暫時測試結束,非常難得nyanmisaka大佬本人也來到zdm留言跟大家互動,所以下面附加一些jellyfin設置和使用方面的討論,希望nyanmisaka大佬幫大家科普一下。
jellyfin alpha3 幾個小問題
QSV模式TV客戶端底部色條
在QSV轉碼燒錄PGS字幕的時候,TV客戶端默認exoPlayer播放畫面底部出現明顯的彩色橫條,而且隨著圖像變換。肉眼看上去大概就是有幾行。其實不燒錄PGS字幕的時候也有。只是行數更少不容易發現而已。
看上去像是內存拷貝數據的時候錯位了幾行,底部幾行沒填滿。而VAAPI轉碼就沒有,或稱為很輕微,仔細看好像有1、2行。
而同樣模式在PC的web客戶端、手機客戶端web/exoPlayer方式都沒發現問題。
低功率編碼
新版本帶來兩個低功率編碼器選項
新的選項
啟動后并沒有發現轉碼速度有提升,而且只能工作在VAAPI模式下,選QSV模式直接報錯。
ASS字幕口口口口問題
敲黑板,10.8.0似乎已經支持Web端、exoplayer客戶端顯示ASS字幕和PGS字幕,無需服務器端轉碼燒錄。在做web端測試的時候,默認為自動的方式下ASS字幕將不會轉碼燒錄。這時候web客戶端直接顯示ASS字幕,中文字幕還是會因為缺字體而顯示口口口口。解決的方法是,啟用備用字體。
啟用備用字體
我們要進入控制臺播放轉碼設置里面去標注4位置指定字體路徑,勾選標注5位置啟用備用字體。當然,我們自己要先找好支持中日韓文的.woff2字體,如上圖,我是放到config下woff2目錄下的。
啟用效果
標注1是默認交給客戶端顯示ASS字幕因為缺字庫仍然出現口口口口,標注2是啟用備用字庫后,客戶端ASS字幕顯示正常。
ASS字幕也可以強制燒錄,通過用戶設置頁面來啟動。
啟用ASS燒錄
進入用戶設置菜單(注意不是進入控制臺),燒錄字幕選 所有復雜格式字幕 或 全部 都可以啟用ASS字幕服務器端燒錄。這樣nyanmisaka大佬內嵌的中文字庫支持就能派上用場了。
這里敲黑板2次 我推薦把ASS文件轉為PGS字幕除了所見即所得之外,也在jellyfin中遇到很棘手的問題。每次服務器端轉碼燒錄ASS字幕,都會瘋狂讀取視頻文件,好像是全部讀取才能獲取ASS文件一樣,有的長達幾十秒客戶端才開始播放(想想一部4K高碼電影可有幾十個G),我一度以為jellyfin掛了。我測試了好多視頻文件,都是如此。而PGS字幕就很正常。理解不了ASS和PGS轉碼預讀差別為何這么巨大。如果說ASS文件需要全部讀完才能獲取所有特效,即使MKV封裝將ASS文件封裝到文件的最后,讀取文件不是可以SEEK直接讀取后段文件嗎,一個ASS文件幾百K而已。而一個PGS文件,一言不合就是幾十M,雖然PGS是按時間順序一段一段的不需要首尾適應。但是作為預讀的話,PGS也可能在MKV封裝的最后,讀取量更大,為什么PGS不影響轉碼預讀時間呢。。。唉,說得我都糊涂了。。。。。
總之,如果遇到ASS文件燒錄播放不出畫面的情況,jellyfin并沒有掛掉,它正在忙著呢,請耐心等待幾十秒,奇跡會出現的。有句歌詞:我等到花兒都謝了~~~
也許是我遇到的個別情況,不知道nyanmisaka大佬遇到過沒有。
新的色調映射算法
10.8.0版本帶來了BT.2390色調映射算法,全新安裝已經默認啟用該算法。如果手上有同一部電影的SDR和HDR版本的小伙伴,歡迎加入一起來測試。這里我就先貼圖為敬了。
選擇映射算法
在控制臺選擇播放轉碼設置,標注1位置選中啟動色調映射,這個是openCL模式,啟用VPP模式是沒有參數可調的。
openCL 默認算法是BT.2390,以前這里默認是Hable。
參數一覽
除了算法選擇,下面還有不少參數選項,以上參數有中文介紹,我們先保持建議值。上圖最下面一個色調映射參數,默認是空著的,就是默認參數或不需要參數的意思,如果我們選不同的算法,如果有參數的話,在這里設置。先來一組默認參數效果貼圖,第一張是作為參考的SDR視頻畫面。
SDR
必須承認,SDR色彩亮度看上去是很舒服的,這部電影有點典型,就是我找到的HDR版本轉換SDR都比較暗(默認參數,如果想調整,看后面),以下效果只代表一部分類似HDR電影,有很多電影的HDR也做得很好,默認參數轉出來效果就不錯。對比猛烈一點,大家也能看到差距,主要就是大家研究研究,不要認真就好,不要扔我磚頭就好。。。。。
HDR-VPP
這個是用VPP轉出來的效果,沒什么參數可調,就是這樣,為什么黑,可能VPP就喜歡黑吧。。。。但是它的飽和度,說人話就是色彩看上去還是很豐富的,就是亮度不準,不知道如果HDR描述的亮度峰值不準的話,哪里可以強制100nits就好了,或許VPP算法默認400或1000沒法改。。。。。以下openCL我也沒找到這個設置,如果我們調整亮度,只有改該算法的參數來實現。如果有小伙伴找到可以設置VPP映射參數的地方,記得@我。
HDR-openCL-BT.2390
BT.2390 色調映射,nyanmisaka大佬推薦算法。ffmpeg官網我沒查到具體說明,可能是最最最新支持,都沒來得及寫介紹。只知道是一種“基于直接映射的轉換方法”。這是我網上抄的,具體什么意思,好像很神秘,不過該方法飽和度(顏色)不錯,,,以下不再解釋飽和度,亮度沒有參數可調,默認里面算不錯的。
HDR-openCL-Hable
算法Hable,是原版本默認的轉換方法,官方介紹是比Reinhard更好地展現深色和高亮度細節,但代價是會稍微使所有內容變暗。真的有點暗,難怪剛開始用jellyfin的時候,發現我的HDR視頻怎么這么黑,我還拿著電筒對著電視照了半天,也亮不起來,唉。。。對了,Hable算法沒有參數可調,殘念。。。。
HDR-openCL-None
算法None,這個簡單粗暴,就是直接對高亮度區域做去飽和。大概就是不要顏色,白色一片。好歹看得清楚衣服上的扣子了,不過也不支持參數調整。
HDR-openCL-Clip
算法Clip,粗暴x2,對于超出的部分硬剪輯。可以支持參數,默認為1.0,調整1.5就是線性增加50%亮度的意思,反正你弄的太亮的地方,白就是了。不過,總算有個可以調整亮度的方法了。
HDR-openCL-Linear
算法Linear,將整個參考色域拉伸為顯示終端支持的線性倍數。好像就是最大和最小,拉根直線的意思。于是,這種有很亮場景的畫面,我們看到比上面兩個方法更暴力的出現了,這完全是黑啊,大哥。線性參數默認也是1.0,要調到多少合適呢。
HDR-openCL-Gamma
算法Gamma,調過顯示器Gamma的小伙伴應該熟悉,可調的對數曲線來進行轉換。可以調整參數,默認值為 1.8。數學學得好的小伙伴們應該最愛了吧,來試兩手?
HDR-openCL-Reinhard
算法Reinhard,使用非線性對比度,通過簡單的曲線保留整體圖像亮度,從而實現細節變平和色彩精度下降。這個官方定義有點拗口,就是盡量保證亮度但是犧牲了細小的輪廓和顏色的平滑度。可以調整參數,默認0.5,對應指色域內值的亮度大約是剪切時的一半同,如果調整到0.75或0.8,亮度感官明顯提升,同比顏色恢復也算不錯,但是比SDR還是差一些。
HDR-openCL-Mobius
算法Mobius,平滑地映射超出范圍的值,同時盡可能保留范圍內的對比度和顏色。如果你覺得色彩準確性比細節保留更重要時,推薦使用。默認參數0.3,是指線性到mobius變換過度點,數學小能手又能看看這組參數怎么調了。
總之,以上方法大部分都對應一個轉換曲線,有的可以用參數調整曲線的形狀,比如簡單的有斜線型、兩頭平滑中間傾斜類似足型,等等。然后以這個曲線為基礎進行轉換。。。。算了,我們還是看圖吧。
默認映射對比
我們對比一下,1.標準SDR,2.無參數可調的VPP映射,3.沒找到參數可調的BT.2390映射,4.沒參數可調的Hable映射。可以看到nyanmisaka大佬推薦的BT.2390方法確實不錯。
再看看下面這組
全部方法對比
這組也全部采用默認參數,1.標準SDR,2.算法None,3.算法Clip,4.算法Linear,5.算法Gamma,6.算法Reinhard,7.算法Hable,8.算法Mobius,9.算法BT.2390。
可以看到,默認參數下,None,Clip,Reinhard,Mobius,BT.2390至少亮度上勝出。看了官方廣告,我決定再試一組Reinhard和BT.2390的。其實也不是全看廣告,我也看療效的。能改參數的我都試了。Reinhard參數直觀,亮度和色彩還原綜合也算不錯,所以。。。還是看圖吧。
BT.2390映射對比
這組1 標準SDR,2 算法Reinhard 采用參數0.8,3 算法Reinhard 采用默認參數,4 標準SDR,5 算法Reinhard 參數0.8,6 算法Reinhard 默認參數,7 算法Reinhard 參數0.8, 8 算法Reinhard 默認參數,9 算法BT.2390無參數。
這組測試主要展示了方法Reinhard參數設置到0.8,見標注2,可以獲取比SDR更好的亮度效果,缺點是對比度稍差,顏色略清淡,可以【色調映射范圍】強制改為TV模式,可以稍微提升一點色澤。為什么能提升,因為TV模式有負信號,相當于拉升了顏色的飽和度和亮度的對比度。。不過這個屬于作弊吧,算了。
算法Reinhard同樣的參數,在另一部視頻對比中,亮度就有點過了,見標注5。這說明不是所有HDR視頻轉換都需要提升亮度,如果有部分HDR轉換偏暗無法忍受的話,建議小伙伴用算法Reinhard,參數使用0.75-0.8。
同時,在默認參數下,算法BT.2390直觀感受比方法Reinhard轉換效果還是好一點。見標注9和標注8。
我們再次對比一下BT.2390和Reinhard
推薦BT.2390
如上圖,1 標準SDR,2 算法BT.2390無參數可調 3 算法Reinhard 參數0.8,4 算法Reinhard 默認參數。可以看到還是SDR效果最好。。。我們還是去找SDR吧。。。。。。。這樣的,小伙伴們能不能放大圖看呢,標注2算法BT.2390轉換的亮度跟標注4算法Reinhard默認參數的亮度差別不大,但是色彩豐富度要好一些。
貼了這么多圖,我也不知道怎么建議,數學好的小伙伴們早就自己開始計算參數了吧。我只能說我覺得亮度不夠的話,我就用算法Reinhard設置參數0.8,免得我黑燈瞎火的找電筒。簡單點,就跟著nyanmisaka大佬的用BT.2390吧,過幾天說不定又有新算法。
不知道nyanmisaka大佬是不是在開發一種像相機HDR一樣,高曝光一張,低曝光再一張,然后合成一張正常觀感又能看到亮度細節的算法出來。這個不是HDR最先出來宣傳的效果嗎。HDR不是來支持我們老設備看高亮畫面的嗎,怎么現在就要我不停的買買買買HDR設備呢,我還要存錢買Dolby Vision呢,這里面一定有很大的誤解。。
最后,很快會再見
nyanmisaka透露,元旦前后jellyfin 10.8.0正式版會推出。不過相對于官方的jellyfin/jellyfin,nyanmisaka/jellyfin是幫我們集成了最新驅動、字庫和相關基礎庫的,官網因為遵循開源協議的問題,這方面是比較被動的。
作為半官方加強版的nyanmisaka/jellyfin,一起等待元旦節10.8.0正式版的發布吧。
作者聲明本文無利益相關,歡迎值友理性交流,和諧討論~
何書明