使用you-get和yt-dlp開源組件下載及播放視頻

最近在嘗試使用mpv播放器,來實現(xiàn)視頻播放和作筆記的閉環(huán),梳理了相關(guān)的一些內(nèi)容,便有此文,方便大家參考。本文推薦大家使用開源的播放器MPV,并提供了幾個筆者默認(rèn)集成的配置。當(dāng)然大家也可以下載mpv對應(yīng)的前端界面進行使用,具體可參考鏈接:Applications using mpv · mpv-player/mpv Wiki (github.com) ,這里不再贅述。

mpv.io | Installationmpv.io/installation/

一、國外的youtube-dl / yt-dlp方案:

1.使用mpv內(nèi)置的youtube-dl播放在線視頻方案:mpv 默認(rèn)集成了youtube-dl的在線視頻解析方案,用法如下:

mpv --referrer="https://www.bilibili.com" --start=13 https://www.bilibili.com/video/BV1PV4y177LE

鑒于youtube-dl訪問不穩(wěn)定,被絞殺后不再怎么更新,其繼承者youtube-dlc 對國內(nèi)的視頻網(wǎng)站解析也不太及時,這里就不推薦使用youtube-dl,youtube-dlc這兩款之前流行的視頻解析引擎了,推薦大家使用you-get來替換。

2.youtube-dl的繼承者yt-dlp的使用,先要安裝yt-dlp? https://github.com/yt-dlp/yt-dlp/releases ,詳細(xì)可參考:

Mintimate:yt-dlp:輕松下載各平臺視頻,緩存視頻又一途徑19 贊同 · 4 評論文章

視頻下載利器(二):yt-dlp,輕松下載各平臺視頻,緩存視頻又一途徑 - 雨月空間站

可以按官網(wǎng)文檔快速安裝或者參考以上鏈接了解更詳細(xì)用法,然后配置 mpv.conf 文件,文件末尾加上如下幾行:

script-opts=ytdl_hook-ytdl_path=/usr/local/bin/yt-dlp

script-opts-append=ytdl_hook-ytdl_path=/usr/local/bin/yt-dlp

這樣我們再次使用如下的寫法時,它便會把默認(rèn)的youtube-dl的自帶視頻解析引擎替換為yt-dlp。如下圖所示:

mpv --referrer="https://www.bilibili.com" -v --no-resume-playback --start=13 https://www.bilibili.com/video/BV1PV4y177LE

二、國內(nèi)的開源 you-get 替換方案:

鑒于youtube-dl/youtube-dlc/yt-dlp對國內(nèi)視頻網(wǎng)站的支持和更新力度,推薦大家使用you-get方案。操作如下:

安裝you-get軟件:soimort/you-get: Dumb downloader that scrapes the web (github.com) , 或參考如下鏈接:

You-get在Windows系統(tǒng)下的安裝+會員視頻下載的cookie配置_cwj1412的博客-CSDN博客blog.csdn.net/cwj1412/article/details/107775004

you-get 庫的使用方法 - 鬼小妞 - 博客園www.cnblogs.com/jiangyuzhen/p/10926919.html

安裝成功后,便可使用you-get來作為視頻解析引擎。由于you-get迭代較快,這樣我們就能夠避免視頻網(wǎng)站更新后,視頻解析引擎沒有及時更新而導(dǎo)致我們不能下載網(wǎng)站視頻的問題了。

you-get -p "mpv --merge-files --start=3" http://www.acfun.cn/v/ac3262317

you-get -p "mpv --referrer='https://www.bilibili.com' --start=13"? https://www.bilibili.com/video/BV1PV4y177LE

you-get -p "mpv --start=23" https://www.iqiyi.com/v_1k5fjgxxu8g.html

