最近在尝试使用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
创作不易,如果本文多多少少对你有所帮助的话,请不吝动动你的小手,点个赞再走吧!!!