看板 Linux 關於我們 聯絡資訊
idisnothing: 那像deinterlace之類的後處理可以offload給GPU嗎? 03/13 20:03
idisnothing: 還是一樣只能由CPU來處理? 03/13 20:05
s9209122222: 這我不確定,不曉得怎麼看,但用htop看cpu使用率有增 03/13 21:09
s9209122222: 加 03/13 21:09
idisnothing: 一開始我也是看cpu跟gpu的使用率 後來發現vlc的 03/13 21:48
idisnothing: message把level調到debug後就能看到更多資訊 03/13 21:49
idisnothing: gpu是geforce 210, vlc的video ouput跟hardware-acce 03/13 21:55
idisnothing: lerated decoding都選vdpau 從message上看來是有把 03/13 21:56
idisnothing: deinterlace交由gpu處理 cpu usage也很低 03/13 21:57
idisnothing: 但畫面看起來差強人意 還在研究到底怎麼回事 03/13 21:57
s9209122222: 不過現在還有很多需要去交錯的影片嗎?我只有網路上 03/13 22:11
s9209122222: 找到的某些片片會看到 03/13 22:11
idisnothing: 有喔 數位電視的訊號就是1080i跟480i的QQ 03/13 22:14
s9209122222: 我發現純vaapi沒辦法deinterlace,只有vaapi-copy可 03/13 22:16
s9209122222: 以 03/13 22:16
s9209122222: 然後vdpau可以,但畫面很頓 03/13 22:18
s9209122222: 看了他的 framing time 明明就很低啊 03/13 22:19
idisnothing: 看來兩個api都能將一些後處理都offload給gpu了 感動 03/13 22:35
idisnothing: 你是用vlc還是mpv? 如果是vlc然後decoding選vdpau 03/13 22:37
idisnothing: 那vo也要選vdpau 畫面才不會頓 03/13 22:38
s9209122222: mpv 03/13 22:43
idisnothing: mpv我沒用過 有機會再試試 03/13 22:45
s9209122222: 試了一下要是vo=vaapi,那麼vaapi也能去交錯,但效果 03/13 22:50
s9209122222: 一樣糟糕 03/13 22:50
s9209122222: 目前用起來最順的是加上 --vf=lavfi=yadif 這個選項 03/13 22:58
s9209122222: 配上 vaapi-copy 03/13 22:59
idisnothing: 我之前試也是差不多的結果 要像windows下那樣把所有 03/13 22:59
s9209122222: 可惜這好像是用cpu的? 03/13 23:00
idisnothing: 工作都丟給gpu去做還是有難度 我試的結果也是decodin 03/13 23:00
idisnothing: g選vaapi 然後vo選xv 去交錯交給cpu(yadif)來做 03/13 23:01
idisnothing: 這樣的播放效果最好 跟你的結果差不多 03/13 23:02
s9209122222: 為什麼cpu反而順,太詭異了 03/13 23:02
Bencrie: vdpau 自己有硬體 deinterlace,vaapi 我記得也是有 03/13 23:58
Bencrie: 至少 nvidia 跟 intel 在這塊都是 ok 的 03/14 00:00
Bencrie: Blu-ray 影片也有 1080i 的 03/14 00:05
idisnothing: 那樓上知道怎麼設定才比較好嗎? 03/14 00:40
obarisk: 純推intel內顯,wayland現在擋的住嗎?Ubuntu是換定了吧 03/14 13:45
OrzOGC: intel安定,wayland現在還是............... 03/14 18:12
LiDra129: 回s大 我一直是用專利驅動 因為想要用OpenCL 03/14 18:18
Bencrie: intel 的用 hwdec=vaapi vo=opengl 03/14 19:31
s9209122222: opengl這選項不是改叫gpu了嗎? 03/14 22:12
s9209122222: OpenCL我是用AUR裡那從amdgpu-pro提取出來的那個 03/14 22:15
Bencrie: debian stable 收的 mpv 0.23 還是叫 opengl 03/15 01:47
今日有幸以相當划算的價格入手了一張NVIDIA GT610 終於成功將1080i影片之解碼與去交錯通通交由GPU來處理,且畫質相當不錯 以下為系統配置: CPU: AMD Athlon II X4 640 MB: Gigabyte MA78GM-S2H OS: Ubuntu 16.04 GPU Driver: NVIDIA Driver 390.48 PLAYER: mpv 0.28.0-437-g9efb027 FFMPEG: ffmpeg N-90705-g18d6ff2 因為先前用的NVIDIA G210賣掉了 所以入手GT610前用的是主機板的內顯HD3200 在Windows下確認過HD3200確實是可硬體去交錯的 但在Linux下卻只能解碼 不能去交錯(用的是系統內建開源驅動"radeon") 重新編譯過mesa-git, libva-1.8.3, ffmpeg-git, mpv-git, 但情況依舊 mpv的參數我是這樣下的 $ mpv --hwdec=vaapi --vo=vaapi --vf=vavpp=deint=motion-adaptive 1080I_FILE mpv的manpage中有提到多種去交錯演算法,包括bob, weave, motion-adaptive, motion-compensated 等 但沒一個選項能成功開啟硬體去交錯 最後只好如網友s9209122222所建議:解碼交由GPU處理;去交錯交由CPU處理,指令下法如下 $ mpv --hwdec=vaapi-copy --vo=gpu --vf=lavfi=yadif 1080I_FILE 但由於去交錯的部份仍交由CPU處理,所以當CPU負載高時影片播放相當容易受到影響 在換上GT610並安裝官方驅動後,以下列方式下達指令即可成功將解碼與去交錯全部交由GPU處理 $ mpv --hwdec=vdpau --vo=vdpau --vf=vdpaupp=deint=yes:deint-mode=temporal-spatial 1080I_FILE 或是也可以只下達:$mpv --hwdec=vdpau --vo=vdpau 1080I_FILE 然後在mpv視窗下按下"d"鍵 即可開啟去交錯 (但這方式所使用的去交錯演算法為預設的temporal) 困擾已久的問題總算解決 終於可以好好看電視了QQ Ref: https://mpv.io/manual/master/ 04/21更新:(後來發現這對流暢度幫助不大,請忽略。) 看了幾天電視下來,有時總覺得畫面流暢度好像沒在Windows下來得好 剛在看mpv的manpage時看到了--vo-vdpau-output-surfaces這個選項 就想起了NVIDIA的官方文件有提到提高surface的數量可增進效能 由於手邊這張GT610足足有1GB記憶體可用,於是就直接將surface數量設為最大值15 設定過後畫面流暢度果然看起來又更好了一些,記憶體用量有提高,但總共也才用190MB左右而已 另剛還有看到auto profiles這個好用的功能,在~/.config/mpv/mpv.conf加入以下幾行 即可在看DVB-T數位電視時自動啟用硬解、硬體去交錯並將surface數量設為15 ================================================ # ~/.config/mpv/mpv.conf [protocol.dvb] vo-vdpau-output-surfaces=15 hwdec=vdpau vo=vdpau vf=vdpaupp=deint=yes:deint-mode=temporal-spatial:hqscaling=1 ================================================ Ref: https://tinyurl.com/ydcamorn 5/1更新: 問題算是真正解決了 最後所使用的播放器是vlc-3.0-git 設定方面,Hardware-accelerated decoding 選 VDPAU video decoder Video output 選 OpenGL video output 硬體去交錯無需設定,vlc在偵測到interlaced影片時會自動啟動硬體去交錯 去交錯演算法可透過以下方式更改,我是選temporal-spatial Tools -> Preferences -> All -> Videos -> Filters -> VDPAU -> Deinterlace 在這樣設定下 畫面流暢度與穩定度都相當棒 幾乎感受不到延遲與頓點 另外發現軟解+軟體去交錯的畫面其實也可以相當流暢 只要使用Yadif(2x)這個deinterlacer就可以了(Video -> deinterlace mode -> Yadif(2x)) vlc-3.0-git http://git.videolan.org/?p=vlc/vlc-3.0.git;a=summary -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.185.53 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1524057897.A.2F3.html
ddtsatan: 推 04/19 01:16
Debian: 推薦文章。 04/24 12:28
idisnothing: 試到現在 畫面看起來最流暢的mpv參數下法為 04/25 23:55
idisnothing: --hwdec=vdpau --vo=gpu --vf=vdpaupp=deint=yes:dei 04/25 23:56
idisnothing: nt-mode=temporal 04/25 23:58
idisnothing: GT610可能不太夠力 用temporal-spatial來去交錯畫面 04/25 23:59
idisnothing: 總是頓頓的 看歐冠時尤其明顯 04/26 00:00
idisnothing: 蠻意外的是把解碼和去交錯都交給GPU來做時 畫面流暢 04/26 00:05
idisnothing: 度居然比把兩者交由CPU來做要來得好 一直以為軟解+ 04/26 00:07
idisnothing: 軟體去交錯是best solution的說 04/26 00:08
Bencrie: 要 CPU 做後製就一定要從 vram 抓東西回 ram 來算 04/26 02:04
Bencrie: 有過 bus 會慢是正常的 04/26 02:04
idisnothing: 我現在試的都是純CPU解碼+去交錯 或 純GPU解碼+去交 04/26 02:21
idisnothing: 錯 所以不會從vram複製解碼過後的資料回system ram 04/26 02:23
idisnothing: 做後處理 04/26 02:23
idisnothing: 找到畫面更流暢的方案了 那就是vlc-3.0.2+ffmpeg-git 04/28 13:02
idisnothing: 而且用的deinterlacer是temporal-spatial 流暢度與 04/28 13:04
idisnothing: Windows下的mpc-hc不相上下 但常不明原因crash 真是 04/28 13:04
idisnothing: 有一好就沒兩好 都2018了沒想到把deinterlace offload 04/28 13:04
idisnothing: 給GPU還是困難重重 04/28 13:04
Bencrie: vlc 軟體 deinterlacer 不是通常都用 yadif 嗎 05/08 23:42
idisnothing: 以前我也用yadif 最近看運動賽事發現用yadif(2x)比較 05/10 01:09
idisnothing: 好 畫面看起來流暢多了 因為輸出的frame數量多了一倍 05/10 01:10
idisnothing: https://tinyurl.com/mtey7l8 05/10 01:13
※ 編輯: idisnothing (220.132.185.53), 05/24/2018 00:07:36