you-get -p "mpv --start=33" https://v.qq.com/x/page/y3066lqwy31.html#### 因you-get現(xiàn)有發(fā)布包未合并最新代碼,播放優(yōu)酷的視頻現(xiàn)在會報錯,需我們自己調(diào)整下ccode值為0564you-get -p "mpv --start=43" "https://v.youku.com/v_show/id_XNTkxMDQ2NzUyNA==.html"#報錯:you-get: ccode參數(shù)錯誤you-get -p "mpv --start=43" --cookies=./cookies.sqlite “https://v.youku.com/v_show/id_XNDc1OTk3NzQ2OA==.html”# you-get: Found cna in imported cookies. Use it# 報錯:you-get: ccode參數(shù)錯誤

如上,我們可以實現(xiàn)mpv作為本地播放器來播放A站、B站、愛優(yōu)騰的視頻了,對于優(yōu)酷的視頻播放由于作者發(fā)布的版本沒有合并最新的代碼,我們需要自己稍微調(diào)整后來使用。Update youku.py · soimort/you-get@af3468f (github.com)

對 pip下載的 you-get,我們修改 youku.py源碼 ccode為0564,即可實現(xiàn)用you-get來播放和下載優(yōu)酷的視頻了。如果下載的是作者直接發(fā)布的you-get執(zhí)行程序,則照樣會報如上的ccode參數(shù)錯誤,所以需要編譯以后才能用。

import sysimport you_get

def download(url, path):

? ? #sys.argv = ['you-get', '--format=mp4hd', '-o', path, url]? ? #sys.argv = ['you-get', '-u', url]? ? #sys.argv = ['you-get', '--c=./cookies.sqlite', '-u', url]? ? sys.argv = ['you-get', '-p "mpv" --start=43', url]? ? you_get.main()if __name__ == '__main__':? ? # 視頻網(wǎng)站的地址? ? # url = 'https://v.youku.com/v_show/id_XMjk1OTEyNTE2OA==.html?spm=a2hbt.13141534.1_2.d1_10&f=50671414'? ? # url = 'https://www.iqiyi.com/v_1k5fjgxxu8g.html'? ? url = 'https://v.youku.com/v_show/id_XNTkxMDQ2NzUyNA==.html'? ? # 視頻輸出的位置? ? path = './'? ? download(url, path)

你可以等作者合并代碼并更新you-get或者你自己打包you-get;我的方案是KeyBoard Maestro來調(diào)用上面的Py腳本,并通過設(shè)置的快捷鍵調(diào)用腳本,播放傳入的視頻鏈接,并跳轉(zhuǎn)至視頻對應(yīng)的時間戳。

我的 mpv.conf 文件配置詳情如下,你出可以參考: mpv 詳細(xì)配置文件 - 簡書 (jianshu.com) 來配置更詳細(xì)參數(shù)。

############# 我的配置 mpv.conf ############## 將窗口縮放50% #geometry=50%# 配置截圖相關(guān)參數(shù),參考:https://mpv.io/manual/master/#screenshot# 截圖模板,指定文件名稱,默認(rèn)為(mpv-shot%n)screenshot-template=mpv-shot-%f-%P

screenshot-png-compression=8# 指定保存格式(默認(rèn)為jpg)# screenshot-format=jpg? # 截圖保存目錄(默認(rèn)在腳本運行目錄)screenshot-directory=~/mpv-www-gen# script-opts-append=ytdl_hook-ytdl_path=/usr/local/bin/yt-dlpscript-opts=ytdl_hook-ytdl_path=/usr/local/bin/yt-dlp

script-opts-append=ytdl_hook-ytdl_path=/usr/local/bin/yt-dlp############# 2022-10-20 添加以下配置 #############no-border? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # no window title barmsg-module? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # prepend module name to log messagesmsg-color? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # color log messages on terminalterm-osd-bar? ? ? ? ? ? ? ? ? ? ? ? ? ? # display a progress bar on the terminal#use-filedir-conf? ? ? ? ? ? ? ? ? ? ? ? # look for additional config files in the directory of the opened filepause? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # no autoplaykeep-open? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # keep the player open when a file's end is reached#autofit-larger=100%x95%? ? ? ? ? ? ? ? # resize window in case it's larger than W%xH% of the screen#cursor-autohide-fs-only? ? ? ? ? ? ? ? # don't autohide the cursor in window mode, only fullscreen#input-media-keys=no? ? ? ? ? ? ? ? ? ? # enable/disable OSX media keyscursor-autohide=1000? ? ? ? ? ? ? ? ? ? # autohide the curser after 1sprefetch-playlist=yes

