[Ch.14.3~14.5] [篇二] MPV Player 官方文檔中有關(guān)配置項(xiàng)OPTION的說明 v0.35.1
礙于篇幅,怕大家看不過來之后直接選擇從入門到放棄,所以先把兩個(gè)中長(zhǎng)篇幅的“段落”發(fā)出來,本來視頻、音頻、字幕這幾個(gè)章節(jié)應(yīng)該放在同一篇當(dāng)中的,但是看了一下字?jǐn)?shù),嗯,估摸著7W+字,兩眼一黑,穩(wěn)定發(fā)揮。。。本篇主講第14.3章節(jié)(程序行為)至第14.5章節(jié)(視頻)的文檔說明。
這部分文檔中的有些配置項(xiàng)還是值得去研究和嘗試的,不過大多數(shù)還是保持默認(rèn)就好。還有就是我很想吐槽幾句原文的部分表述,我個(gè)人非常討厭在使用手冊(cè)中時(shí)不時(shí)地會(huì)來幾句繞彎子的描述說明,本末倒置。所以偶爾遇到我在注釋中吐槽的話還請(qǐng)大家見諒。
以下摘取自 mpv player 官方使用手冊(cè)中的OPTION章節(jié),版本 v0.34.0,不保證內(nèi)容的時(shí)效性,僅供參考,實(shí)際還是以官方發(fā)布的最新文檔為準(zhǔn),善用 Ctrl + F 快速定位你想要的內(nèi)容:

2023/09/03?修訂:
+ v0.35.1 版本新增?Ch.14.4 “稍后再看”的章節(jié)內(nèi)容。
注:與其說是新增章節(jié),實(shí)際是將“稍后再看”的選項(xiàng)說明,從 v0.34.0 的“程序行為”中分離出作為獨(dú)立章節(jié)。

