使用you-get和yt-dlp开源组件下载及播放视频

最近在尝试使用mpv播放器,来实现视频播放和作笔记的闭环,梳理了相关的一些内容,便有此文,方便大家参考。本文推荐大家使用开源的播放器MPV,并提供了几个笔者默认集成的配置。当然大家也可以下载mpv对应的前端界面进行使用,具体可参考链接:Applications using mpv · mpv-player/mpv Wiki (github.com) ,这里不再赘述。

mpv.io | Installationmpv.io/installation/

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

1.使用mpv内置的youtube-dl播放在线视频方案:mpv 默认集成了youtube-dl的在线视频解析方案,用法如下:

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

鉴于youtube-dl访问不稳定,被绞杀后不再怎么更新,其继承者youtube-dlc 对国内的视频网站解析也不太及时,这里就不推荐使用youtube-dl,youtube-dlc这两款之前流行的视频解析引擎了,推荐大家使用you-get来替换。

2.youtube-dl的继承者yt-dlp的使用,先要安装yt-dlp  https://github.com/yt-dlp/yt-dlp/releases ,详细可参考:

Mintimate:yt-dlp:轻松下载各平台视频,缓存视频又一途径19 赞同 · 4 评论文章

视频下载利器(二):yt-dlp,轻松下载各平台视频,缓存视频又一途径 - 雨月空间站

可以按官网文档快速安装或者参考以上链接了解更详细用法,然后配置 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

这样我们再次使用如下的写法时,它便会把默认的youtube-dl的自带视频解析引擎替换为yt-dlp。如下图所示:

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

二、国内的开源 you-get 替换方案:

鉴于youtube-dl/youtube-dlc/yt-dlp对国内视频网站的支持和更新力度,推荐大家使用you-get方案。操作如下:

安装you-get软件:soimort/you-get: Dumb downloader that scrapes the web (github.com) , 或参考如下链接:

You-get在Windows系统下的安装+会员视频下载的cookie配置_cwj1412的博客-CSDN博客blog.csdn.net/cwj1412/article/details/107775004

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

安装成功后,便可使用you-get来作为视频解析引擎。由于you-get迭代较快,这样我们就能够避免视频网站更新后,视频解析引擎没有及时更新而导致我们不能下载网站视频的问题了。

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现有发布包未合并最新代码,播放优酷的视频现在会报错,需我们自己调整下ccode值为0564you-get -p "mpv --start=43" "https://v.youku.com/v_show/id_XNTkxMDQ2NzUyNA==.html"#报错:you-get: ccode参数错误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参数错误

如上,我们可以实现mpv作为本地播放器来播放A站、B站、爱优腾的视频了,对于优酷的视频播放由于作者发布的版本没有合并最新的代码,我们需要自己稍微调整后来使用。Update youku.py · soimort/you-get@af3468f (github.com)

对 pip下载的 you-get,我们修改 youku.py源码 ccode为0564,即可实现用you-get来播放和下载优酷的视频了。如果下载的是作者直接发布的you-get执行程序,则照样会报如上的ccode参数错误,所以需要编译以后才能用。

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__':    # 视频网站的地址    # 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来调用上面的Py脚本,并通过设置的快捷键调用脚本,播放传入的视频链接,并跳转至视频对应的时间戳。

我的 mpv.conf 文件配置详情如下,你出可以参考: mpv 详细配置文件 - 简书 (jianshu.com) 来配置更详细参数。

############# 我的配置 mpv.conf ############## 将窗口缩放50% #geometry=50%# 配置截图相关参数,参考:https://mpv.io/manual/master/#screenshot# 截图模板,指定文件名称,默认为(mpv-shot%n)screenshot-template=mpv-shot-%f-%P

screenshot-png-compression=8# 指定保存格式(默认为jpg)# screenshot-format=jpg  # 截图保存目录(默认在脚本运行目录)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#解码/渲染设置vo=gpuhwdec=auto