force-seekable=yes#解碼/渲染設(shè)置vo=gpuhwdec=auto

gpu-api=auto#使用硬解的格式hwdec-codecs=all#gpu-api=d3d11時(win默認(rèn)api)多GPU平臺指定使用的GPU,GPU名稱參考設(shè)備管理器。此選項根據(jù)首字符串識別,如果不是同一家的GPU則無需輸入完整名稱。若使用Vulkan則為vulkan-device=#d3d11-adapter=AMD#d3d11-adapter=Intel#d3d11-adapter=NVIDIA#d3d11va零拷貝模式,可降低gpu 3D engine占用#d3d11va-zero-copy=yes#緩存設(shè)置#開啟緩存#cache=yes#最大向后緩存大小(KiB或MiB)#demuxer-max-bytes=128MiB#用內(nèi)存而不是磁盤緩存#cache-on-disk=no#緩存時間#cache-secs=8#退出時記住播放狀態(tài)(包括是否暫停、音量、播放速度、位置等)save-position-on-quit#播放狀態(tài)保存位置#watch-later-directory=D:\Cache\watch_later#不記錄是否暫停(除了pause同理可寫fullscreen,mute,speed,ontop等參數(shù))watch-later-options-remove=pause#窗口/OSD/OSC設(shè)置#貼邊吸附(限win)snap-window=yes#無邊框#no-border#全屏#fullscreen#暫停<yes/no>,啟動(恢復(fù)播放)時 暫停/不暫停pause=no#運行MPV自動窗口最大化(無邊框界面時的最大化類似“無邊窗口模式”而非“全屏”)#window-maximized=yes#關(guān)閉簡易控制面板On Screen Controller(osc)#no-osc#關(guān)閉屏上信息條顯示#no-osd-bar#osd-bar寬度[1,100],屏幕寬度的百分比osd-bar-w=100#osd-bar高度[0.1,50]屏幕高度的百分比osd-bar-h=2#位置[-1,1]x為左到右,y為上到下osd-bar-align-y=1#OSD顏色,RGB16進制表示osd-color="#98FB98"#OSD信息位置、字體大小(x橫向左中右left/center/right,y縱向上中下top/center/buttom)osd-align-x=left

osd-align-y=top

osd-font-size=28#設(shè)置OSD文本信息的持續(xù)時間(毫秒)(默認(rèn)值:1000, 范圍為 0-3600000)#osd-duration=3600000#要永久顯示可以設(shè)置osd-level=2osd-level=2#osd-align-x=center#osd-align-y=center#osd-status-msg='${time-pos} / ${duration}${?percent-pos: (${percent-pos}%)}${?frame-drop-count:${!frame-drop-count==0: Dropped: ${frame-drop-count}}}\n${?chapter:Chapter: ${chapter}}'#OSD隨窗口大小縮放(yes/no)osd-scale-by-window=yes#將窗口縮放窗口模式下至大、至小占屏幕的百分比autofit-larger=90%x90%