Ch.14.3 程序行為
--help, --h
顯示簡(jiǎn)短的選項(xiàng)概括說明。
你還可以項(xiàng)該選項(xiàng)中傳入一個(gè)字符串,將會(huì)列舉出所有名稱中包含該字符串的頂級(jí)選項(xiàng)幫助說明,例如,--h=scale 對(duì)應(yīng)所有包含 scale 單詞的(頂級(jí))選項(xiàng),特殊字符串 * 會(huì)列出全部的頂級(jí)選項(xiàng)說明。
注:有點(diǎn)類似于 ffmpeg 的 -h type=name 選項(xiàng)效果,如果在后面指定了需要檢索的內(nèi)容,則會(huì)返回這一類的選項(xiàng)幫助說明,比如說 ffmpeg -h encoder=h264
-v
增加(說明內(nèi)容)詳細(xì)級(jí)別,每個(gè) -v 選項(xiàng)都能在命令行中找到對(duì)應(yīng)的級(jí)別。
--version, -V
打印版本字符串信息并退出。
--no-config
不加載默認(rèn)的配置文件,該選項(xiàng)用于阻止同時(shí)加載用戶級(jí)別和系統(tǒng)范圍的 mpv.conf 和 input.conf 文件,其他的配置文件也會(huì)被阻止加載,例如負(fù)責(zé)恢復(fù)播放的文件。
注意
那些通過命令行選項(xiàng)的方式明確被需要的(配置)文件,例如 --include 或者 --use-filedir-conf 選項(xiàng),將仍然會(huì)被加載。
另見:--config-dir 選項(xiàng)說明。
--list-options
打印所有可用的選項(xiàng)。
--list-properties
打印可用的屬性列表。
--list-protocols
打印受支持的協(xié)議列表。
--log-file=<path>
打開給定的路徑用于向其中寫入和打印日志信息,已存在的文件將會(huì)被截?cái)?。日志?jí)別至少是 -v 等級(jí),不過可以通過 --msg-level 選項(xiàng)進(jìn)行提升(該選項(xiàng)無法低于其自身強(qiáng)制的最低日志等級(jí))
一個(gè)特殊的情形是 macOS 的捆綁包,默認(rèn)會(huì)在 ~/Library/Logs/mpv.log 路徑下創(chuàng)建日志文件。
--config-dir=<path>
強(qiáng)制使用不同的配置目錄。如果設(shè)置了該選項(xiàng),給定的目錄會(huì)被用來加載其中的配置文件,并且其他所有的配置目錄都會(huì)被忽略,這也意味著全局的mpv配置目錄連同每個(gè)用戶的配置目錄都會(huì)被忽略,以通過環(huán)境變量(MPV_HOME)進(jìn)行覆蓋的配置目錄也會(huì)被忽略。
需要注意的是 --no-config 優(yōu)先級(jí)高于該選項(xiàng)。
--save-position-on-quit
退出時(shí)總是保存當(dāng)前播放位置,稍后再次播放該文件時(shí),播放器會(huì)跳轉(zhuǎn)到原先的播放位置開始播放,如果被播放的文件是通過退出以外的其他任何方式被終止的,那么上述的這種行為就不會(huì)發(fā)生。例如,當(dāng)跳轉(zhuǎn)到播放列表中的下一個(gè)文件的瞬間是不會(huì)保存當(dāng)前播放位置,并且下次播放時(shí)只會(huì)在當(dāng)前需要播放的文件開始。
這項(xiàng)行為默認(rèn)是禁用的,但當(dāng)你使用 Shift + Q 退出播放器時(shí),該功能始終是可用的。
注:之前試著用過這項(xiàng)功能,感覺有點(diǎn)雞肋,并沒有想象中的那么智能,不知道最新版本有沒有完善。
正常退出播放器時(shí)會(huì)將當(dāng)前的播放位置、軟件設(shè)置等信息保存到配置路徑下的 watch_later 目錄中(默認(rèn)),生成一個(gè)以MD5值命名的配置文件。
不過當(dāng)你加載相同的播放列表時(shí),恰巧這個(gè)列表內(nèi)容又很長(zhǎng),如果是圖形界面用拖拽的方式播放,很難保證再次播放的首個(gè)文件就是之前退出時(shí)播放的文件。是的,這個(gè)退出保存功能只有在下次播放時(shí)恰好加載到之前退出的文件才起作用。
--watch-later-directory=<path>
指定用于存儲(chǔ)“稍后再看”臨時(shí)文件的目錄。
默認(rèn)是配置目錄(通常是 ~/.config/mpv/ )下一個(gè)名為“watch_later”的子目錄。
--dump-stats=<filename>
向給定文件中寫入精確的統(tǒng)計(jì)信息,文件在打開時(shí)會(huì)被截?cái)啵ㄈ绻染痛嬖谇矣袃?nèi)容的話)。文件中會(huì)包含原始的樣本數(shù)據(jù),每項(xiàng)都帶有一個(gè)時(shí)間戳。為了使該文件可讀,可以使用 TOOLS/stats-conv.py 腳本(以圖像的形式顯現(xiàn))。
該選項(xiàng)僅在調(diào)試時(shí)會(huì)有幫助。
注:這里的可讀是相對(duì)于人來說的,使用腳本將原始內(nèi)容處理并轉(zhuǎn)化為人可以理解的信息。
--idle=<no|yes|once>
當(dāng)沒有文件可以播放時(shí)讓mpv進(jìn)入空閑等待而不是退出,在輸入模式下會(huì)很有幫助,可以通過輸入命令來控制mpv播放器(默認(rèn):no)
once 表示僅在軟件啟用時(shí)空閑等待,并且在首個(gè)播放列表播放完畢后讓播放器自行關(guān)閉。
--include=<configuration-file>
指定要在默認(rèn)的配置文件之后解析的配置文件。
--load-scripts=<yes|no>
如果設(shè)置為 no,則不會(huì)自動(dòng)從配置路徑下的 scripts 子目錄(通常是 ~/.config/mpv/scripts/ )中加載腳本。(默認(rèn):yes)
--script=<filename>, --scripts=file1.lua:file2.lua:...
加載Lua腳本,第二個(gè)選項(xiàng)允許你通過使用路徑分隔符(在Unix中是 : Windows下是 ; )進(jìn)行分隔的方式加載多個(gè)腳本文件。
--script 是一個(gè)路徑列表選項(xiàng),詳情見 Ch.4.5 List Options 章節(jié)。
--script-opts=key1=value1,key2=value2,...
為腳本設(shè)置選項(xiàng),可按照鍵值查詢選項(xiàng)。如果對(duì)腳本使用了某個(gè)選項(xiàng),則該選項(xiàng)具體有何語義完全取決于被加載的腳本,未被任何腳本聲明過的選項(xiàng)值都會(huì)被忽略。
該選項(xiàng)是一個(gè)鍵值組合列表選項(xiàng),詳情見 Ch.4.5 List Options 章節(jié)。
--merge-files
假設(shè)將所有傳給mpv的文件串聯(lián)成單個(gè)大文件,在文件內(nèi)容使用時(shí)間軸/EDL作支持。
--no-resume-playback
不要從配置路徑下的 watch_later 子目錄(通常是 ~/.config/mpv/watch_later/ )的配置文件中恢復(fù)播放位置。參見 quit-watch-later 輸入命令。
--resume-playback-check-mtime
僅在文件的修改時(shí)間與保存記錄一致時(shí),從 watch_later 目錄下的配置文件中恢復(fù)播放位置。這可以防止在具有相同名稱但內(nèi)容不同的文件中錯(cuò)誤地恢復(fù)播放進(jìn)度。(默認(rèn):no)
--profile=<profile1,profile2,...>
使用給定的配置文件,--profile=help 選項(xiàng)會(huì)顯示當(dāng)前已定義的配置文件列表。
--reset-on-next-file=<all|option1,option2,...>
一般來說,mpv會(huì)在嘗試播放列表中的下一個(gè)文件時(shí)繼續(xù)保留當(dāng)前所有的設(shè)置,即使這些設(shè)置在播放期間被用戶修改過(該行為正好與 MPlayer 相反,后者嘗試在播放下一個(gè)文件時(shí)重置所有的設(shè)置項(xiàng))
默認(rèn):不要重置任何設(shè)置。
上述行為可以使用該選項(xiàng)做出更改,接受選項(xiàng)列表,并且mpv會(huì)在開始播放時(shí)將這些選項(xiàng)重置為初始值。初始值可以是默認(rèn)值,或者是由配置文件、命令行(的選項(xiàng)值)進(jìn)行設(shè)置。
在某些情況下,該選項(xiàng)可能不會(huì)如預(yù)期那樣工作,比如說,--volume 選項(xiàng)只會(huì)在配置文件或命令行中被明確設(shè)置時(shí)才會(huì)重置。
特殊名稱 all 會(huì)盡可能多的重置選項(xiàng)。
該選項(xiàng)是一個(gè)字符串列表選項(xiàng),詳情見 Ch.4.5 List Options 章節(jié)。
--watch-later-options=option1,option2,...
如果給定選項(xiàng)自從mpv開啟之后被修改過的話,則會(huì)保存到"稍后再看"的文件中。這些值會(huì)在下次再次播放該文件時(shí)恢復(fù)。播放進(jìn)度總是會(huì)以 start 選項(xiàng)的形式保存,因此將 start 添加到這個(gè)列表中是沒效果的。
當(dāng)移除選項(xiàng)時(shí),已經(jīng)存在的稍后再看數(shù)據(jù)是不會(huì)被修改的并且依舊會(huì)被完整地應(yīng)用,不過新的稍后再看數(shù)據(jù)中將不再包含這些(被移除)的選項(xiàng)。
該選項(xiàng)是一個(gè)字符串列表選項(xiàng),詳情見 Ch.4.5 List Options 章節(jié)。
--write-filename-in-watch-later-config
采用自身指向的實(shí)際文件名作為稍后再看配置文件的命名,只是簡(jiǎn)單地在文件頂部寫上注釋。
注:簡(jiǎn)單來說就是用你播放過的文件名作為恢復(fù)播放狀態(tài)記錄文件的命名,而不是默認(rèn)的MD5值。
警告
該選項(xiàng)可能會(huì)暴露個(gè)人隱私信息,因此默認(rèn)是禁用的。
--ignore-path-in-watch-later-config
當(dāng)使用稍后再看功能時(shí)忽略配置所在路徑(也就是僅使用文件名)(默認(rèn):禁用)
--show-profile=<profile>
顯示用戶配置描述和內(nèi)容,如果不指定參數(shù)則列出全部的用戶配置。
--use-filedir-conf
在與被播放文件的相同目錄下查找指定的配置文件,參見 Ch.5.4 File-specific Configuration Files 章節(jié)。
警告
如果播放的是未信任的媒體文件也許會(huì)有危險(xiǎn)。
--ytdl, --no-ytdl
啟用 youtube-dl 鉤子腳本,查找輸入的 URL 鏈接并播放位于網(wǎng)絡(luò)中的視頻。這項(xiàng)功能適用于眾多直播等流媒體網(wǎng)站,而不僅僅是該腳本名稱中所表示的網(wǎng)站(Youtube)
如果腳本無法對(duì)URL鏈接執(zhí)行任何操作,那么將不執(zhí)行任何操作。(擱這兒擱這兒呢?)
該腳本可接受一組選項(xiàng),通過帶上 --script-opts 選項(xiàng)就可以傳入這些內(nèi)容(使用 ytdl_hook- 作為選項(xiàng)前綴)
try_ytdl_first=<yes|no>
如果選擇了 yes 將會(huì)首先嘗試使用 youtube-dl 去解析 URL 鏈接,而不是默認(rèn)的僅在mpv打開鏈接失敗后再去用這個(gè)工具去解析。這主要取決于你的大多數(shù)鏈接是否都需要 youtube-dl 工具去解析。
exclude=<URL1|URL2|...
一個(gè)用 ' | ' 分隔且無需mpv使用 youtube-dl 去解析的 URL 模式列表。這些模式用于匹配 URL 鏈接當(dāng)中 http(s):// 之后的部分。
^ 用于匹配 URL 鏈接的開頭,$ 匹配結(jié)尾,并且你應(yīng)該在 ^$()%|,.[]*+-? 這些字符之前使用 % 去匹配它們對(duì)應(yīng)的字符。(類似轉(zhuǎn)義符,因?yàn)檫@些字符在模式匹配中有特殊含義,如果需要匹配字面意思需要在前面加一個(gè)轉(zhuǎn)義說明符)
參見這里以了解更多 Lua 模式匹配:https://www.lua.org/manual/5.1/manual.html#5.4.1
all_formats=<yes|no>
如果設(shè)置為 yes 將會(huì)試圖添加所有由 youtube-dl 發(fā)現(xiàn)并上報(bào)的格式(默認(rèn):no),每種格式都會(huì)以獨(dú)立的軌道流被添加進(jìn)來。此外,它們都是延遲加載的,并且實(shí)際上僅當(dāng)軌道流被選中時(shí)才會(huì)打開(該行為應(yīng)該會(huì)把加載時(shí)間保持地和沒有該選項(xiàng)時(shí)一樣少)
添加的是平均比特率的元數(shù)據(jù),若可用,意味著你可以使用 --hls-bitrate 選項(xiàng)來決定選擇哪條軌道流(HLS 曾經(jīng)是按類似方式公開且可選質(zhì)量的唯一格式,因此被沿用至選項(xiàng)名稱中)
代表那些由 youtube-dl 選為默認(rèn)格式的軌道流將具有默認(rèn)的標(biāo)志集,這意味著通常mpv應(yīng)該仍然會(huì)選擇用 --ytdl-format 選項(xiàng)默認(rèn)選出的格式。
盡管這個(gè)機(jī)制做到了在運(yùn)行期間選擇切換數(shù)據(jù)流,可出于種種技術(shù)原因上述行為并不適用于此類目的(反應(yīng)慢,且不能從真正意義上修復(fù)),總之,這個(gè)選項(xiàng)沒有那么實(shí)用,并且之所以添加上僅僅是為了展示一種可行性。
當(dāng)你嘗試在質(zhì)量和帶寬之間做選擇的時(shí)候有兩點(diǎn)必須考慮到:
完全獨(dú)立的音頻和視頻流(類似DASH)。這些流當(dāng)中的每一項(xiàng)僅包含音頻或者視頻,所以你可以不受限制地混合以及組合音頻/視頻帶寬。最為直觀地與按軌道流選擇質(zhì)量的概念相吻合(即 all_formats 選項(xiàng)所支持做的事)
獨(dú)立的多路復(fù)用音頻和視頻流集合。各個(gè)版本的媒體流中都包含音頻和視頻流,并且彼此之間是交錯(cuò)存在的。為了避免浪費(fèi)帶寬,你應(yīng)該僅選擇其中的一個(gè)版本(例如,如果你選擇了其中一個(gè)版本的音頻流,那么即使你選擇了從其他不同媒體流中的視頻,依舊會(huì)下載該版本對(duì)應(yīng)的視頻)
mpv仍然會(huì)把它們表示為獨(dú)立的軌道流,但是會(huì)把每個(gè)軌道流的標(biāo)題設(shè)為N路復(fù)用,其中N會(huì)被替換成原始流的 youtube-dl 格式ID。
部分網(wǎng)站會(huì)同時(shí)混用第1點(diǎn)和第2點(diǎn)內(nèi)容,不過我們?nèi)匀患僭O(shè)之所以這么做是為了兼容性的原因,并且毫無理由去使用它們。
force_all_formats=<yes|no>
如果設(shè)為 yes,并且 all_formats 選項(xiàng)同樣也被設(shè)為 yes,這將會(huì)嘗試把 youtube-dl 上報(bào)的全部格式表示為軌道流,即使mpv大概率會(huì)使用它所上報(bào)的直鏈(默認(rèn):yes)
如果 youtube-dl 工作在一個(gè) HLS 主播放列表上,表現(xiàn)會(huì)與通常情況有所不同。
如果設(shè)為 no,則將此特定類型的流視為 all_formats 選項(xiàng)設(shè)置為 no 的情形,并且使用通過 youtube-dl 工具完成的媒體流的選擇。
use_manifests=<yes|no>
讓mpv將主要清單上的網(wǎng)址用于類似 HLS 和 DASH 的格式。若是可行的話,允許在運(yùn)行期間選擇音視頻(默認(rèn):no),出于性能的原因默認(rèn)是被禁用的(no)
ytdl_path=youtube-dl
配置指向 youtube-dl 可執(zhí)行文件或兼容分支的路徑。在Unix平臺(tái),路徑應(yīng)該通過 : 分隔,在Windows平臺(tái)上用 ; 分隔。mpv會(huì)按順序查找 PATH 環(huán)境變量和自身配置目錄中的已配置路徑,默認(rèn)是"yt-dlp","yt-dlp_x86" 以及 "youtube-dl" 這幾個(gè)文件,在Windows平臺(tái)上始終會(huì)加上 ".exe" 的后綴拓展名。
為什么選項(xiàng)名稱中要混用 _ 和 - 符號(hào)?
優(yōu)質(zhì)回答:我不知道
--ytdl-format=<ytdl|best|worst|mp4|webm|...>
設(shè)置直接傳遞給 youtube-dl 的視頻格式/質(zhì)量。這些可能的值是特定于網(wǎng)站和視頻而言,對(duì)于給定的URL鏈接,可以使用 youtube-dl --list-formats URL 命令找到可用的格式。參見 youtube-dl 的文檔以獲取可用的別稱。(默認(rèn):bestvideo+bestaudio/best)
ytdl 的值是完全不會(huì)向 youtube-dl 傳入 --format 選項(xiàng)的,因此也不會(huì)覆蓋其自身的默認(rèn)值。需要注意的是 youtube-dl 有時(shí)會(huì)返回mpv無法處理的格式,并且在這些情況下,mpv默認(rèn)設(shè)置可能會(huì)運(yùn)作地更好些。
--ytdl-raw-options=<key>=<value>[,<key>=<value>[,...]]
向 youtube-dl 傳入任意的選項(xiàng),形參(parameter)與實(shí)參(argument)都應(yīng)該以鍵值對(duì)(key-value pair)的形式傳入。不帶實(shí)參的選項(xiàng)也必須包含 = 。
該選項(xiàng)沒有健全的檢查機(jī)制,因此可能會(huì)出問題(即向 youtube-dl 傳入非法參數(shù))
可以向 youtube-dl 傳入一個(gè)代理URL鏈接,以便在解析網(wǎng)址的時(shí)候使用,這對(duì)于受到地理位置限制的網(wǎng)站會(huì)很有用。在 youtube-dl 完成解析后,一些URL仍然需要代理來完成播放,因此這種方式同樣也能夠向mpv播放器傳入代理信息。注意,SOCKS 代理不受支持,并且 https 網(wǎng)址同樣會(huì)繞過代理,這是受 FFmpeg 的限制所決定的。
該選項(xiàng)是一種鍵值對(duì)列表選項(xiàng),參見 Ch.4.5 List Options 章節(jié)以獲取更多細(xì)節(jié)。
注:雖然我不太了解 youtube-dl 的具體功能和高級(jí)用法,但是如果能不斷嘗試和仔細(xì)設(shè)置以上這些選項(xiàng),讓mpv配合ytdl實(shí)現(xiàn)對(duì)各種網(wǎng)絡(luò)流的操作,在這方面的綜合表現(xiàn)應(yīng)該不會(huì)遜于市場(chǎng)上大多數(shù)媒體播放器。
--load-stats-overlay=<yes|no>
啟用通用鍵位綁定的方式顯示有用的播放信息的內(nèi)置腳本(默認(rèn):yes),默認(rèn)情況下,使用的是 i 鍵位( I 鍵位是用于持久化顯示)
--load-osd-console=<yes|no>
啟用通過鍵位綁定的方式顯示控制臺(tái)并讓你輸入命令的內(nèi)置腳本(默認(rèn):yes),默認(rèn)是使用 ` 鍵位顯示控制臺(tái),ESC 鍵再次隱藏(該功能是基于一個(gè)名為 repl.lua 的用戶腳本)
--load-auto-profiles=<yes|no|auto>
啟用執(zhí)行自動(dòng)配置文件的內(nèi)置腳本(默認(rèn):yes),參見 Ch.5.7 Conditional auto profiles 章節(jié)以獲取更多細(xì)節(jié)。auto 參數(shù)會(huì)加載腳本,但如果沒有遇到條件配置文件的話,則會(huì)立即卸載腳本。
--player-operation-mode=<cplayer|pseudo-gui>
用來啟用"偽圖形界面模式",意味著某些選項(xiàng)的默認(rèn)值會(huì)發(fā)生改變,該選項(xiàng)一般不應(yīng)該直接使用,而是只能由mpv在其內(nèi)部使用,或者由mpv提供的腳本、配置文件或 .desktop 文件使用。參見 Ch.11 PSEUDO GUI MODE 章節(jié)以獲取更多細(xì)節(jié)。
Ch.14.4?稍后再看(v0.35.1)
--save-position-on-quit
退出時(shí)始終會(huì)保存當(dāng)前的播放位置,稍后當(dāng)這個(gè)文件再次被播放時(shí),播放器將會(huì)跳轉(zhuǎn)到先前的播放位置處開始播放。如果當(dāng)前播放中的文件被除了正常退出之外的其他任何方式中止,則不會(huì)保存上述內(nèi)容。例如,當(dāng)跳轉(zhuǎn)至播放列表中的下一個(gè)文件時(shí)將不會(huì)保存原先文件的位置信息,并且在下次播放該文件時(shí)會(huì)從頭開始播放。
這種行為默認(rèn)是被禁用的,但你始終可以在退出播放器時(shí)按下 Shift+Q 臨時(shí)啟用保存功能。
參考 RESUMING PLAYBACK 章節(jié)。
--watch-later-directory=<path>
指定保存“稍后再看”臨時(shí)文件的目錄。
默認(rèn)是配置目錄下面(通常是 ~/.config/mpv/ ),一個(gè)名為“watch_later”的子目錄。
--no-resume-playback
不要從“watch_later”配置子目錄中(通常是 ~/.config/mpv/watch_later/ )恢復(fù)播放位置。
--resume-playback-check-mtime
如果存檔文件的修改時(shí)間與記錄的時(shí)間一致的話,那么僅從“watch_later”配置子目錄中(通常是 ~/.config/mpv/watch_later/ )恢復(fù)播放位置。這可以防止在同名但內(nèi)容不同的文件中進(jìn)行跳轉(zhuǎn)。(默認(rèn):no)
--watch-later-options=option1,option2,...
其中的選項(xiàng)自 mpv 被打開之后如果發(fā)生了變更,則會(huì)被保存到“稍后再看”文件里面。當(dāng)下回再次播放這個(gè)文件時(shí),這些選項(xiàng)值就會(huì)被恢復(fù)。播放位置始終會(huì)作為 start 選項(xiàng)被保存到文件中,因此向該列表中添加 start 選項(xiàng)是沒有任何效果的。
當(dāng)移除了其中的選項(xiàng),已有的稍后再看數(shù)據(jù)是不會(huì)被修改,且依舊會(huì)完整地使用全部選項(xiàng)值,但是新產(chǎn)生的稍后再看數(shù)據(jù)將不會(huì)再包含這些選項(xiàng)。
該選項(xiàng)是字符串列表選項(xiàng),請(qǐng)參考 List Options 章節(jié)以獲取詳細(xì)信息。
--write-filename-in-watch-later-config
在“稍后再看”配置文件中的前部加上自身指向的文件名,僅會(huì)作為注釋的形式寫到配置文件的頭部。
警告
該選項(xiàng)可能會(huì)暴露個(gè)人敏感信息,因此默認(rèn)是被禁用的。這位用戶,你也不想暴露自己的觀看記錄對(duì)吧?
--ignore-path-in-watch-later-config
當(dāng)使用稍后再看功能時(shí),忽略文件所在路徑(即僅使用文件名作為記錄,默認(rèn):禁用)
注:忽略文件路徑后,相同的文件即使位于不同的目錄也能恢復(fù)播放狀態(tài)。例如當(dāng)你移動(dòng)了原先已保存稍后再看記錄的文件,稍后再次播放該文件,默認(rèn)情況下,因?yàn)楫?dāng)前文件路徑與記錄中的位置信息不符,所以播放器不會(huì)主動(dòng)跳轉(zhuǎn)至原先的播放位置。忽略路徑后,僅會(huì)根據(jù)文件名作為判斷依據(jù),此時(shí)就能夠自動(dòng)恢復(fù)播放位置,但同樣也會(huì)帶來安全隱患。
Ch.14.5?視頻
--vo=<driver>
指定需要使用的視頻輸出后端,參見 Ch.15 VIDEO OUTPUT DRIVERS 章節(jié)以獲取更多細(xì)節(jié)與可用驅(qū)動(dòng)的描述。
--vd=<...>
根據(jù)家族類別和名稱,指定用到的視頻解碼器的優(yōu)先級(jí)列表。參考 --ad 選項(xiàng)以獲取更多細(xì)節(jié),這兩個(gè)選項(xiàng)使用相同的語法和語義,唯一的區(qū)別是它們工作在不同的編解碼器列表上。
注意
參見 --vd=help 獲取可用解碼器的完整列表。
--vf=<filter1[=parameter1:parameter2:...],filter2,...>
指定應(yīng)用到視頻流之上的視頻濾鏡列表,參見 Ch.17?VIDEO FILTERS 章節(jié)以獲取更多細(xì)節(jié)和可用濾鏡的描述。存在? --vf-add,--vf-pre,--vf-del 以及 --vf-clr 的選項(xiàng)變體用于修改先前指定的列表,不過你通常是不需要用到這些變形。
--untimed
輸出視頻幀時(shí)(電腦)不要進(jìn)入睡眠模式,這在使用 --no-audio 選項(xiàng)進(jìn)行基準(zhǔn)測(cè)試的時(shí)候會(huì)有所幫助。
--framedrop=<mode>
在運(yùn)行較慢的系統(tǒng)上跳過部分畫面幀以維持音畫(A/V)同步,或者在具有幀率上限的視頻輸出中播放高幀率視頻。
參數(shù)是選擇丟幀模式,并且可以是下列的其中一項(xiàng):
<no>?禁用任何形式的丟幀,不推薦,僅測(cè)試用。
<vo>?在視頻輸出中丟棄延遲幀(默認(rèn)),這仍然會(huì)對(duì)全部的視頻幀進(jìn)行解碼和施加濾鏡,但不會(huì)在視頻輸出中渲染它們(被丟棄的延遲幀),在終端狀態(tài)行中指示為 Dropped: 字段。
在音頻同步的模式中,這將會(huì)丟棄那些在顯示時(shí)就已經(jīng)過時(shí)的畫面幀。如果解碼器產(chǎn)出過慢,理論上所有的畫面幀都必須被丟棄(因?yàn)樗械膸佳舆t了)為了避免這種情況,如果有效幀率低于10 FPS,那么丟幀行為將會(huì)停止。
在顯示同步模式下(參見 --video-sync 選項(xiàng)),這只會(huì)影響音畫丟棄和重復(fù)畫面幀的方式,如果該模式被禁用,理論上音畫不同步將不再影響視頻調(diào)度(非常類似:顯示 - 重新采樣 - 非同步的模式)。但即使被禁用,仍會(huì)按照視頻與顯示頻率之間的比率選擇跳過畫面幀(也就是丟棄)
這是比較推薦的模式,并且是默認(rèn)項(xiàng)。
<decoder>?老舊且基于解碼器的丟幀模式(這與mpv 0.5.x 以及更早版本中的 --framedrop=yes 選項(xiàng)是一致的),這會(huì)告訴解碼器跳過畫面幀(除非這些幀需要被用來解碼未來幀)。或許在運(yùn)行較慢的系統(tǒng)中會(huì)有幫助,但可能會(huì)產(chǎn)生無法觀看的間斷輸出,甚至是完全凍結(jié)住顯示。
這種使用了啟發(fā)式辦法可能沒有意義,并且通常無法達(dá)成較好的結(jié)果,因?yàn)闊o法用可預(yù)測(cè)的方式控制解碼器的丟幀行為,所以不推薦。
即使你想用這個(gè)選項(xiàng),推薦? decoder+vo 的方式以獲取更好的結(jié)果。
--vd-lavc-framedrop 選項(xiàng)控制了什么樣的幀需要被丟棄。
<decoder+vo> 同時(shí)啟用這兩種模式,不推薦,只比 decoder 模式好一點(diǎn)點(diǎn)。
注意
--vo=vdpau 選項(xiàng)有它自己對(duì) vo 丟幀模式的編碼方式,因此與其他視頻輸出可能略有不同。
--video-latency-hacks=<yes|no>
啟用部分傾向于通過1~2幀來降低視頻延遲的行為(默認(rèn):no),需要注意的是,一旦播放器的計(jì)時(shí)編碼本身不再需要執(zhí)行這些操作,則可能會(huì)在毫無通知的情況下移除該選項(xiàng)。
該選項(xiàng)會(huì):
使用解復(fù)用器為丟幀行為報(bào)告FPS值,這避免了播放器需要預(yù)先解碼1畫面幀,有效降低了總的延遲。這也意味著如果解復(fù)用器錯(cuò)誤地報(bào)告了FPS,或者視頻濾鏡鏈改變了FPS值(例如隔行掃描),則會(huì)丟棄過多或不足的畫面幀。
禁用對(duì)首個(gè)視頻幀的等待,通常播放器在正確開始播放前,會(huì)等待首個(gè)視頻幀完全渲染。部分視頻輸出在渲染第一幀時(shí)會(huì)惰性地初始化內(nèi)容,所以如果不這么做,渲染首幀的時(shí)間超出所需時(shí)間,那么視頻輸出被迫會(huì)丟棄掉一些幀。
--override-display-fps=<fps>
設(shè)置使用 --video-sync=display-* 模式來顯示FPS值,默認(rèn)使用檢測(cè)到的值,留意設(shè)置了錯(cuò)誤的值(即使是稍有不慎)都可能會(huì)破壞視頻的播放。在接入多個(gè)顯示器的系統(tǒng)上,檢測(cè)到的錯(cuò)誤值可能來自錯(cuò)誤的顯示器。
僅當(dāng)你有足夠的理由相信自動(dòng)確定的值有錯(cuò)誤時(shí),再來設(shè)置該選項(xiàng)。
--display-fps=<fps>
--override-display-fps 選項(xiàng)的已棄用別名。
--hwdec=<api>
指定應(yīng)該盡可能使用的硬件解碼API,是否進(jìn)行硬件解碼實(shí)際上取決于視頻編解碼器,如果硬件解碼不可用,mpv會(huì)退回到軟件解碼(使用CPU解碼)
硬件解碼默認(rèn)是不開啟的,因?yàn)樗ǔJ前l(fā)生錯(cuò)誤的另一個(gè)誘因,僅當(dāng)你的CPU解碼特定的視頻太慢時(shí)才值得去使用。
注意
使用 Ctrl + h 快捷鍵可以在運(yùn)行期間切換硬件解碼模式,讓該選項(xiàng)在 auto 和 no 之間變換。
不推薦通過添加選項(xiàng)到配置文件中的方式始終開啟硬解,如果你在用的是Ubuntu軟件包,請(qǐng)刪除 /etc/mpv/mpv.conf,因?yàn)檐浖ㄟ^設(shè)置 hwdec=vaapi 默認(rèn)會(huì)嘗試開啟硬解(效果不會(huì)太理想,甚至可能會(huì)導(dǎo)致使用次優(yōu)化包裝器),或者至少把它修改為 hwdec=auto-safe
如果你想要啟用硬解,那么請(qǐng)使用自動(dòng)模式當(dāng)中的其中一個(gè)。顯式選擇模式主要用來測(cè)試和調(diào)試。如果你想要在(平臺(tái)環(huán)境)更新之后繼續(xù)工作,把顯式選擇放到配置文件中是比較糟糕的想法。
注意
即使是啟用狀態(tài),硬件解碼依然只會(huì)把部分編解碼器列入到白名單,參考 --hwdec-codecs 選項(xiàng)以便在更多場(chǎng)景下開啟硬件解碼。
該選擇哪種辦法?
如果你只是想在播放期間啟用硬解,不要設(shè)置相應(yīng)參數(shù),或者可以把 hwdec=no 放到你的 mpv.conf 配置文件里去(和在默認(rèn)情況下強(qiáng)制啟用硬解的發(fā)行版有關(guān),例如在Ubuntu平臺(tái)上),請(qǐng)使用 Ctrl+h 這個(gè)默認(rèn)的快捷鍵在播放期間開啟硬解。
如果你不是很確定,但想要默認(rèn)始終開啟硬解,把 hwdec=auto-safe 配置項(xiàng)放到你的 mpv.conf 配置文件里去,并且需要承認(rèn)的是該用例不是"真正"支持硬解,而且可能會(huì)導(dǎo)致問題。
如果你想要測(cè)試可用的硬件解碼方案,傳入 --hwdec=auto,--hwdec-codecs=all 然后觀察終端輸出。
如果你是一名開發(fā)者,或者想執(zhí)行詳盡的測(cè)試,你可能會(huì)需要其他任何可能的選項(xiàng)值。
<api>的內(nèi)容可以是以下其中一項(xiàng):
no:始終使用軟解(默認(rèn))
auto:強(qiáng)制啟用任何能找到的硬件解碼器(見下文)
yes:準(zhǔn)確來說和 auto 一樣
auto-safe:?jiǎn)⒂萌魏卧诎酌麊沃械挠布獯a器(見下文)
auto-copy:?jiǎn)⒂脦?copy-back 功能且表現(xiàn)最好的硬件解碼器(見下文)
vdpau:需要搭配 --vo=gpu 與 X11,或者 --vo=vdpau 配置項(xiàng)(僅Linux平臺(tái))
vdpau-copy:將視頻拷回到系統(tǒng)內(nèi)存(僅Linux平臺(tái)和部分GPU)
vaapi:需要搭配 --vo=gpu 或者 --vo=vdpau 配置項(xiàng)(僅Linux平臺(tái))
vaapi-copy:將視頻拷回到系統(tǒng)內(nèi)存(僅Linux平臺(tái)和部分GPU)videotoolbox:需要搭配 --vo=gpu(macOS 10.8及其以上版本),或者 --vo=libmpv 配置項(xiàng)(iOS 9.0及其以上版本)
videotoolbox-copy:將視頻拷回到系統(tǒng)內(nèi)存(macOS 10.8或者iOS 9.0以上版本)
dxva2:需要搭配 --vo=gpu 與 --gpu-context=d3d11,--gpu-context=angle 或者 --gpu-context=dxinterop 配置項(xiàng)(僅Windows平臺(tái))
dxva2-copy:將視頻拷回到系統(tǒng)內(nèi)存(僅Windows平臺(tái))
d3d11va:需要搭配 --vo=gpu 與 --gpu-context=d3d11 或者 --gpu-context=angle 配置項(xiàng)(僅Windows 8+平臺(tái))
d3d11va-copy:將視頻拷回到系統(tǒng)內(nèi)存(僅Windows 8+平臺(tái))
mediacodec:需要搭配 --vo=mediacodec_embed 配置項(xiàng)(僅Android平臺(tái))
mediacodec-copy:將視頻拷回到系統(tǒng)內(nèi)存(僅Android平臺(tái))
mmal:需要搭配 --vo=gpu 配置項(xiàng)(僅樹莓派平臺(tái),默認(rèn)如果可用的話)
mmal-copy:將視頻拷回到系統(tǒng)內(nèi)存(僅樹莓派平臺(tái))
nvdec:需要配合 --vo=gpu 配置項(xiàng)(所有可用CUDA平臺(tái))
nvdec-copy:將視頻拷回到系統(tǒng)內(nèi)存(所有可用CUDA平臺(tái))
cuda:需要配合 --vo=gpu 配置項(xiàng)(所有可用CUDA平臺(tái))
cuda-copy:將視頻拷回到系統(tǒng)內(nèi)存(所有可用CUDA平臺(tái))
crystalhd:將視頻拷回到系統(tǒng)內(nèi)存(所有受硬件支持的平臺(tái))
rkmpp:需要配合 --vo=gpu 配置項(xiàng)(僅部分瑞芯微(RockChip)設(shè)備)
auto 模式會(huì)嘗試使用首個(gè)可用的方案來自動(dòng)啟用硬件解碼。這仍取決于你所使用的視頻輸出,例如,如果你沒有使用 --vo=gpu 或者 --vo=vdpau 配置項(xiàng),那么永遠(yuǎn)不會(huì)啟用 vdpau 解碼。另外需要注意如果首個(gè)被找到的解碼方案實(shí)際不能用的話,將始終退回到軟解,而不是繼續(xù)嘗試下一個(gè)方案(或許在某些Linux系統(tǒng)上情況會(huì)好一些)
auto-safe 和 auto 比較類似,但僅允許那些被認(rèn)為是安全且在白名單當(dāng)中的方案。默認(rèn)情況下,這應(yīng)該是在配置文件中啟用硬件解碼較為合理的方案(即使你無論如何都不應(yīng)該那么做,更推薦在運(yùn)行期間用 Ctrl+h 去開啟),不像 auto,該模式不會(huì)嘗試去啟用未知或已知不良的方案。此外,在其他情形中當(dāng)被認(rèn)為會(huì)導(dǎo)致問題時(shí)可能會(huì)禁用硬件解碼,但就目前而言這種機(jī)制是相當(dāng)原始的(作為當(dāng)前仍然會(huì)導(dǎo)致問題的示例:Windows平臺(tái)上的HEVC和Intel芯片的某些組合往往會(huì)造成mpv的崩潰,很有可能是由于驅(qū)動(dòng)程序中的bug導(dǎo)致)
auto-copy-safe 選擇了? auto-safe 和 auto-copy 兩者的聯(lián)合方案。
auto-copy 僅選擇在解碼之后將視頻數(shù)據(jù)拷回到系統(tǒng)內(nèi)存中的模式。這種選擇模式類似 vaapi-copy(等諸如此類),如果這些方案都不工作,則會(huì)禁用硬解。與軟解相比(假設(shè)使用了現(xiàn)代編解碼器和沒有錯(cuò)誤的視頻流),這種模式通常能夠保證不會(huì)造成額外的畫面質(zhì)量損失,并且允許用CPU處理視頻濾鏡。該模式適用于全部的視頻濾鏡和視頻輸出。
因?yàn)橐獙⒔獯a好的視頻拷回至系統(tǒng)內(nèi)存,效率通常會(huì)比直接模式要來得低,并且可能對(duì)軟解沒多大幫助。
注:copy-back 會(huì)將視頻數(shù)據(jù)拷回到主內(nèi)存之后再進(jìn)行繪制,因此會(huì)造成性能開銷,但提升了解碼的穩(wěn)定性
注意
大多數(shù)非拷貝方案僅適用于OpenGL GPU后端。目前,僅有 vaapi,nvdec 和 cuda 方案適用于Vulkan。
如果搭配使用了 --vo=gpu,vaapi 模式還需要 Mesa 11圖形庫(kù),并且大概率僅適用于Intel和AMD的GPU,還需要opengl EGL后端。
nvdec 和 nvdec-copy 是最新模式,并且是在Nvidia的GPU上進(jìn)行硬件解碼的推薦方案。
注:皮衣刀客通過其精湛的刀法會(huì)閹割部分中、低端N卡的視頻編解碼核心,因此可能會(huì)不支持 nvdec 系列的硬解模式。
cuda 和 cuda-copy 是Nvidia GPU硬件解碼較為老舊的實(shí)現(xiàn),使用的是Nvidia的比特流解析器而不是FFmpeg的解析器,這可能會(huì)導(dǎo)致功能上的缺陷,比如說HDR內(nèi)容的不正確播放,除非你特別需要Nvidia的隔行掃描算法,否則應(yīng)該始終首選 nvdec/nvdec-copy。要想使用這種隔行掃描必須傳入 vd-lavc-o=deint=[weave|bob|adaptive] 選項(xiàng),傳入 weave(或者不設(shè)置上述選項(xiàng))則不會(huì)嘗試任何隔行掃描操作。
使用硬件解碼會(huì)帶來畫面質(zhì)量的降低?
理論上,硬件解碼不會(huì)降低視頻畫質(zhì)(至少對(duì)于h264和HEVC編解碼器來說是這樣的),不過由于視頻輸出API的限制,同樣也有實(shí)際硬件解碼器當(dāng)中的bug,種種因素可能會(huì)造成一些損失,甚至是明顯的錯(cuò)誤結(jié)果。
在某些模式下,RGB轉(zhuǎn)換是強(qiáng)制的,意味著RGB轉(zhuǎn)換是由硬件解碼API執(zhí)行的,而不是 --vo=gpu 所使用的著色器。這意味著部分色彩空間可能無法正常顯示,并且部分濾鏡(例如去色帶(debanding))可能無法以理想的方式被應(yīng)用,這通常也會(huì)強(qiáng)制使用低質(zhì)量的色度縮放器,在其他情況下,硬件解碼還可以減少被解碼圖像的位深,可能會(huì)導(dǎo)致 10-bit 色深文件的色帶或精度丟失。
vdpau 始終會(huì)在硬件上進(jìn)行RGB轉(zhuǎn)換,不能正確支持像 BT.2020 這樣較新的色彩空間。不過,vdpau 不支持 10-bit 色深或 HDR 編碼,因此這些限制不太可能有關(guān)聯(lián)。
vaapi 和 d3d11va 是安全的,開啟隔行掃描(或者僅啟用各自的后處理濾鏡)至少可能會(huì)通過將輸出轉(zhuǎn)為8位色深的格式來降低色彩質(zhì)量。
dxva2是不安全的,始終使用 BT.601 用于強(qiáng)制RGB轉(zhuǎn)換,但實(shí)際行為取決于GPU驅(qū)動(dòng)程序,某些驅(qū)動(dòng)程序會(huì)將其轉(zhuǎn)換為有限范圍的RGB,從而會(huì)表現(xiàn)為褪色,除了特定的驅(qū)動(dòng)程序行為以外,全局系統(tǒng)設(shè)置也可能會(huì)對(duì)此產(chǎn)生影響,即使是用完全普通的視頻源也可能給出錯(cuò)誤的結(jié)果。
rpi 始終使用硬件層面的渲染器,即使是搭配了 --vo=gpu 配置項(xiàng)。
cuda 通常應(yīng)該是安全的,但取決于文件/數(shù)據(jù)流混合的方式,有報(bào)告稱它會(huì)破壞時(shí)間戳導(dǎo)致故障或畫面閃爍。由于未知原因,它有時(shí)也會(huì)導(dǎo)致大量畫面被丟棄,建議謹(jǐn)慎采用并始終應(yīng)該首選 nvdec
crystalhd 是不安全的,始終會(huì)轉(zhuǎn)為 4:2:2 YUV 顏色編碼,在此過程中可能會(huì)有損耗,取決于轉(zhuǎn)換期間色度二次采樣(Chroma Subsampling)的完成方式。出于某種原因還會(huì)丟棄每幀的左上角像素。
其他所有方案,特別是回拷(copy-back)辦法(像 dxva2-copy 之類)應(yīng)該是安全的,雖然依舊會(huì)導(dǎo)致隨機(jī)的解碼問題,但最起碼不會(huì)影響圖像的顏色。
特殊的是,auto-copy 雖然僅會(huì)選擇所謂的“安全”模式(盡管可能會(huì)比其他方法要慢些),但仍然無法保證所選用的硬件解碼器實(shí)際上可以正常工作。
總之除非是剛需,否則強(qiáng)烈建議避免使用硬件解碼,也就是說如果你的CPU不足以解碼一些成問題的文件。如果你遇到任何奇怪的解碼問題,比如畫面幀故障或者變色,并且你開啟了 --hwdec 選項(xiàng),那么你首先應(yīng)該嘗試著禁用它。
注:硬解這東西仁者見仁智者見智,如果是CPU性能捉襟見肘的機(jī)子又恰好有個(gè)支持視頻編解碼的核顯或者獨(dú)顯,能用上的就盡量用上,提升能效比。
--gpu-hwdec-interop=<auto|all|no|name>
該選項(xiàng)用于對(duì)硬件解碼器交互操作進(jìn)行故障排除,由于是一個(gè)調(diào)試選項(xiàng),其語義可能隨時(shí)會(huì)變化。
這對(duì)于GPU和libmpv視頻輸出選擇要使用硬件解碼器的交互操作上下文會(huì)很有用,實(shí)際上,它還可以用來阻止某些后端的加載。
如果設(shè)為 auto(默認(rèn)),行為將取決于視頻輸出:對(duì)于GPU來說,什么也不會(huì)做,并且按需加載交互操作的上下文(當(dāng)解碼器檢測(cè)到有 --hwdec 選項(xiàng)支持時(shí));對(duì)于沒有按需加載的libmpv,這等同于 all 參數(shù)。
參數(shù)為空字符串等同于 auto 參數(shù)。
如果設(shè)為 all,會(huì)嘗試在GL上下文創(chuàng)建期間加載全部的交互操作上下文。
除此之外,可以設(shè)置特定的(視頻輸出)后端,并且可以借助 help 命令查詢它們的列表(僅在mpv CLI 模式下)
運(yùn)行期間對(duì)此所做的更改會(huì)被忽略(每當(dāng)創(chuàng)建渲染器時(shí)都會(huì)使用當(dāng)前選項(xiàng)值)
--opengl-hwdec-interop 以及 --hwdec-preload 等舊的別名則不再與此選項(xiàng)有關(guān),但會(huì)在某些情況下部分兼容。
--hwdec-extra-frames=<N>
硬件解碼應(yīng)該預(yù)分配的GPU幀數(shù)(默認(rèn):見 --list-options 的輸出內(nèi)容),如果該數(shù)值過低,畫面幀有可能會(huì)在解碼過程中分配失敗,并且可能會(huì)丟失或損壞視頻幀;設(shè)置得過高只會(huì)浪費(fèi)GPU顯存且毫無優(yōu)勢(shì)可言。
該值僅適用于需要預(yù)分配圖形表面的硬件解碼API(已知的例子包括 d3d11va? 和 vaapi),對(duì)于其他API,畫面幀在需要時(shí)被分配。具體細(xì)節(jié)取決于 libavcodec 庫(kù)當(dāng)中硬件解碼器的實(shí)現(xiàn)。
所需的表面數(shù)量取決于動(dòng)態(tài)運(yùn)行時(shí)的狀況,默認(rèn)是一個(gè)被認(rèn)為可以滿足大多數(shù)用途的固定值,但在某些情況下可能還不夠。
--hwdec-image-format=<name>
設(shè)置由 --hwdec 選項(xiàng)設(shè)定的硬件解碼所使用的內(nèi)部像素格式(默認(rèn):no),特殊值 no 表示選擇一種特定實(shí)現(xiàn)的標(biāo)準(zhǔn)格式。大多數(shù)解碼器的實(shí)現(xiàn)僅支持一種格式,并且如果是不支持的格式,則無法初始化。
部分實(shí)現(xiàn)可能支持多種格式,特別是已知?videotoolbox 屬性需要 uyvy422 格式
才能在某些較老的硬件上獲得不錯(cuò)的性能。d3d11va 始終可以使用? yuv420p 這種無優(yōu)勢(shì)可言的不透明格式。
--cuda-decode-device=<auto|0..>
當(dāng)使用帶有OpenGL GPU后端的 cuda 或者 nvdec,以及所有使用了 cuda-copy 或者 nvdec-copy 硬件解碼器的場(chǎng)景時(shí),選擇用于解碼的GPU設(shè)備。
對(duì)OpenGL GPU后端來說,默認(rèn)用于解碼的設(shè)備是被用來提供GPU輸出的那個(gè)(并且在絕大多數(shù)情景下,只會(huì)有一個(gè)GPU存在)
對(duì)于 copy 模式的硬件解碼器,默認(rèn)設(shè)備是由CUDA庫(kù)枚舉出來的首個(gè)設(shè)備,無論如何都是如此。
對(duì)于Vulkan GPU后端,解碼始終會(huì)在顯示設(shè)備中進(jìn)行,并且該選項(xiàng)不會(huì)對(duì)此起作用。
--vaapi-device=<device file>
選擇DRM設(shè)備用于 vaapi-copy,該參數(shù)應(yīng)該是一個(gè)DRM設(shè)備文件的路徑(默認(rèn):/dev/dri/renderD128)
注:Direct Rendering Manager(DRM)是linux內(nèi)核子系統(tǒng),負(fù)責(zé)與顯卡交互。 DRM提供一組API,用戶空間程序可以使用該API將命令和數(shù)據(jù)發(fā)送到GPU并執(zhí)行諸如配置顯示器的模式設(shè)置之類的操作。
--panscan=<0.0-1.0>
開啟裁剪(Pan&Scan)功能(例如裁剪16:9視頻的邊緣畫面以適應(yīng)4:3的顯示,且不帶黑邊填充)數(shù)值范圍控制著圖像的裁剪數(shù)量,可能不適用于所有的視頻輸出驅(qū)動(dòng)。
如果使用了 --video-unscaled 選項(xiàng)則該選項(xiàng)不會(huì)起作用。
--video-aspect-override=<ratio|no>
覆蓋視頻的橫縱比,以防止正在播放的文件中的橫縱比信息錯(cuò)誤或丟失。
以下的這些值具有特定的含義:
0:禁用橫縱比處理,假設(shè)視頻具有矩形像素。
no:作用和 0 一樣
-1:使用視頻流或容器中的比例(默認(rèn))
但要注意的是這些特定值的處理方式以后可能會(huì)改動(dòng)。
--video-aspect-method=<bitstream|container>
設(shè)置默認(rèn)的視頻橫縱比測(cè)定方法(如果橫縱比未被用戶使用 --video-aspect-override 或者其他選項(xiàng)覆蓋的話)
container:嚴(yán)格首選容器中的橫縱比,很明顯是VLC的默認(rèn)行為,至少在 Matroska 格式容器中是這樣,注意如果容器未設(shè)置橫縱比,則該行為與 bitstream 一致。
bitstream:嚴(yán)格首選比特流中的橫縱比,除非未設(shè)置比特流橫縱比,很明顯是XBMC/kodi的默認(rèn)行為,至少在 Matroska 格式容器中是這樣。
目前對(duì)mpv來說默認(rèn)是 container
通常你不應(yīng)該設(shè)置該選項(xiàng),如果你在mpv播放過程中遇到橫縱比出錯(cuò)的視頻,但在其他播放器中似乎又沒問題,那么可以嘗試不同的選擇。
--video-unscaled=<no|yes|downscale-big>
禁用視頻縮放,如果窗口比視頻(橫縱比)來的要大,(多余的部分)用黑邊填上,否則視頻會(huì)被裁剪,除非選項(xiàng)被設(shè)為 downscale-big,在這種情況下視頻會(huì)適應(yīng)窗口大小,但視頻仍然可以受到其他 --video-... 選項(xiàng)的影響,該選項(xiàng)會(huì)禁用 --panscan 選項(xiàng)的效果。
需要注意的是縮放算法可能依舊會(huì)被使用,即使視頻不允許被縮放。舉個(gè)例子,這可以影響到色度轉(zhuǎn)換(Chroma Conversion),如果視頻源使用非方形像素(例如超寬屏DVD)那么視頻照樣會(huì)在一個(gè)維度上進(jìn)行縮放。
如果使用了 --no-keepaspect 選項(xiàng)則該選項(xiàng)會(huì)被禁用。
注:當(dāng)遇到屏幕窗口大小與畫面橫縱比不匹配的情況,為了最大程度地顯示調(diào)整后的畫面,需要用到縮放算法來處理原畫。要么選擇 Pan&Scan 模式,顯示的時(shí)候把多余的畫面部分裁剪丟棄掉;要么選擇 Letterbox 模式,顯示的時(shí)候空缺的部分用黑色邊框填充;要么采用自適應(yīng),可以是填充、拉伸、平鋪等等之類的處理辦法,各有各的取舍和優(yōu)缺點(diǎn),沒有誰最好誰最壞的說法。
--video-pan-x=<value>, --video-pan-y=<value>
通過給定地 X 或 Y 方位值移動(dòng)顯示視頻的矩形區(qū)域(之外部分裁剪掉),單位是縮放視頻大小的小數(shù)部分(得是完整大小,即使是因?yàn)?panscan 或其他選項(xiàng)導(dǎo)致看不到的視頻的其他部分,也算在內(nèi))
例如。一個(gè)帶 --video-pan-x=-0.1 參數(shù)的,且在 1680x1050 分辨率的屏幕上顯示 1280x720 視頻全屏畫面,將會(huì)移動(dòng)視頻畫面中的168個(gè)像素到屏幕左邊(讓原畫中(最左邊)的128個(gè)像素不可見?原文可能寫錯(cuò)了)
如果使用了 --no-keepaspect 選項(xiàng)則該選項(xiàng)被禁用。
--video-rotate=<0-359|no>
按度數(shù)順時(shí)針旋轉(zhuǎn)視頻畫面,如果參數(shù)給定為 no,則無論如何都不會(huì)旋轉(zhuǎn)視頻畫面,即使文件中包含旋轉(zhuǎn)的元數(shù)據(jù)(旋轉(zhuǎn)數(shù)值被添加到表示旋轉(zhuǎn)的元數(shù)據(jù)中,意味著參數(shù)值設(shè)為 0 照樣會(huì)參考旋轉(zhuǎn)元數(shù)據(jù)來旋轉(zhuǎn)視頻畫面)
當(dāng)不帶 copy-back 地使用硬件解碼,只有以90°為步長(zhǎng)的數(shù)值才會(huì)運(yùn)作(例如 0,90,180,270),不過軟解和那些帶有把視頻回拷至系統(tǒng)內(nèi)存功能的硬解方案支持0~359之間的所有數(shù)值。
--video-zoom=<value>
通過給定的數(shù)值調(diào)節(jié)視頻顯示縮放比例因子,最終參數(shù)由log2公式計(jì)算給出,--video-zoom=0 表示不縮放,--video-zoom=1 表示2倍大小,--video-zoom=-2 表示1/4倍大小,依此類推。
如果使用了 --no-keepaspect 選項(xiàng)則該選項(xiàng)被禁用。
注:就是 log2(x) = value,求出 x 的數(shù)值就是參數(shù)值。比方說例子中的 value = 0,就是求 log2(params) = 0,很顯然 param = 1,縮放之后的畫面和原畫是 1:1 的關(guān)系,所以不縮放,依此類推。
--video-scale-x=<value>, --video-scale-y=<value>
將視頻顯示大小與給定的數(shù)值相乘(默認(rèn):1.0),如果使用了非默認(rèn)值,這將會(huì)導(dǎo)致和窗口大小不一致,因此視頻畫面要被裁剪,或者要么補(bǔ)上黑邊。
該數(shù)值會(huì)乘上從 --video-zoom 選項(xiàng)推導(dǎo)得到的數(shù)值以及普通視頻畫面的橫縱比,如果使用了 --no-keepaspect 選項(xiàng)則該選項(xiàng)被禁用。
--video-align-x=<-1-1>, --video-align-y=<-1-1>
在黑框邊界內(nèi)移動(dòng)視頻畫面矩形區(qū)域,如果視頻畫面與屏幕的橫縱比不一致,通常會(huì)將視頻畫面添加、填充到屏幕上。
--video-align-y=-1 會(huì)將視頻畫面移動(dòng)到屏幕頂部(只留黑框邊界在底部),數(shù)值 0 使畫面居中(默認(rèn)),以及數(shù)值 1 會(huì)將視頻畫面放到屏幕底部。
如果畫面與屏幕的橫縱比能夠完美匹配,那么無需操作這些選項(xiàng)。
如果使用了 --no-keepaspect 選項(xiàng)則該選項(xiàng)被禁用。
--video-margin-ratio-left=<val>, --video-margin-ratio-right=<val>,
--video-margin-ratio-top=<val>, --video-margin-ratio-bottom=<val>
在各個(gè)邊界上設(shè)置額外的視頻畫面邊距(默認(rèn):0),各項(xiàng)數(shù)值都是相對(duì)于窗口大小的比例,使用 0.0~1.0 范圍的數(shù)值。比如說,在一個(gè)大小為1000像素的窗口上設(shè)置了 --video-margin-ratio-right=0.2 的選項(xiàng),那么將會(huì)在窗口右側(cè)添加一個(gè)200像素大小的邊界。
視頻畫面會(huì)被這些邊距所“盒化”(像是放在一個(gè)黑盒子當(dāng)中一樣),而窗口大小不會(huì)改變,尤其是不會(huì)擴(kuò)大窗口大小,并且邊距默認(rèn)將會(huì)造成視頻畫面縮放,將來會(huì)不會(huì)做出調(diào)整這個(gè)說不定。
邊距會(huì)在視頻旋轉(zhuǎn)90°之后應(yīng)用,但至少會(huì)在其他任何視頻轉(zhuǎn)換之前應(yīng)用。
如果使用了 --no-keepaspect 選項(xiàng)則該選項(xiàng)被禁用。
字幕依然可以使用邊距,具體取決于 --sub-use-margins 以及類似的選項(xiàng)。
這些選項(xiàng)使為了OSC創(chuàng)建的,一些奇奇怪怪的設(shè)定,例如將邊距值設(shè)為比例(而不是像素值)等,也都是為了OSC。這些選項(xiàng)可以被使用更加普遍和有用的選項(xiàng)所替代,這些選項(xiàng)的行為也可以被改動(dòng)以更好地滿足OSC的需要。
--correct-pts, --no-correct-pts
--no-correct-pts 選項(xiàng)把mpv切換到使用固定幀率值、視頻時(shí)序確定的模式上來(無論是使用 --fps 選項(xiàng),或是使用文件信息),有時(shí),時(shí)間戳極度破損的文件在這種模式下可以很好地播放。需要注意視頻濾鏡、字幕渲染、跳轉(zhuǎn)(包括 hr-seeks 和回退),以及音頻同步在該模式下都可能會(huì)被完全打斷。
--fps=<float>
覆蓋視頻幀率,如果原數(shù)值出錯(cuò)或丟失時(shí)會(huì)很有用。
注意:
僅在 --no-correct-pts 模式下生效。
--deinterlace=<yes|no>
啟用或禁用逐行掃描(默認(rèn):no)(寫了那么多的補(bǔ)充說明,真的不得不吐槽一下,原文當(dāng)中這句話是在說開啟或關(guān)閉 interlace 隔行掃描功能,到了下面又改口說是 deinterlace 逐行掃描,以至于前后矛盾。直接說“啟用或禁用逐行掃描”和選項(xiàng)名稱含義保持一致有什么問題嗎?如果硬說沒問題,作為說明手冊(cè)表意方面能別繞彎子嘛?),隔行掃描地視頻在畫面快速移動(dòng)(變化)時(shí)會(huì)顯示較為丑陋的梳狀假影,啟用該功能通常會(huì)插入 yadif 視頻濾鏡以便逐行掃描,或者是讓視頻輸出用上逐行掃描,如果支持的話。
該行為同 deinterlace 輸入屬性基本相同(通常是被映射到 d 按鍵上)
請(qǐng)留意這會(huì)和手動(dòng)插入的逐行掃描濾鏡產(chǎn)生沖突,除非你能小心翼翼地處理好(從 mpv 0.27.0 版本起,即使是使用硬件去逐行掃描地濾鏡也會(huì)產(chǎn)生沖突。同樣是從該版本開始,--deinterlace=auto 選項(xiàng)被移除了,這曾經(jīng)是意味著使用了可能會(huì)插入視頻濾鏡的隔行掃描選項(xiàng)。)
需要注意的是如果視頻本身實(shí)際上不是逐行掃描的話,會(huì)讓視頻畫面看上去更加糟糕。
--frames=<number>
僅播放/轉(zhuǎn)換前<number>幀的視頻幀,隨后退出。
--frames=0 會(huì)加載文件,但是會(huì)在初始化播放之前立即退出(對(duì)于只想確定某些文件屬性的腳本可能會(huì)很有用)
對(duì)于純音頻播放,任何大于 0 的值將在初始化之后立即退出,同視頻一樣工作方式。
--video-output-levels=<outputlevels>
表示使用了從 YUV 到 RGB 轉(zhuǎn)換的 RGB 色階(Color Levels),通常,輸出設(shè)備,例如PC顯示器會(huì)使用全色階(Full Range Color Levels)。然而,一些電視以及視頻監(jiān)控器需要工作室級(jí)別的 RGB 色階,向需要工作室級(jí)別的輸入設(shè)備提供全色階輸出會(huì)導(dǎo)致黑白畫面擠壓,而深灰黑色和暗白色則相反。
不是所有的視頻輸出都支持該選項(xiàng),一部分會(huì)靜默忽視它。
可用的色彩范圍有:
auto:自動(dòng)選擇(等同于全部范圍)(默認(rèn))
limited:有限范圍(各組件在 16~235 范圍內(nèi)),工作室級(jí)別
full:全部范圍(各組件在 0~255 范圍內(nèi)),PC級(jí)別
注意
如果可以的話,建議使用你自己的圖形設(shè)備的色彩范圍選項(xiàng)。
--hwdec-codecs=<codec1,codec2,...|all>
僅允許使用給定列別中的編解碼器來進(jìn)行硬件解碼,特殊值 all 始終會(huì)允許所有的編解碼器。
你可以用 mpv --vd=help 命令來獲取允許的編解碼器列表,需要去掉前綴,比方說,使用 h264 而不是 lavc:h264
默認(rèn)情況下,該項(xiàng)被設(shè)為 h264,vc1,hevc,vp8,vp9,AV1,請(qǐng)注意,類似 h264_vdpau 這樣特殊的硬件加速硬件加速編解碼器不再與之(h264列表選項(xiàng))相關(guān)聯(lián),實(shí)際上已經(jīng)參照這種形式從 Libav 中刪除了。
這通常只在出了問題的GPU中被需要,其中編解碼器會(huì)被報(bào)告為受支持的,但解碼導(dǎo)致的問題會(huì)多于解決這些問題的問題。
示例:
mpv --hwdec=vdpau --vo=vdpau --hwdec-codecs=h264,mpeg2video
僅啟用針對(duì) h264 和 mpeg2? 的 vdpau 硬件解碼。
--vd-lavc-check-hw-profile=<yes|no>
檢查硬件解碼器的配置文件(默認(rèn):yes),如果設(shè)為 no,則會(huì)無條件地選擇硬件解碼器最高級(jí)別的配置文件,且被用于強(qiáng)制解碼,即使視頻的配置文件級(jí)別要比前者來得高些,最有可能的結(jié)果是解碼被中斷,但如果檢測(cè)到的或報(bào)告的配置文件存在這樣那樣的問題,也有可能會(huì)有幫助。
--vd-lavc-software-fallback=<yes|no|N>
如果硬件加速解碼器失敗則回退到軟件解碼(默認(rèn):3),如果該參數(shù)是一個(gè)數(shù)字N,那么在連續(xù)N幀解碼失敗后將觸發(fā)回退,數(shù)字 1 等同于 yes。
將該數(shù)值設(shè)成較大的數(shù)字可能會(huì)中斷播放并開始回退:如果發(fā)生了回退的情況,將跳過文件的一部分,大概是會(huì)跳過無法被解碼的數(shù)據(jù)包數(shù)量,低于未指定計(jì)數(shù)的值不會(huì)出現(xiàn)該問題,因?yàn)閙pv會(huì)把數(shù)據(jù)包保留下來。
--vd-lavc-dr=<yes|no>
啟用直接渲染(默認(rèn):yes),如果該項(xiàng)被設(shè)為 yes,那么視頻將會(huì)被直接解碼到GPU的視頻內(nèi)存中去(或者是暫存緩沖區(qū)),該功能可以加快視頻的載入速度,并且可能會(huì)對(duì)大分辨率的視頻或速度慢的硬件有所幫助。僅在具有以下的視頻輸出中工作:
gpu:至少需要 OpenGL 4.4 或 Vulkan(尤其是,該選項(xiàng)無法同 opengl-cb 選項(xiàng)一塊工作,但是對(duì)libmpv渲染API具有可選的支持)
使用寫入圖像數(shù)據(jù)的任何類型的視頻濾鏡,將會(huì)以靜默的方式禁用DR碼路徑。
--vd-lavc-bitexact
僅在所有解碼階段中使用位精確算法(用在編解碼器的測(cè)試上)
--vd-lavc-fast (僅限?MPEG-2,MPEG-4 以及 H.264)
啟用不符合格式規(guī)范并且可能會(huì)導(dǎo)致問題的優(yōu)化,例如更為簡(jiǎn)單的反量化、運(yùn)動(dòng)補(bǔ)償;假定使用默認(rèn)量化矩陣、YUV 4:2:0 并跳過若干檢查以檢查受損的比特流。
--vd-lavc-o=<key>=<value>[,<key>=<value>[,...]]
將 AVOption 傳遞給 libavcodec 解碼器,AVOption 的完整列表可以在 FFmpeg 手冊(cè)中找到。
部分曾經(jīng)是直接選項(xiàng)可以使用之中機(jī)制進(jìn)行設(shè)置,例如 bug,gray,idct,ec,vismv,skip_top(又寫作 st),skip_bottom(又寫作 sb),debug
--vd-lavc-show-all=<yes|no>
顯示即使是已破損和損壞的視頻幀(默認(rèn):no),如果該項(xiàng)被設(shè)為 no,libavcodec 將不會(huì)輸出在解碼初始關(guān)鍵幀之前解碼好的幀,也不會(huì)輸出被識(shí)別為已損壞的幀。
--vd-lavc-skiploopfilter=<skipvalue> (僅限 H.264)
在H.264解碼期間跳過循環(huán)濾波(AKA去除塊效應(yīng))。由于經(jīng)過濾波處理后的幀應(yīng)該用作解碼關(guān)鍵幀的參考,這比那些不對(duì)例如MPEG-2之類的視頻進(jìn)行去塊處理,在畫質(zhì)上的效果還要差。但至少對(duì)于高碼率高清電視(HDTV)而言,這在幾乎沒有肉眼可見的畫質(zhì)損失下提供了非常可觀的加速效果。
<skipvalue>可以是下列中的其中一個(gè):
none:從不跳過。
default:跳過無用的處理階段(例如AVI中大小為0的數(shù)據(jù)包)
nonref:跳過未被引用的幀(即未被用于解碼其他的視頻幀期)
bidir:跳過B-幀。
nonkey:跳過除關(guān)鍵幀以外的所有幀。
all:跳過所有幀
--vd-lavc-skipidct=<skipvalue> (僅限 MPEG-1/2)
跳過IDCT階段,這在幾乎所有情況下都會(huì)極大程度地降低畫質(zhì)(有關(guān)可用的 skipvalue 請(qǐng)參見 skiploopfilter)
--vd-lavc-skipframe=<skipvalue>
完全跳過幀解碼,雖然會(huì)有較大的提速,但運(yùn)動(dòng)畫面會(huì)變得生硬并且有時(shí)還會(huì)有假影(有關(guān)可用的 skipvalue 請(qǐng)參見 skiploopfilter)
--vd-lavc-framedrop=<skipvalue>
搭配使用 --framedrop 選項(xiàng)來設(shè)置丟幀模式(有關(guān)可用的 skipvalue 請(qǐng)參見 skiploopfilter)
--vd-lavc-threads=<N>
指定用來解碼的線程數(shù),實(shí)際是否支持線程取決于所用的編解碼器(默認(rèn):0),0 表示自動(dòng)檢測(cè)并使用計(jì)算機(jī)上的內(nèi)核數(shù),最大為16,但你仍可以手動(dòng)設(shè)置16個(gè)以上的線程數(shù)。
--vd-lavc-assume-old-x264=<yes|no>
假設(shè)編碼視頻用的是老舊且有缺陷的x264版本(默認(rèn):no),通常,這是由 libavcodec 自動(dòng)檢測(cè)的,但如果比特流中不包含x264版本信息(或是因?yàn)槟撤N情況跳過了它),并且該比特流實(shí)際上是通過舊版本(150 或者更早的版本)的x264進(jìn)行編碼,而且如果使用了4:4:4色度,則? libavcodec 將默認(rèn)顯示已損壞的視頻,該選項(xiàng)將 libavcodec x264_build 選項(xiàng)設(shè)為150,這就意味著如果流中不包含版本信息,或者根本不是由x264編碼的,則假定它是由舊版本編碼。如果你希望已損壞的文件也能夠正常工作,那么啟用該選項(xiàng)會(huì)安全很多,但從理論上來講,這可能會(huì)在那些不是由x264編碼或者是由較新x264版本且不包含版本信息的流上造成中斷。
--swapchain-depth=<N>
最多允許N個(gè) in-flight 幀,實(shí)際上是控制幀延遲。增加交換鏈深度可以改善流水線并放置錯(cuò)過畫面同步,但會(huì)增加可見的延遲,該選項(xiàng)僅規(guī)定了上限,實(shí)現(xiàn)了可使用比內(nèi)部請(qǐng)求更低的延遲。設(shè)置為 1 表示視頻輸出將會(huì)等待至每一幀都變得可見,隨后再開始渲染下一幀(默認(rèn):3)

參考資料:
https://mpv.io/manual(MPV Player Reference)
https://mpv.io(mpv項(xiàng)目官網(wǎng))