gpu-api=auto#使用硬解的格式hwdec-codecs=all#gpu-api=d3d11时(win默认api)多GPU平台指定使用的GPU,GPU名称参考设备管理器。此选项根据首字符串识别,如果不是同一家的GPU则无需输入完整名称。若使用Vulkan则为vulkan-device=#d3d11-adapter=AMD#d3d11-adapter=Intel#d3d11-adapter=NVIDIA#d3d11va零拷贝模式,可降低gpu 3D engine占用#d3d11va-zero-copy=yes#缓存设置#开启缓存#cache=yes#最大向后缓存大小(KiB或MiB)#demuxer-max-bytes=128MiB#用内存而不是磁盘缓存#cache-on-disk=no#缓存时间#cache-secs=8#退出时记住播放状态(包括是否暂停、音量、播放速度、位置等)save-position-on-quit#播放状态保存位置#watch-later-directory=D:\Cache\watch_later#不记录是否暂停(除了pause同理可写fullscreen,mute,speed,ontop等参数)watch-later-options-remove=pause#窗口/OSD/OSC设置#贴边吸附(限win)snap-window=yes#无边框#no-border#全屏#fullscreen#暂停<yes/no>,启动(恢复播放)时 暂停/不暂停pause=no#运行MPV自动窗口最大化(无边框界面时的最大化类似“无边窗口模式”而非“全屏”)#window-maximized=yes#关闭简易控制面板On Screen Controller(osc)#no-osc#关闭屏上信息条显示#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#设置OSD文本信息的持续时间(毫秒)(默认值:1000, 范围为 0-3600000)#osd-duration=3600000#要永久显示可以设置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%#设置默认打开的窗口大小为1280x720geometry=2560x1440#geometry=3640x2160#视频/音频/字幕/截图设置#读取杜比视界元数据(需要将vo=gpu改为实验性的vo=gpu-next)#vf=format:dolbyvision=yes#色彩管理#icc-profile-auto=yes#视频同步#video-sync=display-resample#interpolation=yes#变速播放时的音调修正audio-pitch-correction=yes#加载视频文件的外部字幕文件方式。(fuzzy 加载含有视频文件名的全部字幕文件)sub-auto=fuzzy#加载含有视频文件名的音频文件#audio-file-auto=fuzzy#字体大小,默认55,此值是以高度为720的屏幕为比例,更大或更小的屏幕会缩放sub-font-size=55#强制外挂ass字幕可使用黑边sub-ass-force-margins=yes#指定优先使用音轨(DVD使用ISO 639-1两位语言代码,MKV、MPEG-TS使用ISO 639-2 三位语言代码)alang=zh,chi#指定优先使用字幕轨(DVD使用ISO 639-1两位语言代码,MKV、MPEG-TS使用ISO 639-2 三位语言代码)slang=zh,chi#列表播放循环方式,循环写inf否则写no#loop-playlist=inf#文件循环方式#loop=inf#启动默认音量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#禁用默认快捷键方案#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进行下载或播放时,会提示需要用户登录,或出现播放及下载不了的情况,此时可以通过设置cookies来正常访问。默认是支持两种方式的,此文我们通过使用火狐浏览器的cookies.sqllite来实现。


1、下载火狐浏览器  2、安装火狐浏览器  3、登录自己的视频会员,会员信息会自动保存到 cookies.sqlite 中

4、cookies文件为 cookies.sqlite,不同的操作系统请按如下的路径去找。

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的方法如下(现在2022-10-22需提前修改ccode码才能正常执行,详见上文):

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 评论文章

五、本文相关引用的参考来源

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

mpv 详细配置文件 - 简书 (jianshu.com)www.jianshu.com/p/3dfd11a9c2a7

创作不易,如果本文多多少少对你有所帮助的话,请不吝动动你的小手,点个赞再走吧!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容