autofit-smaller=30%x30%#設(shè)置默認(rèn)打開的窗口大小為1280x720geometry=2560x1440#geometry=3640x2160#視頻/音頻/字幕/截圖設(shè)置#讀取杜比視界元數(shù)據(jù)(需要將vo=gpu改為實驗性的vo=gpu-next)#vf=format:dolbyvision=yes#色彩管理#icc-profile-auto=yes#視頻同步#video-sync=display-resample#interpolation=yes#變速播放時的音調(diào)修正audio-pitch-correction=yes#加載視頻文件的外部字幕文件方式。(fuzzy 加載含有視頻文件名的全部字幕文件)sub-auto=fuzzy#加載含有視頻文件名的音頻文件#audio-file-auto=fuzzy#字體大小,默認(rèn)55,此值是以高度為720的屏幕為比例,更大或更小的屏幕會縮放sub-font-size=55#強制外掛ass字幕可使用黑邊sub-ass-force-margins=yes#指定優(yōu)先使用音軌(DVD使用ISO 639-1兩位語言代碼,MKV、MPEG-TS使用ISO 639-2 三位語言代碼)alang=zh,chi#指定優(yōu)先使用字幕軌(DVD使用ISO 639-1兩位語言代碼,MKV、MPEG-TS使用ISO 639-2 三位語言代碼)slang=zh,chi#列表播放循環(huán)方式,循環(huán)寫inf否則寫no#loop-playlist=inf#文件循環(huán)方式#loop=inf#啟動默認(rèn)音量volume=100? # default volume, 100 = unchanged#程序最大音量[100,1000]volume-max=300? # maximum volume in %, everything above 100 results in amplificationaudio-file-auto=fuzzy? ? ? ? ? ? ? ? ? # external audio doesn't has to match the file name exactly to autoloadaudio-pitch-correction=yes? ? ? ? ? ? ? # automatically insert scaletempo when playing with higher speed? ? ? ? ? ? ? ? ? #截屏文件格式(可選:png、ppm、pgm、pgmyuv、tga、jpg、jpeg)screenshot-format=jpg#截屏文件保存路徑#screenshot-directory=D:\image#禁用默認(rèn)快捷鍵方案#no-input-default-bindings#################################### Protocol Specific Configuration ##################################### [protocol.https]# cache=yes# user-agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:57.0) Gecko/20100101 Firefox/58.0'# [protocol.http]# cache=yes# user-agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:57.0) Gecko/20100101 Firefox/58.0'

三、配置登錄時使用Cookies

有些視頻使用MPV進行下載或播放時,會提示需要用戶登錄,或出現(xiàn)播放及下載不了的情況,此時可以通過設(shè)置cookies來正常訪問。默認(rèn)是支持兩種方式的,此文我們通過使用火狐瀏覽器的cookies.sqllite來實現(xiàn)。


1、下載火狐瀏覽器? 2、安裝火狐瀏覽器? 3、登錄自己的視頻會員,會員信息會自動保存到 cookies.sqlite 中

4、cookies文件為 cookies.sqlite,不同的操作系統(tǒng)請按如下的路徑去找。

The default location for Firefox’s profile folder differs depending on your platform. The default locations are:

Windows 7, 8.1, and 10: C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\xxxxxxxx.default

Mac OS X El Capitan: Users/<username>/Library/Application Support/Firefox/Profiles/xxxxxxxx.default

Linux: /home/<username>/.mozilla/firefox/xxxxxxxx.default

配置you-get使用cookies的方法如下(現(xiàn)在2022-10-22需提前修改ccode碼才能正常執(zhí)行,詳見上文):

you-get -p "mpv --start=43" --cookies=./cookies.sqlite https://v.youku.com/v_show/id_XNDc1OTk3NzQ2OA==.html

you-get --format=mp4hd3v2 --cookies=./cookies.sqlite https://v.youku.com/v_show/id_XNDc1OTk3NzQ2OA==.html

四、使用MPV來作筆記的參考

知乎的一只小胖子:MPV播放器系列(一)-剪輯在線視頻9 贊同 · 19 評論文章

知乎的一只小胖子:MPV播放器系列(二)-完成課堂筆記7 贊同 · 2 評論文章

五、本文相關(guān)引用的參考來源

https://mpv.io/manual/master/mpv.io/manual/master/

mpv 詳細(xì)配置文件 - 簡書 (jianshu.com)www.lxweimin.com/p/3dfd11a9c2a7

創(chuàng)作不易,如果本文多多少少對你有所幫助的話,請不吝動動你的小手,點個贊再走吧!!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容