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

MPV auto-profile 踩的一个小坑

回帖奖励 600 活跃度 回复本帖可获得 100 活跃度奖励! 每人限 1 次
  • TA的每日心情

    2023-10-22 11:17
  • 签到天数: 109 天

    [LV.6]常住居民II

    6

    主题

    41

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    12497
    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还是傻瓜好用,虽然有些朋友不太偏爱
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-12-4 12:48
  • 签到天数: 42 天

    [LV.5]常住居民I

    45

    主题

    2692

    回帖

    2020

    VC币

    星辰大海

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

    积分
    394182

    崭露头角活跃达人CD!BD!

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

    回帖奖励 +100 活跃度

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

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


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

    使用道具 举报

  • TA的每日心情

    2023-10-22 11:17
  • 签到天数: 109 天

    [LV.6]常住居民II

    6

    主题

    41

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    12497
    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卡驱动混合模式画面严重撕裂,所以我一般不用混合模式,这方面还真不清楚

    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-31 23:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    27

    回帖

    0

    VC币

    注册会员

    Rank: 2

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

    回帖奖励 +100 活跃度

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-14 12:32
  • 签到天数: 69 天

    [LV.6]常住居民II

    23

    主题

    276

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    53451
    楚轩 发表于 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 活跃度

    感谢分享
    回复

    使用道具 举报

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

    本版积分规则

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