mpv 是一款基於 MPlayer 和 mplayer2 的多媒體播放器(mplayer2 現已不再維護)。它支持多種類型的視頻文件格式、音視頻編解碼器和字幕。這裡有一份不太完整的關於 mpv 與上述播放器之間差異的詳細列表。
安裝
安裝 mpv包 軟體包或開發者版本的 mpv-gitAUR。
前端
配置
mpv 擁有良好且全面的默認設置,即使電腦上的顯卡老舊或性能較弱,mpv 也能良好運行。然而,在配備有更新更現代的顯卡的電腦上,mpv 經過詳盡配置,即可獲得更好的視頻品質(視頻品質的高低取決於顯卡性能)。要實現這一點,只需要創建一些配置文件(這些配置文件默認不存在)。
/etc/mpv/
中讀取,用戶級配置文件在未設置 XDG_CONFIG_HOME
環境變量的情況下將從 ~/.config/mpv/
中讀取,用戶級配置會覆蓋系統級配置,而在命令行使用的配置將覆蓋上述所有配置。配置時可能需要反覆試錯,因此,建議使用用戶級配置。mpv 提供了包含默認設置的配置文件示例,將這些文件複製一份然後開始配置:
$ cp -r /usr/share/doc/mpv/ ~/.config/
mpv.conf
是 mpv 的主要配置文件,input.conf
包含了按鍵綁定的配置。通讀這兩個文件,了解它們的工作原理以及可用選項。
通用設置
將以下設置寫入 ~/.config/mpv/mpv.conf
。
字幕配置
啟用模糊搜索:
sub-auto=fuzzy
更改字體:
sub-font="fontName"
將字幕加粗以增加可讀性:
sub-bold=yes
高品質配置
默認設置下,mpv 兼顧質量和性能。此外,它還提供了兩個預定義的配置:代表最高性能的 fast
和代表卓越渲染質量的 high-quality
。使用 --profile=name
選項以應用某個特定的配置,使用 --show-profile=name
查看該配置的內容。
profile=high-quality
mpv 的實時性能統計數據可通過 i
鍵調出查看。此功能在確認硬體是否以當前配置運行,或用於對比不同配置下的運行情況時非常有用。
最後兩個選項稍微有些複雜。video-sync=display-resample
選項能夠在音頻與視頻不同步時,通過保留視頻幀,並對音頻進行重新採樣以保證音視頻同步(相較於視頻丟幀,音頻音調的輕微改變通常難以分辨)。相關的深入探討位於 mpv 維基上的顯示同步。interpolation
選項通過改變視頻幀的顯示方式,讓源視頻幀更好地貼合顯示器的刷新率,以此讓畫面上的移動顯得更加平滑(不要與 SVP 的技術相混淆,後者實際上是將視頻轉換至 60 幀)。相關的深入探討位於 mpv 維基上的 Interpolation(Interpolation 又常被稱為 smoothmotion)。
profile=high-quality video-sync=display-resample interpolation
video-sync=display-resample
選項可能會導致視頻加速。同時,在某些系統上,該選項會徹底擾亂幀速率,插值(interpolation)將完全失去作用。你能做的遠不止於此,但同時,隨著配置深入,這些配置細節將更加複雜,對顯卡的性能要求也更高。簡而言之,可以加載那些實現了奇特的縮放和銳化技術的特殊著色器,這其中包括那些實際上使用了經過圖像訓練(真實世界和動畫化的圖像均有)的深度神經網絡的著色器。要了解更多相關細節,請查閱 mpv wiki,尤其是 user shader's section 這部分。
更多其他配置項參見 mpv(1)。在命令行運行 mpv 檢查配置的錯誤信息也能獲取幫助。
自定義配置
自定義配置可在 mpv.conf
中創建,這些「配置」實際上只是「選項組」,它們可用於:
- 在不同的配置之間快速切換,無需重寫文件。
- 為特殊內容創建特殊配置。
- 嵌套多個配置,將簡單的配置組合成更複雜的配置。
創建一個配置很簡單。mpv.conf
文件的開頭區域被稱為「頂層」,寫在此處的所有選項都會在 mpv 啟動後生效。要創建一個配置,首先寫下一對中括號,然後在中括號內寫下配置的名稱。一旦創建了配置,接下來寫的所有選項(直到下一個配置開始之前)都屬於該配置。這是一份 mpv.conf
文件的示例:
profile=myprofile2 #“顶层”区域,加载 myprofile2 ontop=yes #窗口置顶 [myprofile1] #一份简单的配置,“顶层”区域到此处结束 profile-desc="a profile" #可选的配置描述 fs=yes #以全屏模式启动 [myprofile2] #另一份简单的配置 profile=high-quality #mpv 自带的一个配置 log-file=~~/log #设置日志文件的位置,~~/ 会被转换成 ~/.config/mpv
上述示例文件中,「頂層」區域僅有兩行,區域下方定義了兩個單獨的配置。mpv 啟動時,讀取第一行的內容,加載 myprofile2
的選項,這相當於加載了 high-quality
中的選項以及 log-file=~~/log
選項,最終加載 ontop=yes
選項,至此啟動完成。注意,由於沒有在「頂層」區域調用 myprofile1
配置,該配置將不會被加載。
又或者,直接從命令行調用 mpv:
$ mpv --profile=myprofile1 video.mkv
此時,除 myprofile1
這一配置內的選項,其餘所有選項都會被忽略。
自動配置
mpv 會根據文件擴展名或是使用的協議,自動加載特定類型的配置。
根據匹配的文件擴展名,分別為擴展名是 .mkv 和 .gif 的所有文件加載其對應的配置:
[extension.mkv] keep-open volume-max=150 [extension.gif] osc=no loop-file
當播放任意的 http 或 https 流時加載下面的配置(例如 mpv https://example.com/video.mp4
):
[protocol.https] speed=2 keep-open [protocol.http] profile=protocol.https
運行 mpv --list-protocols
以查看 mpv 支持的不同協議。
按鍵綁定
根據 /usr/share/doc/mpv/input.conf
和 mpv(1) § COMMAND INTERFACE 中的示例,按鍵綁定簡單明了。
將下面的示例添加至 ~/.config/mpv/input.conf
:
shift+s screenshot each-frame Shift+UP seek 600 Shift+DOWN seek -600 = cycle video-unscaled - cycle-values window-scale 2 3 1 .5 WHEEL_UP add volume 5 WHEEL_DOWN add volume -5 WHEEL_LEFT ignore WHEEL_RIGHT ignore Alt+RIGHT add video-rotate 90 Alt+LEFT add video-rotate -90 Alt+- add video-zoom -0.25 Alt+= add video-zoom 0.25 Alt+j add video-pan-x -0.05 Alt+l add video-pan-x 0.05 Alt+i add video-pan-y 0.05 Alt+k add video-pan-y -0.05 Alt+BS set video-zoom 0; set video-pan-x 0; set video-pan-y 0
有關在 mpv 中重現 MPC-HC 按鍵綁定的嘗試,請參考這個連結。
額外配置文件
此外,還可以創建一些配置文件和目錄,其中包括:
-
~/.config/mpv/script-opts/osc.conf
負責管理屏幕控制器。更多信息請參閱 mpv(1) § ON SCREEN CONTROLLER。 -
~/.config/mpv/scripts/script-name.lua
表示 Lua 腳本。獲取示例請參考這個連結。
要了解其他文件和目錄的相關信息,請參閱 mpv(1) § FILES。
腳本
mpv 有大量可擴展播放器功能的腳本(參見用戶腳本)。為此,它為 Lua 和 JavaScript 提供了內部綁定。
腳本的安裝方式通常是將它們放在 ~/.config/mpv/scripts/
目錄內(可能需要先創建該目錄)。之後,它們將在 mpv 啟動時被自動加載(這個行為可以被其他 mpv 選項修改)。有些腳本自帶安裝和配置說明,請務必查看。此外,有些腳本已經陳舊、損壞且不再維護。
JavaScript
JavaScript(ES5 via MuJS)自 2014 年起作為 mpv 的腳本語言得到支持。目前僅有少量腳本可用,如果想要自己製作腳本,mpv(1) § JAVASCRIPT 有文檔可供參考。
在 mpv 的 scripts
目錄下放入一個擴展名為 .js
的腳本以開始使用,例如:
~/.config/mpv/scripts/fullscreen-off-on-pause.js
function onPauseChange (prop, enabled) { if (enabled) { mp.set_property('fullscreen', 'no') } } mp.observe_property('pause', 'bool', onPauseChange)
想要了解更多細節,例如,關於使用 require
加載 CommonJS 模塊,請參見 mpv(1) § CommonJS modules and require(id)。
mpv包 軟體包和 AUR 中的某些軟體包(例如 mpv-fullAUR 和 mpv-full-gitAUR)已支持 JavaScript。
Lua
mpv 的 Lua 腳本開發記錄在 mpv(1) § LUA SCRIPTING 和 TOOLS/lua 的示例中,這些腳本會被安裝到 /usr/share/mpv/scripts
。
例如,啟用內置腳本,自動裁剪帶黑條的視頻:
$ ln -s /usr/share/mpv/scripts/autocrop.lua ~/.config/mpv/scripts
mpv-ytdlAutoFormat
mpv-ytdlautoformat 是一個 Lua 腳本,能夠將 Youtube 的 ytdl-format、Twitch 或者其他域的內容,自動轉換成 480p 或是你需要的視頻品質。
mpv-webm
mpv-webm(或簡稱為 webm)是一個易於使用的 Lua 腳本, 允許在觀看視頻的同時創建 WebM 文件。它包含了若干特性,並且,它沒有任何額外的依賴項(完全依賴於 mpv)。
ytdl-preload
ytdl-preload Lua 腳本能夠預加載播放列表中的下一個 ytdl-link。
C
mpv-mpris
mpv-mpris 插件由 C 語言開發,它允許其他應用程式通過 MPRIS 協議與 mpv 集成。例如,安裝 mpv-mpris 後,kdeconnect包 能夠在電話來電時自動暫停 mpv 中播放的視頻。另一個例子是集成藍牙音頻設備上的播放或暫停等按鈕。
安裝 mpv-mpris包 以使用該插件。
Vapoursynth
Vapoursynth 是 AviSynth 的替代品,可用於 Linux,並允許通過 python 腳本進行視頻操作。Vapoursynth 的 python 腳本可被用作 mpv 的視頻過濾器。
mpv包 軟體包現已默認啟用 Vapoursynth 支持。
SVP 4 Linux (SmoothVideoProject)
SmoothVideoProject SVP 是一個主要用於轉換視頻幀率至 60 幀的程序。它免費且功能齊全,適用於 64 位 Linux(Windows 和 OS X 版本是收費的,且不兼容 32 位 Linux)。
它有三個主要功能,每個功能都可以任意禁用或啟用(不會強制使用運動插補)。
- 運動插補(youtube 視頻)- 一種將視頻幀率轉換至 60 幀的算法。這會產生具有爭議性的「肥皂劇效應」,有人喜歡,有人討厭。遺憾的是,這種算法並不完美,還會產生許多奇怪的偽影。它可以根據性能或品質進行調整(通過滑塊)。它也提供了一些減少偽影的設置,將實際幀與生成幀插補以減少偽影的明顯程度。幀率檢測可設置成自動或手動(手動似乎能解決某些用戶的性能問題)。
- 黑條光照(Black bar lighting)(youtube 視頻)- 如果圖像的寬高比在顯示屏上產生黑條,SVP 將用屏幕內容生成的「光照」使黑條發光。可對它進行一些自定義設置,但默認設置非常接近最佳狀態。
- LED 環境光照控制(youtube 視頻)- 可控制電視機上的 LED 環境光照。
一旦編譯了支持 Vapoursynth 的 mpv,讓 SVP 與 mpv 協同工作就非常簡單。僅需安裝 svp-binAUR,打開 SVP 程序,讓它評估系統性能(可能需要先關閉其他程序以獲取準確的結果),最後在 mpv.conf 中添加下面的 mpv 配置 [1]:
mpv.conf
[svp] input-ipc-server=/tmp/mpvsocket # 接收來自 SVP 的輸入 hr-seek-framedrop=no # 修複音頻不同步 watch-later-options-remove=vf # 不保留 SVP 的視頻過濾器 # 某些情況下可修復卡頓,其他情況下可能引起卡頓。如遇卡頓可以嘗試。 #opengl-early-flush=yes
然後,為了使用 SVP,在以該配置運行 mpv 並打開文件之前,必須在後台運行 SVP 程序。要麼像這樣使用:
$ mpv --profile=svp video.mkv
要麼在 mpv 配置的「頂層」部分設置 profile=svp
。
要使用硬體解碼,必須使用回傳解碼器(copy-back decoder),因為普通解碼器不兼容 Vapoursynth(請選擇一個以 -copy
結尾的 hwdec
選項)。例如:
hwdec=auto-copy hwdec-codecs=all
mpv 的開發人員無論如何都不鼓勵使用硬體解碼,而且硬體解碼也不可能在性能上產生顯著的差異。
提示與技巧
圖像
硬體視頻加速
參見硬體視頻加速。
硬體加速視頻解碼可通過 --hwdec=API
選項啟用。要獲取所有受支持的接口和其他選項,請參見 mpv(1) § hwdec。
將該選項添加到配置文件以使其始終生效(例如在桌面環境播放視頻):
~/.config/mpv/mpv.conf
hwdec=auto
要允許 CPU 處理視頻濾鏡,請從 *-copy
中選擇某個接口。
視頻播放時,可使用鍵盤快捷鍵 Ctrl+h
切換硬體解碼。
要排除硬體加速故障,可能需要調整日誌記錄級別(參見 mpv(1) § msg-level)。例如,--msg-level=vd=v,vo=v,vo/gpu/vaapi-egl=trace
將啟用以下功能:
- 來自視頻解碼模塊 (
vd
) 和視頻輸出模塊 (vo
) 的詳細信息。 - 負責視頻解碼模塊的更詳細的跟蹤信息。根據經驗,在沒有調整任何日誌記錄級別的情況下運行 mpv 之後,相關模塊應該是
vo/gpu/vaapi-egl
。
在寬高比之間快速切換
使用 Shift+a
在寬高比之間切換。
忽略寬高比
使用 --keepaspect=no
忽略寬高比。要使該選項始終生效,請在配置文件中添加 keepaspect=no
這一行。
繪製至根窗口
使用 --wid=0
參數運行 mpv。mpv 將繪製到 ID 為 0 的窗口中。
始終顯示應用程式窗口
要讓從命令行啟動的 mpv(即使播放的是音頻文件)顯示應用程式窗口,請使用 --force-window
選項。要使該選項始終生效,請在配置文件中添加 force-window=yes
這一行。
禁用視頻輸出
要在命令行啟動時禁用視頻輸出,請使用 --vid=no
選項,或是其別名 --no-video
。
終端輸出視頻
-
--vo=tct
「彩色 Unicode 藝術的視頻輸出驅動程序,可在文本控制台中運行。」 -
--vo=caca
「彩色 ASCII 藝術的視頻輸出驅動程序,可在文本控制台中運行。」由於存在漏洞(參見 FS#70962),Arch Linux 禁用了 libcaca包 支持,並且由於其上游停止活動,此包尚未被重新加入:安裝 mpv-fullAUR。
音頻
音量過低
為配置文件中的 volume-max=value
設置一個合適的值,例如 volume-max=150
,這將使音量提高至 150%,也就是兩倍多的音量。將音量調得過高會產生削波假象(clipping artefacts)。此外(或作為替代方法),還可以使用 af=acompressor
動態壓縮範圍。
指定音頻輸出
運行以下命令獲取可用音頻輸出設備列表:
$ mpv --audio-device=help
然後將其中的某個設備添加至 ~/.config/mpv/mpv.conf
。例如:
audio-device=alsa/hdmi:CARD=NVidia,DEV=1
高清音頻直通
要使 TrueHD 和 DTS-MA 等高清音頻編解碼器直通影音接收器,請將以下內容添加至 ~/.config/mpv/mpv.conf
。
audio-spdif=ac3,eac3,dts-hd,truehd
音量標準化
不同信號源的響度可能不同或不一致,因此 mpv 用戶可能需要配置自動音量標準化。例如:
~/.config/mpv/input.conf
n cycle_values af loudnorm=I=-30 loudnorm=I=-15 anull
這會綁定按鍵 n
,使音頻過濾器設置(af
)在指定的值之間循環:
-
loudnorm=I=-30
:loudnorm 設置為I=-30
,音量小,可能適合背景音樂 -
loudnorm=I=-15
:音量大一些,可能適合當前播放的視頻 -
anull
:音量過濾器重置為空(null),即禁用音頻過濾器
af=loudnorm=I=-30
的配置項添加到主配置文件中。mpv 中的音頻過濾功能由後端的 FFmpeg 提供。參見 Wikipedia:EBU R 128 和 ffmpeg loudnorm filter 以獲取細節信息。
另請參見上游問題 [2] 和 [3],其中提到了不同的選項。
在 mpv 用作音樂播放器時使用 Lua 腳本增強其功能
這篇博文介紹了 music.lua 腳本,該腳本展示了如何在 mpv 用作音樂播放器時,使用 Lua 腳本增強其功能。
退出時保存播進度
默認情況下,按下快捷鍵 Shift+q
可保存播放進度並退出。可在按鍵綁定的配置文件中設置 quit_watch_later
以修改此快捷鍵。
要在退出時自動保存當前播放位置,請以 --save-position-on-quit
啟動 mpv,或將 save-position-on-quit
添加至配置文件。
保存在播放列表中的位置以及在播放下一個文件時暫停播放
播放列表可以是一個文件列表,參見 mpv(1) § playlist。要播放一個列表並記住播放位置:
$ mpv --save-position-on-quit --pause --reset-on-next-file=pause --playlist=/path/to/playlist
以 --pause
選項啟動時,mpv 將處於暫停狀態,當切換至下一個文件時,--reset-on-next-file=pause
將重置暫停模式。
播放 DVD
mpv 不支持 DVD 菜單。要以視頻 DVD 的最長標題啟動主流,使用這個命令:
$ mpv dvd://
可選的標題指定符是一個數字(從 0 開始),可在 DVD 上單獨的視頻流之間進行選擇:
$ mpv dvd://[title]
已被複製到本地文件系統(例如使用了 dvdbackup 工具)的 DVD 可通過指定本地拷貝將其包含進來:--dvd-device=PATH
。
要從本地文件系統播放 DVD,請參考下面的桌面項示例:
[Desktop Entry] Type=Application Name=mpv Media Player DVD GenericName=Multimedia player Comment=Play movies and songs Icon=mpv Exec=mpv dvd:// --player-operation-mode=pseudo-gui --force-window --idle --dvd-device=%f Terminal=false Categories=AudioVideo;Audio;Video;Player;TV; #(MimeType 和 X-KDE-Protocols 已省略,参见原 mpv.desktop 文件)
將 Exec 這一行替換為:
Exec=mpv dvd://0 dvd://1 dvd://2 dvd://3 dvd://4 dvd://5 dvd://6 dvd://7 dvd://8 dvd://9 --player-operation-mode=pseudo-gui --force-window --idle --dvd-device=%f
mpv 播放器會將 DVD 標題以從 0 到 9 的順序排列在播放列表內,這樣用戶就可以連續地播放或通過 mpv 用戶界面在 DVD 標題之間前後跳轉。
安裝 libdvdcss包 以解決以下問題:
[dvdnav] Error getting next block from DVD 1 (Error reading from DVD.)
恢復舊的屏幕控制項
自 0.21.0 版本起,mpv 已經將屏幕控制項(on-screen controls)替換為底部欄(bottombar)。如果想要恢復屏幕控制項,可以按照此處的說明編輯 mpv 的配置。
可重現的屏幕截圖
屏幕截圖的模板選項可以包含截屏幀的精確時間碼(HH:MM:SS.mmm)。有意義的文件名更易於了解屏幕截圖的來源。可以像這樣設置它:
~/.config/mpv/mpv.conf
screenshot-template="%F - [%P] (%#01n)"
這將擴展至 filename - [HH:MM:SS.mmm] (number).jpg
。結果示例:
Gunsmith Cats/ ├── Gunsmith Cats Ep. 01 - [00:00:50.217] (1).jpg ├── Gunsmith Cats Ep. 01 - [00:22:55.874] (1).jpg ├── Gunsmith Cats Ep. 01 - [00:22:55.874] (2).jpg └── Gunsmith Cats Ep. 02 - [00:15:05.778] (1).jpg
這樣的一個好處是,文件排序得當,因為時間碼在章節編號內部以字母順序進行排列。
參見 mpv(1) § screenshot-template 以獲取更多信息。
創建單張屏幕截圖
這是使用開始時間(HH:MM:SS
)創建單張屏幕截圖的示例:
$ mpv --no-audio --start=00:01:30 --frames=1 /path/to/video/file --o=/path/to/screenshot.png
屏幕截圖將被保存至 /path/to/screenshot.png。
Streaming
Twitch.tv streaming over mpv
安裝好 yt-dlp 或 youtube-dlAUR 後,mpv 能直接打開 Twitch 的直播流。
或參見 Streamlink#Twitch。
另一個選擇是基於 Livestreamer 的 Lua 腳本。
youtube-dl 和格式選擇
--ytdl-format
的默認值是 bestvideo+bestaudio/best
。這可能意味著,對於那些有 4K 解析度的 youtube 視頻,即使連接著的顯示器解析度低得多,軟體內解碼 VP9 編碼的 4K 視頻對於設備而言依然十分困難。
然而,設置正確的 youtube-dl 格式選擇器能輕易地解決這個問題。下面的配置示例中,只有垂直解析度小於等於 1080 像素的視頻會被選擇。
ytdl-format="bestvideo[height<=?1080]+bestaudio/best"
因無法硬體解碼而希望完全禁用特定的編解碼器,可以將其添加至格式選擇器內。例如,可額外選擇忽略 VP9,如下所示:
ytdl-format="bestvideo[height<=?1080][vcodec!=vp9]+bestaudio/best"
若更傾向於開源編解碼器(VP9 和 Opus),請使用:
ytdl-format="((bestvideo[vcodec^=vp9]/bestvideo)+(bestaudio[acodec=opus]/bestaudio[acodec=vorbis]/bestaudio[acodec=aac]/bestaudio))/best"
youtube-dl 音頻搜索
要從終端模擬器中使用 yta search terms
尋找並串流音頻,將下面的函數添加至 .bashrc
:
function yta() { mpv --ytdl-format=bestaudio ytdl://ytsearch:"$*" }
系統集成
Use as a browser plugin
With the help of mozpluggerAUR, mpv can be used in a supported browser to play video. See Browser plugins#MozPlugger for configuration details. This coupled with a user script such as ViewTube, allows you to use mpv in place of a site's integrated video player.
It may be needed to specify a valid user agent for HTTP streaming, e.g. user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0"
.
Browser plugins#Multimedia playback page shows other easy ways to watch videos.
從 KDE 的剪切板中打開視頻連結
如果已安裝 youtube-dlAUR 或 yt-dlp包,並且正在使用 KDE Plasma,可以在 KDE 的剪切板中創建一個自定義操作來方便快捷地播放來自視頻分享站點的連結。
- 打開剪切板配置菜單(典型的做法是右鍵它的系統托盤圖標)然後前往 Actions 標籤頁。
- 點擊 Add Action 然後輸入用於探測想要從中播放視頻的網站的正則表達式(例如,
^http.+(youtu|twitch)
用於探測 YouTube 和 Twitch 的網站)。 - 點擊 Add Command,在 Command 下輸入
mpv %s
並在 Description 下輸入mpv
。
此時,在剪切板內按下快捷鍵 Ctrl+Alt+r
並在上下文菜單中選擇 mpv 即可播放來自剪切板的視頻連結。有可能需要前往 Advanced Settings 並將火狐瀏覽器從 Disable Actions for Windows of Type WM_CLASS 這一小節移除。
故障排除
常規調試
若使用 mpv 播放時遇到問題(或完全無法運行),首先需要做這三件事:
- 從命令行啟動 mpv(-v 標識用於增加輸出信息詳細程度)。幸運的話,你會看到一條錯誤信息,告訴你什麼地方出錯了。
$ mpv -v video.mkv
- 讓 mpv 輸出日誌文件。日誌內容可能難以篩選,但如果有什麼東西壞了,你應該能在日誌裡看到。
$ mpv -v --log-file=./log video.mkv
- 無配置文件運行 mpv。如果運行正常,那麼問題應該在配置文件的某處(或許是硬體無法跟上你的設置)。
$ mpv --no-config video.mkv
如果 mpv 能夠運行但運行狀態不佳,那麼第四件值得一試的事就是查看實時統計數據(使用快捷鍵 i
),確認其具體運行情況。
修復播放卡頓和撕裂問題
在支持 OpenGL 的硬體上,mpv 默認使用 OpenGL 視頻輸出設備設置。在嘗試使用英特爾 HD4XXX 系列顯卡或類似顯卡在 4K 顯示器上播放視頻時,使用任何 OpenGL 輸出設置都會出現播放卡頓(有時甚至完全停止)和嚴重的撕裂問題。如果遇到以上問題,使用 XV 視頻輸出(僅適用於 Xorg)或許有用:
~/.config/mpv/mpv.conf
vo=xv
這有可能進一步提升播放性能(尤其在低性能硬體上),但大多數情況下,這會大幅降低視頻品質。
要提升視頻播放性能,可以考慮以下 配置項:
~/.config/mpv/mpv.conf
vd-lavc-fast vd-lavc-skiploopfilter=skipvalue vd-lavc-skipframe=skipvalue vd-lavc-framedrop=skipvalue vd-lavc-threads=threads
窗口合成器相關問題
如 mpv(1) § Window 中所述,mpv 在全屏模式下默認禁用任何活動窗口合成器。這用於防止播放時可能出現的性能問題。
對於 KWin 或 Mutter 等窗口合成器而言,即使在窗口化模式下,禁用窗口合成也是有好處的。這可以通過設置 x11-bypass-compositor=yes
選項實現。
禁用合成有兩個缺點:
- 重新啟用合成可能會出現一段時間的卡頓,尤其在使用 KWin 合成時。
- 由合成提供的任何效果都將暫時不可用(直至 mpv 重新啟用合成),這在 Plasma 中會阻止默認的應用程式切換器工作。
為避免這些問題,可使用 x11-bypass-compositor=no
令合成器保持啟用狀態。
沒有音量條,無法調整音量
在音量圖標上滾動滑鼠滾輪。
GNOME Blank screen (Wayland)
在 Wayland 下 mpv 可能不會暫停 GNOME 的省電設置,導致屏幕保護程序在視頻播放時關閉顯示器。解決方法是在 mpv.desktop
中 Exec=
這一行開頭添加 gnome-session-inhibit
。
要僅在播放時阻止屏保,請使用 mpv_inhibit_gnomeAUR。作為替代方案,可使用這個基於 gnome-session-inhibit
的 mpv Lua 腳本。
io.mpv.Mpv
已包含 mpv_inhibit_gnome 插件。光標主題在 GNOME Wayland 下不受約束
參見 GNOME/Troubleshooting#Cursor size or theme issues on Wayland。
關於 AMD GPU 上缺少 CUDA 庫的錯誤信息
v0.34.1 以及更早版本的 mpv 在 AMD GPU 上使用 VAAPI 硬體加速時,可能會遇到持續的錯誤信息:Cannot load libcuda.so.1
。設置 gpu-hwdec-interop=vaapi
可阻止此錯誤信息。
相關錯誤報告:Github issue #9691,Github issue #8765。
上游已在 pull request #9842 中修復該問題。
無法在 PipeWire 被屏蔽時播放音頻
如果 mpv 在屏蔽 PipeWire 的系統上崩潰或無法播放音頻(報告無輸出或管道破損),請設置 --ao
選項以匹配環境。在 mpv.conf
中設置該選項以使其始終生效。
mpv 無法從文件播放 DVD
如果 mpv 無法從純 VIDEO_TS/VOB 結構的文件播放 DVD,則可能是恢復播放進度的功能存在問題。請嘗試清理 .config/mpv/watch_later
文件夾,或以 no-resume-playback
(也可設置 save-position-on-quit=no
選項)啟動 mpv。
修復暫停後恢復播放時出現的卡頓問題
如果是使用 PulseAudio 時出現視頻卡頓,請嘗試 mpv(1) § --pulse-latency-hacks 中討論的 pulse-latency-hacks
選項:
~/.config/mpv/mpv.conf
pulse-latency-hacks=yes