找回密码
 立即注册
查看: 2817|回复: 5

MPV auto-profile 踩的一个小坑

回帖奖励 600 活跃度 回复本帖可获得 100 活跃度奖励! 每人限 1 次

6

主题

41

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
12590
x86armv7 发表于 2021-5-7 15:55:14 | 显示全部楼层 |阅读模式
本帖最后由 x86armv7 于 2021-5-7 16:00 编辑

笔电改用了Linux以后mpv成了我的心头好,不过我这个笔电独显是和集显混合的(MUXLESS模式),所以配置好optimus以后习惯在电池供电时用集成显卡模式,禁用独显;
而我自己改的mpv.conf是比较吃负载的(自己写的辣鸡配置文件我就不帖了),所以集显下会掉帧,于是匆忙浏览了一下mpv官方的手册还有坛友孤雨独火帖子,写了一个根据当前硬解自动换配置(profile)的句段
  1. [Auto-Sacrifice]
  2. profile-desc=Auto-switch interpolation & dithering algorithm by hwdec
  3. # 在硬解使用nvdec时才启用此配置,即独显条件下才使用此配置
  4. profile-cond=hwdec-current==nvdec or hwdec-current==nvdec-copy
  5. ......
复制代码
结果并不生效,日志说我的条件里有算数运算。有点摸不着头脑,于是把手册里的Conditional auto profiles一节细看了一遍,发现这么一句话:
You cannot reference properties with - this way since that would denote a subtraction, but if the variable name contains any _ characters, they are turned into -. For example, playback_time would return the property playback-time.

原来如此,用于判断是否启用配置的语句里所用的属性不能存在“-”号,而应将它转换为“_”(下划线),也就是我上面的hwdec-current应该改成hwdec_current,否则mpv会将“-”当作减法运算。
具体根据哪些属性来判断是否启用配置,mpv手册给了一个属性清单,而我匆匆浏览,直接复制的属性清单里的属性名,并没有看到这个注意事项,因此出错,真是心浮气躁惹的祸

话说回来,像我这样根据hwdec来得到相对的显卡状态,切换配置的思路虽然可行,不过有个前提条件就是需要开启自动硬解(hwdec=auto或auto-safe),如果我要用软解的话(比如有些格式无法硬解自动回退到软解),那这个自动配置就失效了。

像这样软解条件下,根据显卡状况切换配置,各位大佬有没有什么好的思路可以指点我一下?

btw,写这个配置前电脑用集成显卡模式时,我都是用VLC看的视频,能自动切换vaapi和vdpau两种硬解(当然它不支持nvdec倒是缺点),感觉VLC还是傻瓜好用,虽然有些朋友不太偏爱
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火 发表于 2021-5-7 17:00:36 | 显示全部楼层

回帖奖励 +100 活跃度

本帖最后由 孤雨独火 于 2021-5-7 17:16 编辑

测试了一下发现这个条件局限性好大。。。
条件部分这样写也不是不行 p["hwdec-current"]==d3d11va


通用设置了hwdec=auto。。。那要怎样才能自动切到nvdec-copy上去
回复

使用道具 举报

6

主题

41

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
12590
x86armv7  楼主| 发表于 2021-5-7 19:30:39 | 显示全部楼层
本帖最后由 x86armv7 于 2021-5-7 19:35 编辑
孤雨独火 发表于 2021-5-7 17:00
测试了一下发现这个条件局限性好大。。。
条件部分这样写也不是不行 p["hwdec-current"]==d3d11va

对,后面有一段说的就是这种写法;局限确实比较大,一时找不到啥好方法,所以想发帖集思广益

其实用的是auto-safe,optimus三种混合模式集成/独显/混合,
前两种可能类似告诉系统只有一张显卡,所以换成独显模式(nvidia)时,mpv只能nvdec;
nvdec-copy&vaapi-copy我记得好像是混合模式(hybrid)时会使用,顺手写了规则,
但Linux下n卡驱动混合模式画面严重撕裂,所以我一般不用混合模式,这方面还真不清楚

回复

使用道具 举报

2

主题

30

回帖

0

VC币

注册会员

Rank: 2

积分
1346
zxhzxhz 发表于 2021-5-8 19:17:36 | 显示全部楼层

回帖奖励 +100 活跃度

有一个笨一点的办法,就是不用mpv做判断,而是在mpv开一个ipc input,然后跑一个脚本在后台,检测到socket上线就发送命令切换
回复

使用道具 举报

26

主题

298

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
54135
楚轩 发表于 2021-5-8 22:40:39 | 显示全部楼层

回帖奖励 +100 活跃度

拿个奖励

评分

参与人数 1活跃度 +32767 收起 理由
fy939 + 32767

查看全部评分

回复

使用道具 举报

0

主题

7

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
3438
yubing0626 发表于 2021-5-12 13:49:02 | 显示全部楼层

回帖奖励 +100 活跃度

感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表