递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
楼主: 孤独靖仇
打印 上一主题 下一主题

[视窗] MPV播放器火山封装库 - 专业媒体播放解决方案

  [复制链接]

203

主题

1327

帖子

5402

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5402
QQ
131#
发表于 前天 16:05 | 只看该作者
孤独靖仇 发表于 2025-10-30 16:02
你说的方法我试过!我这个方法更好!比如如果按你的方法走!比如我在主窗口控制窗口1中的MPV和窗口2的MPV   ...

你这个要每个都单独创建变量,有点不是很方便,感觉。
这个是我改了一下的代码:
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 包 火山.MPV播放器 <@视窗.外部头文件 = "MPV\\mpv\\render.h" @视窗.外部头文件 = "MPV\\mpv\\MPVExports.h"
  3.         @视窗.外部头文件 = "MPV\\mpv\\MpvCore.h" @视窗.外部源文件 = "MPV\\mpv\\MPVExports.cpp"
  4.         @视窗.外部源文件 = "MPV\\mpv\\MpvCore.cpp" @视窗.头文件搜寻目录 = "MPV\\mpv\" @视窗.附属文件 = "MPV\\libs\\libmpv-2.dll"
  5.         @视窗.外部库.x64 = "MPV\\libs\\mpv.lib" @输出名 = "MPVPlay">

  6. 类 MPV播放器 <公开 @输出名 = "MPV_play">
  7. {
  8.     变量 本对象实例ID <类型 = 变整数 注释 = "内部:实例对象播放器实例ID">

  9.     方法 对象实例ID <公开 属性读 类型 = 变整数 注释 = "实例对象播放器实例ID">
  10.     {
  11.         返回 (本对象实例ID)
  12.     }

  13.     方法 对象实例ID <公开 属性写 注释 = "实例对象播放器实例ID">
  14.     参数 实例ID <类型 = 变整数>
  15.     {
  16.         本对象实例ID = 实例ID
  17.     }

  18.     #

  19.     方法 初始化内部 <类型 = 变整数 注释 = "初始化MPV播放器实例 - 创建并初始化一个新的MPV播放器实例" 注释 = "参数 窗口句柄: 用于显示视频的窗口句柄,必须是有效的窗口句柄"
  20.             注释 = "参数 解码模式: 视频解码模式,0=自动选择(推荐),1=强制硬件解码,2=强制软件解码" 注释 = "注意: 每个窗口句柄只能创建一个播放器实例,重复创建会失败"
  21.             注释 = "注意: 硬件解码需要显卡支持,如果失败会自动回退到软件解码" 返回值注释 = "成功返回实例ID(大于0),失败返回0" @禁止流程检查 = 真>
  22.     参数 窗口句柄 <类型 = 变整数 注释 = "用于显示视频的窗口句柄,必须是有效的窗口句柄">
  23.     参数 解码模式 <类型 = 整数 注释 = "视频解码模式:0=自动选择(推荐),1=强制硬件解码,2=强制软件解码" @默认值 = 0>
  24.     {
  25.         @ return MPV_CreateInstance((HWND)@<窗口句柄>, @<解码模式>);
  26.     }

  27.     方法 初始化 <公开 类型 = 变整数 注释 = "初始化MPV播放器实例 - 创建并初始化一个新的MPV播放器实例" 注释 = "参数 窗口句柄: 用于显示视频的窗口句柄,必须是有效的窗口句柄"
  28.             注释 = "参数 解码模式: 视频解码模式,0=自动选择(推荐),1=强制硬件解码,2=强制软件解码" 注释 = "注意: 每个窗口句柄只能创建一个播放器实例,重复创建会失败"
  29.             注释 = "注意: 硬件解码需要显卡支持,如果失败会自动回退到软件解码" 返回值注释 = "成功返回实例ID(大于0),失败返回0" @禁止流程检查 = 真>
  30.     参数 窗口句柄 <类型 = 变整数 注释 = "用于显示视频的窗口句柄,必须是有效的窗口句柄">
  31.     参数 解码模式 <类型 = 整数 注释 = "视频解码模式:0=自动选择(推荐),1=强制硬件解码,2=强制软件解码" @默认值 = 0>
  32.     {
  33.         对象实例ID = 初始化内部 (窗口句柄, 解码模式)
  34.         返回 (对象实例ID)
  35.     }

  36.     方法 清理 <公开 类型 = 文本型 注释 = "清理MPV播放器实例 - 销毁指定的MPV播放器实例并释放所有资源"
  37.             注释 = "参数 实例ID: 要销毁的播放器实例ID,必须是通过初始化方法成功创建的实例ID" 注释 = "注意: 调用此方法后,实例ID将失效,不能再用于任何操作"
  38.             注释 = "注意: 建议在窗口关闭前或不再需要播放器时调用此方法清理资源"
  39.             注释 = "返回值格式: status:success|action:instance_destroyed 或 status:failed|error:错误信息"
  40.             返回值注释 = "返回操作状态信息,包含成功或失败的具体原因" @禁止流程检查 = 真>
  41.     参数 实例ID <类型 = 变整数 注释 = "要销毁的播放器实例ID,必须是通过初始化方法成功创建的实例ID" @默认值 = 0>
  42.     {
  43.         如果真 (实例ID < 1)
  44.         {
  45.             实例ID = 对象实例ID
  46.         }
  47.         @ return MPV_DestroyInstance(@<实例ID>);
  48.     }

  49.     方法 取实例状态 <公开 类型 = 文本型 注释 = "取实例状态 - 获取指定播放器实例的当前状态信息" 注释 = "参数 实例ID: 要查询状态的播放器实例ID"
  50.             注释 = "返回值包含实例的初始化状态、渲染模式、硬件解码状态等信息"
  51.             注释 = "典型返回值: status:success|api:opengl|hwdec:auto 或 status:failed|error:错误信息"
  52.             注释 = "注意: 此方法主要用于调试和状态监控" 返回值注释 = "返回实例的详细状态信息" @禁止流程检查 = 真>
  53.     参数 实例ID <类型 = 变整数 注释 = "要查询状态的播放器实例ID" @默认值 = 0>
  54.     {
  55.         如果真 (实例ID < 1)
  56.         {
  57.             实例ID = 对象实例ID
  58.         }

  59.         @ return MPV_GetInstanceStatus(@<实例ID>);
  60.     }

  61.     方法 验证实例 <公开 类型 = 逻辑型 注释 = "验证实例有效性 - 检查指定的播放器实例ID是否有效且可用" 注释 = "参数 实例ID: 要验证的播放器实例ID"
  62.             注释 = "注意: 实例可能因为各种原因失效(如窗口关闭、资源释放等)" 注释 = "注意: 在调用其他方法前建议先验证实例有效性,避免操作无效实例" 返回值注释 = "实例有效返回真,无效返回假"
  63.             @禁止流程检查 = 真>
  64.     参数 实例ID <类型 = 变整数 注释 = "要验证的播放器实例ID" @默认值 = 0>
  65.     {
  66.         如果真 (实例ID < 1)
  67.         {
  68.             实例ID = 对象实例ID
  69.         }

  70.         @ return MPV_ValidateInstance(@<实例ID>);
  71.     }

  72.     方法 加载文件 <公开 类型 = 文本型 注释 = "加载媒体文件 - 加载指定的媒体文件到播放器" 注释 = "参数 实例ID: 播放器实例ID"
  73.             注释 = "参数 文件路径: 要加载的媒体文件路径,支持本地文件和网络URL" 注释 = "支持格式: MP4, AVI, MKV, FLV, WebM, MP3, WAV等主流音视频格式"
  74.             注释 = "网络支持: HTTP, HTTPS, RTMP, RTSP等流媒体协议" 注释 = "注意: 文件路径必须是完整路径,支持中文字符"
  75.             注释 = "注意: 加载网络文件需要设置合适的网络超时时间"
  76.             注释 = "返回值格式: status:success|action:file_loaded 或 status:failed|error:错误信息" 返回值注释 = "返回文件加载状态信息"
  77.             @禁止流程检查 = 真>
  78.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  79.     参数 文件路径 <类型 = 文本型 注释 = "要加载的媒体文件路径,支持本地文件和网络URL">
  80.     {
  81.         如果真 (实例ID < 1)
  82.         {
  83.             实例ID = 对象实例ID
  84.         }

  85.         @ return MPV_LoadFile(@<实例ID>, @<文件路径>);
  86.     }

  87.     方法 播放 <公开 类型 = 文本型 注释 = "开始播放 - 开始播放当前加载的媒体文件" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "注意: 需要先成功加载媒体文件,否则播放会失败"
  88.             注释 = "注意: 如果当前处于暂停状态,此方法会从暂停位置继续播放" 注释 = "注意: 如果当前正在播放,调用此方法无效果"
  89.             注释 = "返回值格式: status:success|action:playing 或 status:failed|error:错误信息" 返回值注释 = "返回播放操作状态信息"
  90.             @禁止流程检查 = 真>
  91.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  92.     {
  93.         如果真 (实例ID < 1)
  94.         {
  95.             实例ID = 对象实例ID
  96.         }

  97.         @ return MPV_Play(@<实例ID>);
  98.     }

  99.     方法 暂停 <公开 类型 = 文本型 注释 = "暂停播放 - 暂停当前正在播放的媒体" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "注意: 如果当前已经暂停,调用此方法无效果"
  100.             注释 = "注意: 暂停后可以通过播放方法继续播放" 注释 = "返回值格式: status:success|action:paused 或 status:failed|error:错误信息"
  101.             返回值注释 = "返回暂停操作状态信息" @禁止流程检查 = 真>
  102.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  103.     {
  104.         @ return MPV_Pause(@<实例ID>);
  105.     }

  106.     方法 停止 <公开 类型 = 文本型 注释 = "停止播放 - 停止当前播放并重置播放状态" 注释 = "参数 实例ID: 播放器实例ID"
  107.             注释 = "注意: 停止后会重置播放位置到开头,需要重新加载文件才能再次播放" 注释 = "注意: 与暂停不同,停止会释放当前的媒体资源"
  108.             注释 = "返回值格式: status:success|action:stopped 或 status:failed|error:错误信息" 返回值注释 = "返回停止操作状态信息"
  109.             @禁止流程检查 = 真>
  110.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  111.     {
  112.         如果真 (实例ID < 1)
  113.         {
  114.             实例ID = 对象实例ID
  115.         }

  116.         @ return MPV_Stop(@<实例ID>);
  117.     }

  118.     方法 步进向前 <公开 类型 = 文本型 注释 = "步进向前 - 向前跳转指定的时间(默认5秒)" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "跳转距离: 固定向前跳转5秒"
  119.             注释 = "注意: 跳转后会自动继续播放" 注释 = "注意: 如果跳转后超过文件末尾,会停止播放"
  120.             注释 = "返回值格式: status:success|action:stepped_forward 或 status:failed|error:错误信息" 返回值注释 = "返回步进操作状态信息"
  121.             @禁止流程检查 = 真>
  122.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  123.     {
  124.         如果真 (实例ID < 1)
  125.         {
  126.             实例ID = 对象实例ID
  127.         }

  128.         @ return MPV_StepForward(@<实例ID>);
  129.     }

  130.     方法 步进向后 <公开 类型 = 文本型 注释 = "步进向后 - 向后跳转指定的时间(默认5秒)" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "跳转距离: 固定向后跳转5秒"
  131.             注释 = "注意: 跳转后会自动继续播放" 注释 = "注意: 如果跳转后小于文件开头,会从开头开始播放"
  132.             注释 = "返回值格式: status:success|action:stepped_backward 或 status:failed|error:错误信息" 返回值注释 = "返回步进操作状态信息"
  133.             @禁止流程检查 = 真>
  134.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  135.     {
  136.         如果真 (实例ID < 1)
  137.         {
  138.             实例ID = 对象实例ID
  139.         }

  140.         @ return MPV_StepBackward(@<实例ID>);
  141.     }

  142.     方法 逐帧前进 <公开 类型 = 文本型 注释 = "逐帧前进 - 向前移动一帧画面" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "注意: 此方法主要用于视频分析和精确的画面定位"
  143.             注释 = "注意: 逐帧前进后播放器会处于暂停状态,需要手动继续播放" 注释 = "注意: 对音频文件调用此方法可能无效果"
  144.             注释 = "返回值格式: status:success|action:frame_stepped 或 status:failed|error:错误信息" 返回值注释 = "返回逐帧操作状态信息"
  145.             @禁止流程检查 = 真>
  146.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  147.     {
  148.         如果真 (实例ID < 1)
  149.         {
  150.             实例ID = 对象实例ID
  151.         }

  152.         @ return MPV_FrameStep(@<实例ID>);
  153.     }

  154.     方法 逐帧后退 <公开 类型 = 文本型 注释 = "逐帧后退 - 向后移动一帧画面" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "注意: 此方法主要用于视频分析和精确的画面定位"
  155.             注释 = "注意: 逐帧后退后播放器会处于暂停状态,需要手动继续播放" 注释 = "注意: 对音频文件调用此方法可能无效果" 注释 = "注意: 不是所有视频格式都支持向后逐帧"
  156.             注释 = "返回值格式: status:success|action:frame_back_stepped 或 status:failed|error:错误信息"
  157.             返回值注释 = "返回逐帧操作状态信息" @禁止流程检查 = 真>
  158.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  159.     {
  160.         如果真 (实例ID < 1)
  161.         {
  162.             实例ID = 对象实例ID
  163.         }

  164.         @ return MPV_FrameBackStep(@<实例ID>);
  165.     }

  166.     方法 取播放时间 <公开 类型 = 小数 注释 = "取播放时间 - 获取当前的播放位置时间(单位:秒)" 注释 = "参数 实例ID: 播放器实例ID"
  167.             注释 = "返回值: 当前播放位置的时间,从文件开头计算的秒数" 注释 = "注意: 如果未加载文件或获取失败,返回-1.0" 注释 = "注意: 返回值是浮点数,包含小数部分,可用于精确时间显示"
  168.             返回值注释 = "成功返回当前播放时间(秒),失败返回-1.0" @禁止流程检查 = 真>
  169.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  170.     {
  171.         如果真 (实例ID < 1)
  172.         {
  173.             实例ID = 对象实例ID
  174.         }

  175.         @ return MPV_GetPlaybackTime(@<实例ID>);
  176.     }

  177.     方法 取总时长 <公开 类型 = 小数 注释 = "取总时长 - 获取当前加载媒体的总时长(单位:秒)" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 媒体文件的总时长,单位秒"
  178.             注释 = "注意: 如果未加载文件或获取失败,返回-1.0" 注释 = "注意: 对于直播流等无限长度的媒体,可能返回0或特定值" 注释 = "注意: 某些网络流媒体可能无法准确获取总时长"
  179.             返回值注释 = "成功返回媒体总时长(秒),失败返回-1.0" @禁止流程检查 = 真>
  180.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  181.     {
  182.         如果真 (实例ID < 1)
  183.         {
  184.             实例ID = 对象实例ID
  185.         }

  186.         @ return MPV_GetTotalDuration(@<实例ID>);
  187.     }

  188.     方法 跳转 <公开 类型 = 逻辑型 注释 = "跳转到指定时间 - 跳转到媒体的指定时间位置" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 目标时间: 要跳转到的目标时间,单位秒"
  189.             注释 = "跳转方式: 绝对时间跳转,从文件开头计算" 注释 = "注意: 目标时间应该在0到总时长之间,超出范围可能被自动修正" 注释 = "注意: 跳转后会自动继续播放,除非当前处于暂停状态"
  190.             注释 = "注意: 对于网络流媒体,跳转可能需要缓冲时间" 返回值注释 = "跳转成功返回真,失败返回假" @禁止流程检查 = 真>
  191.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  192.     参数 目标时间 <类型 = 小数 注释 = "要跳转到的目标时间,单位秒,范围0-总时长">
  193.     {
  194.         如果真 (实例ID < 1)
  195.         {
  196.             实例ID = 对象实例ID
  197.         }

  198.         @ return MPV_Seek(@<实例ID>, @<目标时间>);
  199.     }

  200.     方法 跳转百分比 <公开 类型 = 逻辑型 注释 = "按百分比跳转 - 按百分比跳转到媒体的指定位置" 注释 = "参数 实例ID: 播放器实例ID"
  201.             注释 = "参数 百分比: 跳转位置百分比,0-100之间" 注释 = "跳转计算: 目标时间 = 总时长 × 百分比 ÷ 100" 注释 = "注意: 百分比应该在0-100之间,超出范围会返回失败"
  202.             注释 = "注意: 需要先成功获取总时长,否则跳转会失败" 注释 = "注意: 跳转后会自动继续播放,除非当前处于暂停状态" 返回值注释 = "跳转成功返回真,失败返回假" @禁止流程检查 = 真>
  203.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  204.     参数 百分比 <类型 = 小数 注释 = "跳转位置百分比,0-100之间">
  205.     {
  206.         如果真 (实例ID < 1)
  207.         {
  208.             实例ID = 对象实例ID
  209.         }

  210.         @ return MPV_SeekPercentage(@<实例ID>, @<百分比>);
  211.     }

  212.     方法 跳转章节 <公开 类型 = 逻辑型 注释 = "跳转到指定章节 - 跳转到媒体的指定章节" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 章节索引: 要跳转到的章节索引,从0开始"
  213.             注释 = "注意: 需要媒体文件包含章节信息,否则跳转会失败" 注释 = "注意: 可以使用取章节数量方法检查是否有章节" 注释 = "注意: 章节索引从0开始,最大值为章节数量-1"
  214.             注释 = "注意: 跳转后会自动继续播放,除非当前处于暂停状态" 返回值注释 = "跳转成功返回真,失败返回假" @禁止流程检查 = 真>
  215.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  216.     参数 章节索引 <类型 = 整数 注释 = "要跳转到的章节索引,从0开始">
  217.     {
  218.         如果真 (实例ID < 1)
  219.         {
  220.             实例ID = 对象实例ID
  221.         }

  222.         @ return MPV_SeekChapter(@<实例ID>, @<章节索引>);
  223.     }

  224.     方法 置音量 <公开 类型 = 逻辑型 注释 = "设置音量 - 设置播放器的输出音量" 注释 = "参数 实例ID: 播放器实例ID"
  225.             注释 = "参数 音量: 音量大小,0-100之间,0为静音,100为最大音量" 注释 = "注意: 音量设置是立即生效的" 注释 = "注意: 音量值与系统音量是独立的,只影响当前播放器"
  226.             注释 = "注意: 即使设置了音量,如果系统静音仍然听不到声音" 注释 = "注意: 某些音频格式可能对音量变化不敏感" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  227.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  228.     参数 音量 <类型 = 整数 注释 = "音量大小,0-100之间,0为静音,100为最大音量">
  229.     {
  230.         如果真 (实例ID < 1)
  231.         {
  232.             实例ID = 对象实例ID
  233.         }

  234.         @ return MPV_SetVolume(@<实例ID>, @<音量>);
  235.     }

  236.     方法 取音量 <公开 类型 = 整数 注释 = "取当前音量 - 获取播放器的当前音量设置" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 当前音量值,0-100之间"
  237.             注释 = "注意: 返回的是设置的音量值,不是实际输出音量" 注释 = "注意: 如果获取失败,返回默认值50" 注释 = "注意: 即使返回成功值,也可能因为静音而听不到声音"
  238.             返回值注释 = "成功返回当前音量值(0-100),失败返回-1" @禁止流程检查 = 真>
  239.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  240.     {
  241.         如果真 (实例ID < 1)
  242.         {
  243.             实例ID = 对象实例ID
  244.         }

  245.         @ return MPV_GetVolume(@<实例ID>);
  246.     }

  247.     方法 置静音 <公开 类型 = 逻辑型 注释 = "设置静音状态 - 设置或取消播放器的静音状态" 注释 = "参数 实例ID: 播放器实例ID"
  248.             注释 = "参数 静音: 是否静音,真=静音,假=取消静音" 注释 = "注意: 静音状态与音量设置是独立的" 注释 = "注意: 即使音量不为0,静音状态下也听不到声音"
  249.             注释 = "注意: 取消静音后恢复之前的音量设置" 注释 = "注意: 静音状态变化是立即生效的" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  250.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  251.     参数 静音 <类型 = 逻辑型 注释 = "是否静音,真=静音,假=取消静音">
  252.     {
  253.         如果真 (实例ID < 1)
  254.         {
  255.             实例ID = 对象实例ID
  256.         }

  257.         @ return MPV_SetMute(@<实例ID>, @<静音>);
  258.     }

  259.     方法 取静音 <公开 类型 = 逻辑型 注释 = "取静音状态 - 获取播放器的当前静音状态" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 当前静音状态,真=静音中,假=非静音"
  260.             注释 = "注意: 即使返回非静音,也可能因为音量为0而听不到声音" 注释 = "注意: 如果获取失败,返回默认值假" 返回值注释 = "静音状态返回真,非静音返回假" @禁止流程检查 = 真>
  261.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  262.     {
  263.         如果真 (实例ID < 1)
  264.         {
  265.             实例ID = 对象实例ID
  266.         }

  267.         @ return MPV_GetMute(@<实例ID>);
  268.     }

  269.     方法 置音频延迟 <公开 类型 = 逻辑型 注释 = "设置音频延迟 - 设置音频相对于视频的延迟时间" 注释 = "参数 实例ID: 播放器实例ID"
  270.             注释 = "参数 延迟: 音频延迟时间,单位秒,正数表示音频延迟,负数表示音频提前" 注释 = "应用场景: 用于调整音视频同步问题" 注释 = "典型值: 一般调整范围在-1.0到+1.0秒之间"
  271.             注释 = "注意: 设置后立即生效,影响后续播放" 注释 = "注意: 某些音频格式可能不支持延迟调整" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  272.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  273.     参数 延迟 <类型 = 小数 注释 = "音频延迟时间,单位秒,正数=音频延迟,负数=音频提前">
  274.     {
  275.         如果真 (实例ID < 1)
  276.         {
  277.             实例ID = 对象实例ID
  278.         }

  279.         @ return MPV_SetAudioDelay(@<实例ID>, @<延迟>);
  280.     }

  281.     方法 取音频延迟 <公开 类型 = 小数 注释 = "取音频延迟 - 获取当前设置的音频延迟时间" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 当前音频延迟时间,单位秒"
  282.             注释 = "注意: 返回值为0表示无延迟" 注释 = "注意: 如果获取失败,返回默认值0.0" 注释 = "注意: 返回值反映的是设置值,不是实际播放时的精确延迟"
  283.             返回值注释 = "成功返回音频延迟时间(秒),失败返回0.0" @禁止流程检查 = 真>
  284.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  285.     {
  286.         @ return MPV_GetAudioDelay(@<实例ID>);
  287.     }

  288.     方法 置音频均衡器 <公开 类型 = 逻辑型 注释 = "设置音频均衡器 - 设置音频均衡器参数" 注释 = "参数 实例ID: 播放器实例ID"
  289.             注释 = "参数 均衡器预设: 均衡器预设字符串,支持lavfi过滤器语法"
  290.             注释 = "示例: equalizer=f=1000:width_type=h:width=1000:g=5 表示1kHz处提升5dB"
  291.             注释 = "复杂示例: equalizer=f=100:width_type=h:width=100:g=2,equalizer=f=1000:width_type=h:width=1000:g=-3"
  292.             注释 = "注意: 需要了解lavfi过滤器语法才能正确使用" 注释 = "注意: 设置失败可能因为语法错误或不受支持的参数" 注释 = "注意: 均衡器设置会增加CPU使用率"
  293.             返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  294.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  295.     参数 均衡器预设 <类型 = 文本型 注释 = "均衡器预设字符串,支持lavfi过滤器语法">
  296.     {
  297.         如果真 (实例ID < 1)
  298.         {
  299.             实例ID = 对象实例ID
  300.         }

  301.         @ return MPV_SetAudioEqualizer(@<实例ID>, @<均衡器预设>);
  302.     }

  303.     方法 轮询事件 <公开 类型 = 文本型 注释 = "轮询事件 - 获取播放器的当前状态和事件信息" 注释 = "参数 实例ID: 播放器实例ID"
  304.             注释 = "返回值: 包含播放状态、时间信息、音量、尺寸等综合信息的字符串"
  305.             注释 = "返回格式: 键值对形式,用|分隔,如 status:success|播放状态:0|当前播放时间:125.50|..."
  306.             注释 = "包含信息: 播放状态(0=播放,1=暂停,2=停止)、当前时间、总时长、音量、静音状态、播放速度、视频尺寸等"
  307.             注释 = "事件列表: 包含最近发生的MPV事件,如文件加载、跳转、重新配置等" 注释 = "注意: 建议定时调用此方法更新UI状态(如进度条、时间显示等)"
  308.             注释 = "注意: 调用此方法会清空事件队列,每个事件只会报告一次" 返回值注释 = "返回综合状态信息字符串" @禁止流程检查 = 真>
  309.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  310.     {
  311.         如果真 (实例ID < 1)
  312.         {
  313.             实例ID = 对象实例ID
  314.         }

  315.         @ return MPV_PollEvents(@<实例ID>);
  316.     }

  317.     方法 是否在播放 <公开 类型 = 逻辑型 注释 = "检查播放状态 - 检查播放器是否正在播放" 注释 = "参数 实例ID: 播放器实例ID"
  318.             注释 = "返回值: 真=正在播放,假=未播放(暂停或停止)" 注释 = "注意: 此方法只检查播放/暂停状态,不检查是否加载了文件" 注释 = "注意: 如果文件播放完毕,此方法也会返回假"
  319.             注释 = "注意: 对于网络流媒体,缓冲时可能返回播放状态" 返回值注释 = "正在播放返回真,否则返回假" @禁止流程检查 = 真>
  320.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  321.     {
  322.         如果真 (实例ID < 1)
  323.         {
  324.             实例ID = 对象实例ID
  325.         }

  326.         @ return MPV_IsPlaying(@<实例ID>);
  327.     }

  328.     方法 是否暂停 <公开 类型 = 逻辑型 注释 = "检查暂停状态 - 检查播放器是否处于暂停状态" 注释 = "参数 实例ID: 播放器实例ID"
  329.             注释 = "返回值: 真=已暂停,假=未暂停(播放或停止)" 注释 = "注意: 停止状态也会返回假,因为停止不是暂停" 注释 = "注意: 刚加载文件时默认是暂停状态,需要调用播放方法开始播放"
  330.             注释 = "注意: 文件播放完毕时返回假,不是暂停状态" 返回值注释 = "已暂停返回真,否则返回假" @禁止流程检查 = 真>
  331.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  332.     {
  333.         如果真 (实例ID < 1)
  334.         {
  335.             实例ID = 对象实例ID
  336.         }

  337.         @ return MPV_IsPaused(@<实例ID>);
  338.     }

  339.     方法 是否在跳转 <公开 类型 = 逻辑型 注释 = "检查跳转状态 - 检查播放器是否正在执行跳转操作" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 真=正在跳转,假=未跳转"
  340.             注释 = "应用场景: 用于在跳转期间显示加载状态或禁用控件" 注释 = "注意: 跳转包括时间跳转、章节跳转等各种位置变更" 注释 = "注意: 对于网络流媒体,跳转可能需要较长时间"
  341.             注释 = "注意: 跳转期间视频可能会卡顿或显示空白" 返回值注释 = "正在跳转返回真,否则返回假" @禁止流程检查 = 真>
  342.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  343.     {
  344.         如果真 (实例ID < 1)
  345.         {
  346.             实例ID = 对象实例ID
  347.         }

  348.         @ return MPV_IsSeeking(@<实例ID>);
  349.     }

  350.     方法 是否文件结束 <公开 类型 = 逻辑型 注释 = "检查文件结束 - 检查是否已播放到文件末尾" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 真=已到文件末尾,假=未到末尾"
  351.             注释 = "注意: 文件结束后播放器会自动进入暂停或停止状态" 注释 = "注意: 对于直播流等无限长度媒体,此方法可能始终返回假"
  352.             注释 = "注意: 循环播放模式下,文件结束后会重新开始,此方法可能不会返回真" 注释 = "应用场景: 用于自动播放下一集或显示播放完成提示" 返回值注释 = "文件结束返回真,否则返回假"
  353.             @禁止流程检查 = 真>
  354.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  355.     {
  356.         如果真 (实例ID < 1)
  357.         {
  358.             实例ID = 对象实例ID
  359.         }

  360.         @ return MPV_IsEOF(@<实例ID>);
  361.     }

  362.     方法 播放列表下一曲 <公开 类型 = 文本型 注释 = "播放列表下一曲 - 切换到播放列表中的下一个项目" 注释 = "参数 实例ID: 播放器实例ID"
  363.             注释 = "注意: 需要播放列表中有多个项目,否则操作无效" 注释 = "注意: 如果当前是最后一个项目,可能会循环到第一个项目或停止播放" 注释 = "注意: 切换后会立即开始播放新的项目"
  364.             注释 = "返回值格式: status:success|action:playlist_next 或 status:failed|error:错误信息" 返回值注释 = "返回操作状态信息"
  365.             @禁止流程检查 = 真>
  366.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  367.     {
  368.         如果真 (实例ID < 1)
  369.         {
  370.             实例ID = 对象实例ID
  371.         }

  372.         @ return MPV_PlaylistNext(@<实例ID>);
  373.     }

  374.     方法 播放列表上一曲 <公开 类型 = 文本型 注释 = "播放列表上一曲 - 切换到播放列表中的上一个项目" 注释 = "参数 实例ID: 播放器实例ID"
  375.             注释 = "注意: 需要播放列表中有多个项目,否则操作无效" 注释 = "注意: 如果当前是第一个项目,可能会循环到最后一个项目或停止播放" 注释 = "注意: 切换后会立即开始播放新的项目"
  376.             注释 = "返回值格式: status:success|action:playlist_prev 或 status:failed|error:错误信息" 返回值注释 = "返回操作状态信息"
  377.             @禁止流程检查 = 真>
  378.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  379.     {
  380.         如果真 (实例ID < 1)
  381.         {
  382.             实例ID = 对象实例ID
  383.         }

  384.         @ return MPV_PlaylistPrev(@<实例ID>);
  385.     }

  386.     方法 播放列表播放指定项 <公开 类型 = 文本型 注释 = "播放列表播放指定项 - 直接播放播放列表中指定索引的项目" 注释 = "参数 实例ID: 播放器实例ID"
  387.             注释 = "参数 索引: 要播放的项目在播放列表中的索引位置,从0开始" 注释 = "注意: 索引必须在0到播放列表数量-1的范围内" 注释 = "注意: 如果索引超出范围,操作会失败"
  388.             注释 = "注意: 切换后会立即开始播放指定的项目"
  389.             注释 = "返回值格式: status:success|action:playlist_play_index 或 status:failed|error:错误信息" 返回值注释 = "返回操作状态信息"
  390.             @禁止流程检查 = 真>
  391.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  392.     参数 索引 <类型 = 整数 注释 = "要播放的项目在播放列表中的索引位置,从0开始">
  393.     {
  394.         如果真 (实例ID < 1)
  395.         {
  396.             实例ID = 对象实例ID
  397.         }

  398.         @ return MPV_PlaylistPlayIndex(@<实例ID>, @<索引>);
  399.     }

  400.     方法 播放列表清空 <公开 类型 = 文本型 注释 = "播放列表清空 - 清空播放列表中的所有项目" 注释 = "参数 实例ID: 播放器实例ID"
  401.             注释 = "注意: 清空播放列表不会停止当前正在播放的项目" 注释 = "注意: 当前播放的项目会继续播放直到结束" 注释 = "注意: 播放列表清空后,播放列表数量方法将返回0"
  402.             注释 = "返回值格式: status:success|action:playlist_cleared 或 status:failed|error:错误信息" 返回值注释 = "返回操作状态信息"
  403.             @禁止流程检查 = 真>
  404.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  405.     {
  406.         如果真 (实例ID < 1)
  407.         {
  408.             实例ID = 对象实例ID
  409.         }

  410.         @ return MPV_PlaylistClear(@<实例ID>);
  411.     }

  412.     方法 播放列表添加 <公开 类型 = 文本型 注释 = "播放列表添加 - 向播放列表末尾添加一个新的媒体文件" 注释 = "参数 实例ID: 播放器实例ID"
  413.             注释 = "参数 文件路径: 要添加到播放列表的媒体文件路径" 注释 = "添加方式: 添加到播放列表末尾" 注释 = "注意: 文件路径必须是有效的媒体文件路径"
  414.             注释 = "注意: 添加成功后,播放列表数量会增加1" 注释 = "注意: 添加操作不会影响当前播放状态"
  415.             注释 = "返回值格式: status:success|action:playlist_added 或 status:failed|error:错误信息" 返回值注释 = "返回操作状态信息"
  416.             @禁止流程检查 = 真>
  417.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  418.     参数 文件路径 <类型 = 文本型 注释 = "要添加到播放列表的媒体文件路径">
  419.     {
  420.         如果真 (实例ID < 1)
  421.         {
  422.             实例ID = 对象实例ID
  423.         }

  424.         @ return MPV_PlaylistAdd(@<实例ID>, @<文件路径>);
  425.     }

  426.     方法 播放列表删除 <公开 类型 = 文本型 注释 = "播放列表删除 - 从播放列表中删除指定索引的项目" 注释 = "参数 实例ID: 播放器实例ID"
  427.             注释 = "参数 索引: 要删除的项目在播放列表中的索引位置,从0开始" 注释 = "注意: 索引必须在0到播放列表数量-1的范围内"
  428.             注释 = "注意: 如果删除的是当前正在播放的项目,播放可能会停止" 注释 = "注意: 删除后播放列表中的后续项目索引会前移"
  429.             注释 = "返回值格式: status:success|action:playlist_removed 或 status:failed|error:错误信息" 返回值注释 = "返回操作状态信息"
  430.             @禁止流程检查 = 真>
  431.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  432.     参数 索引 <类型 = 整数 注释 = "要删除的项目在播放列表中的索引位置,从0开始">
  433.     {
  434.         如果真 (实例ID < 1)
  435.         {
  436.             实例ID = 对象实例ID
  437.         }

  438.         @ return MPV_PlaylistRemove(@<实例ID>, @<索引>);
  439.     }

  440.     方法 播放列表随机 <公开 类型 = 文本型 注释 = "播放列表随机 - 随机打乱播放列表中项目的顺序" 注释 = "参数 实例ID: 播放器实例ID"
  441.             注释 = "注意: 需要播放列表中有多个项目,否则操作无效" 注释 = "注意: 随机化后当前播放位置可能会改变" 注释 = "注意: 随机化操作不可逆,无法恢复原有顺序"
  442.             注释 = "返回值格式: status:success|action:playlist_shuffled 或 status:failed|error:错误信息" 返回值注释 = "返回操作状态信息"
  443.             @禁止流程检查 = 真>
  444.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  445.     {
  446.         如果真 (实例ID < 1)
  447.         {
  448.             实例ID = 对象实例ID
  449.         }

  450.         @ return MPV_PlaylistShuffle(@<实例ID>);
  451.     }

  452.     方法 取播放列表数量 <公开 类型 = 整数 注释 = "取播放列表数量 - 获取播放列表中项目的总数" 注释 = "参数 实例ID: 播放器实例ID"
  453.             注释 = "返回值: 播放列表中项目的数量,0表示空列表" 注释 = "注意: 只统计成功添加到播放列表的项目" 注释 = "注意: 如果获取失败,返回-1"
  454.             注释 = "注意: 当前播放的项目也包含在数量中" 返回值注释 = "成功返回播放列表项目数量,失败返回-1" @禁止流程检查 = 真>
  455.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  456.     {
  457.         如果真 (实例ID < 1)
  458.         {
  459.             实例ID = 对象实例ID
  460.         }

  461.         @ return MPV_GetPlaylistCount(@<实例ID>);
  462.     }

  463.     方法 取播放列表项 <公开 类型 = 文本型 注释 = "取播放列表项 - 获取播放列表中指定索引项目的文件路径" 注释 = "参数 实例ID: 播放器实例ID"
  464.             注释 = "参数 索引: 要获取的项目在播放列表中的索引位置,从0开始" 注释 = "返回值: 指定索引位置项目的完整文件路径" 注释 = "注意: 索引必须在0到播放列表数量-1的范围内"
  465.             注释 = "注意: 如果索引超出范围或获取失败,返回错误信息" 注释 = "返回值格式: 文件路径字符串 或 status:failed|error:错误信息"
  466.             返回值注释 = "成功返回文件路径,失败返回错误信息" @禁止流程检查 = 真>
  467.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  468.     参数 索引 <类型 = 整数 注释 = "要获取的项目在播放列表中的索引位置,从0开始">
  469.     {
  470.         如果真 (实例ID < 1)
  471.         {
  472.             实例ID = 对象实例ID
  473.         }

  474.         @ return MPV_GetPlaylistItem(@<实例ID>, @<索引>);
  475.     }

  476.     方法 置播放速度 <公开 类型 = 逻辑型 注释 = "设置播放速度 - 设置媒体的播放速度倍率" 注释 = "参数 实例ID: 播放器实例ID"
  477.             注释 = "参数 速度: 播放速度倍率,必须大于0,1.0为正常速度" 注释 = "速度范围: 建议0.25(1/4倍速)到4.0(4倍速)之间"
  478.             注释 = "应用场景: 快速浏览、慢速学习、语音变速等" 注释 = "注意: 速度设置会影响音频和视频的播放" 注释 = "注意: 极端的速度值可能导致音视频不同步或播放异常"
  479.             注释 = "注意: 速度变化是立即生效的" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  480.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  481.     参数 速度 <类型 = 小数 注释 = "播放速度倍率,必须大于0,1.0为正常速度">
  482.     {
  483.         如果真 (实例ID < 1)
  484.         {
  485.             实例ID = 对象实例ID
  486.         }

  487.         @ return MPV_SetPlaybackSpeed(@<实例ID>, @<速度>);
  488.     }

  489.     方法 取播放速度 <公开 类型 = 小数 注释 = "取播放速度 - 获取当前的播放速度倍率" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 当前播放速度倍率,1.0为正常速度"
  490.             注释 = "注意: 如果获取失败,返回默认值1.0" 注释 = "注意: 返回值是浮点数,包含小数部分" 注释 = "注意: 某些特殊情况下实际播放速度可能与设置值有微小差异"
  491.             返回值注释 = "成功返回当前播放速度倍率,失败返回1.0" @禁止流程检查 = 真>
  492.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  493.     {
  494.         如果真 (实例ID < 1)
  495.         {
  496.             实例ID = 对象实例ID
  497.         }

  498.         @ return MPV_GetPlaybackSpeed(@<实例ID>);
  499.     }

  500.     方法 置循环播放 <公开 类型 = 逻辑型 注释 = "设置循环播放 - 设置是否循环播放当前文件" 注释 = "参数 实例ID: 播放器实例ID"
  501.             注释 = "参数 是否循环: 是否循环播放,真=循环播放,假=不循环" 注释 = "循环方式: 文件播放完毕后自动从头开始重新播放" 注释 = "应用场景: 背景音乐、宣传视频、展示循环等"
  502.             注释 = "注意: 循环播放只影响当前文件,不影响播放列表" 注释 = "注意: 设置后立即生效,影响后续播放" 注释 = "注意: 循环播放时,文件结束事件可能不会触发"
  503.             返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  504.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  505.     参数 是否循环 <类型 = 逻辑型 注释 = "是否循环播放,真=循环播放,假=不循环">
  506.     {
  507.         如果真 (实例ID < 1)
  508.         {
  509.             实例ID = 对象实例ID
  510.         }

  511.         @ return MPV_SetLoop(@<实例ID>, @<是否循环>);
  512.     }

  513.     方法 取循环播放 <公开 类型 = 逻辑型 注释 = "取循环播放状态 - 获取当前的循环播放设置状态" 注释 = "参数 实例ID: 播放器实例ID"
  514.             注释 = "返回值: 当前循环播放状态,真=循环播放,假=不循环" 注释 = "注意: 如果获取失败,返回默认值假" 注释 = "注意: 返回值反映的是设置状态,不是实际播放行为"
  515.             返回值注释 = "循环播放返回真,不循环返回假" @禁止流程检查 = 真>
  516.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  517.     {
  518.         如果真 (实例ID < 1)
  519.         {
  520.             实例ID = 对象实例ID
  521.         }

  522.         @ return MPV_GetLoop(@<实例ID>);
  523.     }

  524.     方法 置文件循环 <公开 类型 = 逻辑型 注释 = "设置文件循环范围 - 设置文件中特定的循环时间段" 注释 = "参数 实例ID: 播放器实例ID"
  525.             注释 = "参数 循环范围: 循环时间段描述字符串,支持AB循环点格式" 注释 = "格式示例: 10 20 表示从10秒到20秒循环"
  526.             注释 = "格式示例: a 15 b 25 表示设置A点为15秒,B点为25秒" 注释 = "清除循环: 使用空字符串或no可以清除循环设置" 注释 = "应用场景: 音乐练习、舞蹈学习、语言重复等"
  527.             注释 = "注意: 需要了解AB循环的语法格式" 注释 = "注意: 循环范围必须在文件时间范围内" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  528.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  529.     参数 循环范围 <类型 = 文本型 注释 = "循环时间段描述字符串,支持AB循环点格式">
  530.     {
  531.         如果真 (实例ID < 1)
  532.         {
  533.             实例ID = 对象实例ID
  534.         }

  535.         @ return MPV_SetLoopFile(@<实例ID>, @<循环范围>);
  536.     }

  537.     方法 置AB循环 <公开 类型 = 逻辑型 注释 = "设置AB循环点 - 设置文件中A点和B点的具体时间位置" 注释 = "参数 实例ID: 播放器实例ID"
  538.             注释 = "参数 点A: 循环开始时间点,单位秒" 注释 = "参数 点B: 循环结束时间点,单位秒" 注释 = "循环行为: 播放到B点后自动跳回到A点继续播放"
  539.             注释 = "时间要求: 点A应该小于点B,且都在文件时间范围内" 注释 = "清除循环: 将点A和点B都设置为0可以清除AB循环" 注释 = "应用场景: 精确的学习循环、片段重复播放等"
  540.             注释 = "注意: 设置后立即生效" 注释 = "注意: AB循环与文件循环是同一功能的不同设置方式" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  541.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  542.     参数 点A <类型 = 小数 注释 = "循环开始时间点,单位秒">
  543.     参数 点B <类型 = 小数 注释 = "循环结束时间点,单位秒">
  544.     {
  545.         @ return MPV_SetABLoop(@<实例ID>, @<点A>, @<点B>);
  546.     }

  547.     方法 置全屏 <公开 类型 = 逻辑型 注释 = "设置全屏状态 - 设置播放器是否进入全屏模式" 注释 = "参数 实例ID: 播放器实例ID"
  548.             注释 = "参数 全屏: 是否全屏,真=进入全屏,假=退出全屏" 注释 = "全屏行为: 视频会占据整个屏幕,隐藏其他窗口元素" 注释 = "退出方式: 可以按ESC键或再次调用此方法退出全屏"
  549.             注释 = "注意: 全屏状态变化可能需要一些时间" 注释 = "注意: 在某些系统上全屏可能不会立即生效" 注释 = "注意: 全屏只影响视频显示,不影响播放控制"
  550.             返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  551.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  552.     参数 全屏 <类型 = 逻辑型 注释 = "是否全屏,真=进入全屏,假=退出全屏">
  553.     {
  554.         如果真 (实例ID < 1)
  555.         {
  556.             实例ID = 对象实例ID
  557.         }

  558.         @ return MPV_SetFullscreen(@<实例ID>, @<全屏>);
  559.     }

  560.     方法 取全屏 <公开 类型 = 逻辑型 注释 = "取全屏状态 - 获取播放器当前的全屏状态" 注释 = "参数 实例ID: 播放器实例ID"
  561.             注释 = "返回值: 当前全屏状态,真=全屏模式,假=窗口模式" 注释 = "注意: 如果获取失败,返回默认值假" 注释 = "注意: 全屏状态可能因为用户操作(如按ESC)而改变"
  562.             注释 = "注意: 返回值反映的是MPV内部的全屏状态" 返回值注释 = "全屏模式返回真,窗口模式返回假" @禁止流程检查 = 真>
  563.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  564.     {
  565.         如果真 (实例ID < 1)
  566.         {
  567.             实例ID = 对象实例ID
  568.         }

  569.         @ return MPV_GetFullscreen(@<实例ID>);
  570.     }

  571.     方法 截图 <公开 类型 = 逻辑型 注释 = "截图 - 截取当前视频画面并保存为图片文件" 注释 = "参数 实例ID: 播放器实例ID"
  572.             注释 = "参数 文件名: 截图保存的文件路径,支持常见图片格式" 注释 = "支持格式: JPEG, PNG, BMP等主流图片格式" 注释 = "截图内容: 纯视频画面,不包含字幕和OSD元素"
  573.             注释 = "图片质量: 与原视频分辨率相同的无损截图" 注释 = "注意: 文件路径必须包含正确的文件扩展名" 注释 = "注意: 如果文件已存在,可能会被覆盖"
  574.             注释 = "注意: 截图操作需要视频正在播放或有画面显示" 返回值注释 = "截图成功返回真,失败返回假" @禁止流程检查 = 真>
  575.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  576.     参数 文件名 <类型 = 文本型 注释 = "截图保存的文件路径,支持常见图片格式">
  577.     {
  578.         如果真 (实例ID < 1)
  579.         {
  580.             实例ID = 对象实例ID
  581.         }

  582.         @ return MPV_TakeScreenshot(@<实例ID>, @<文件名>);
  583.     }

  584.     方法 截图含字幕 <公开 类型 = 逻辑型 注释 = "截图含字幕 - 截取当前视频画面(包含字幕)并保存为图片文件" 注释 = "参数 实例ID: 播放器实例ID"
  585.             注释 = "参数 文件名: 截图保存的文件路径,支持常见图片格式" 注释 = "支持格式: JPEG, PNG, BMP等主流图片格式" 注释 = "截图内容: 视频画面加上当前显示的字幕"
  586.             注释 = "应用场景: 制作带字幕的剧照、学习资料等" 注释 = "注意: 文件路径必须包含正确的文件扩展名" 注释 = "注意: 如果文件已存在,可能会被覆盖"
  587.             注释 = "注意: 只有在字幕可见状态下,截图才会包含字幕" 注释 = "注意: 截图操作需要视频正在播放或有画面显示" 返回值注释 = "截图成功返回真,失败返回假" @禁止流程检查 = 真>
  588.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  589.     参数 文件名 <类型 = 文本型 注释 = "截图保存的文件路径,支持常见图片格式">
  590.     {
  591.         如果真 (实例ID < 1)
  592.         {
  593.             实例ID = 对象实例ID
  594.         }

  595.         @ return MPV_TakeScreenshotSubtitles(@<实例ID>, @<文件名>);
  596.     }

  597.     方法 置视频旋转 <公开 类型 = 逻辑型 注释 = "设置视频旋转 - 设置视频画面的旋转角度" 注释 = "参数 实例ID: 播放器实例ID"
  598.             注释 = "参数 旋转角度: 旋转角度,必须是90的倍数(0,90,180,270)" 注释 = "旋转方向: 正值表示顺时针旋转" 注释 = "应用场景: 纠正方向错误的视频、特殊显示效果等"
  599.             注释 = "注意: 旋转操作会增加CPU/GPU负担" 注释 = "注意: 旋转后视频的宽高比可能会改变" 注释 = "注意: 设置后立即生效,影响后续播放"
  600.             返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  601.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  602.     参数 旋转角度 <类型 = 整数 注释 = "旋转角度,必须是90的倍数(0,90,180,270)">
  603.     {
  604.         如果真 (实例ID < 1)
  605.         {
  606.             实例ID = 对象实例ID
  607.         }

  608.         @ return MPV_SetVideoRotation(@<实例ID>, @<旋转角度>);
  609.     }

  610.     方法 置视频缩放 <公开 类型 = 逻辑型 注释 = "设置视频缩放 - 设置视频画面的缩放比例" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 缩放比例: 缩放比例,1.0为原始大小"
  611.             注释 = "缩放范围: 建议0.1到10.0之间" 注释 = "缩放方式: 等比缩放,保持宽高比不变" 注释 = "应用场景: 放大查看细节、缩小查看全景等"
  612.             注释 = "注意: 缩放操作可能会影响视频质量" 注释 = "注意: 过大的缩放值可能导致画面模糊" 注释 = "注意: 设置后立即生效" 返回值注释 = "设置成功返回真,失败返回假"
  613.             @禁止流程检查 = 真>
  614.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  615.     参数 缩放比例 <类型 = 小数 注释 = "缩放比例,1.0为原始大小">
  616.     {
  617.         如果真 (实例ID < 1)
  618.         {
  619.             实例ID = 对象实例ID
  620.         }

  621.         @ return MPV_SetVideoScale(@<实例ID>, @<缩放比例>);
  622.     }

  623.     方法 置视频位置 <公开 类型 = 逻辑型 注释 = "设置视频位置 - 设置视频画面在窗口中的显示位置" 注释 = "参数 实例ID: 播放器实例ID"
  624.             注释 = "参数 坐标X: 视频画面左上角的X坐标" 注释 = "参数 坐标Y: 视频画面左上角的Y坐标" 注释 = "坐标基准: 以窗口客户区左上角为原点(0,0)"
  625.             注释 = "应用场景: 画中画效果、多视频布局等" 注释 = "注意: 坐标值可以是负数,表示部分画面在窗口外" 注释 = "注意: 需要结合视频缩放一起使用才能看到效果"
  626.             注释 = "注意: 设置后立即生效" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  627.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  628.     参数 坐标X <类型 = 整数 注释 = "视频画面左上角的X坐标">
  629.     参数 坐标Y <类型 = 整数 注释 = "视频画面左上角的Y坐标">
  630.     {
  631.         如果真 (实例ID < 1)
  632.         {
  633.             实例ID = 对象实例ID
  634.         }

  635.         @ return MPV_SetVideoPos(@<实例ID>, @<坐标X>, @<坐标Y>);
  636.     }

  637.     方法 置视频大小 <公开 类型 = 逻辑型 注释 = "设置视频大小 - 设置视频画面的显示尺寸" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 宽度: 视频画面的显示宽度"
  638.             注释 = "参数 高度: 视频画面的显示高度" 注释 = "设置方式: 强制设置视频渲染尺寸" 注释 = "注意: 此设置会覆盖自动缩放和宽高比设置"
  639.             注释 = "注意: 设置的值是逻辑尺寸,实际可能受窗口限制" 注释 = "注意: 设置后立即生效" 注释 = "注意: 不保证所有渲染后端都支持此功能" 返回值注释 = "设置成功返回真,失败返回假"
  640.             @禁止流程检查 = 真>
  641.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  642.     参数 宽度 <类型 = 整数 注释 = "视频画面的显示宽度">
  643.     参数 高度 <类型 = 整数 注释 = "视频画面的显示高度">
  644.     {
  645.         如果真 (实例ID < 1)
  646.         {
  647.             实例ID = 对象实例ID
  648.         }

  649.         @ return MPV_SetVideoSize(@<实例ID>, @<宽度>, @<高度>);
  650.     }

  651.     方法 置对比度 <公开 类型 = 逻辑型 注释 = "设置对比度 - 设置视频画面的对比度" 注释 = "参数 实例ID: 播放器实例ID"
  652.             注释 = "参数 对比度: 对比度值,-100到100之间,0为原始对比度" 注释 = "效果说明: 正值增加对比度,负值减少对比度" 注释 = "应用场景: 调整画面明暗对比,改善视觉效果"
  653.             注释 = "注意: 对比度调整会影响画面细节表现" 注释 = "注意: 极端值可能导致画面过曝或过暗" 注释 = "注意: 设置后立即生效" 返回值注释 = "设置成功返回真,失败返回假"
  654.             @禁止流程检查 = 真>
  655.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  656.     参数 对比度 <类型 = 整数 注释 = "对比度值,-100到100之间,0为原始对比度">
  657.     {
  658.         如果真 (实例ID < 1)
  659.         {
  660.             实例ID = 对象实例ID
  661.         }

  662.         @ return MPV_SetContrast(@<实例ID>, @<对比度>);
  663.     }

  664.     方法 置亮度 <公开 类型 = 逻辑型 注释 = "设置亮度 - 设置视频画面的亮度" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 亮度: 亮度值,-100到100之间,0为原始亮度"
  665.             注释 = "效果说明: 正值增加亮度,负值减少亮度" 注释 = "应用场景: 调整画面明暗程度,适应不同环境" 注释 = "注意: 亮度调整不会改变画面的对比度"
  666.             注释 = "注意: 极端值可能导致画面过曝或全黑" 注释 = "注意: 设置后立即生效" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  667.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  668.     参数 亮度 <类型 = 整数 注释 = "亮度值,-100到100之间,0为原始亮度">
  669.     {
  670.         如果真 (实例ID < 1)
  671.         {
  672.             实例ID = 对象实例ID
  673.         }

  674.         @ return MPV_SetBrightness(@<实例ID>, @<亮度>);
  675.     }

  676.     方法 置饱和度 <公开 类型 = 逻辑型 注释 = "设置饱和度 - 设置视频画面的色彩饱和度" 注释 = "参数 实例ID: 播放器实例ID"
  677.             注释 = "参数 饱和度: 饱和度值,-100到100之间,0为原始饱和度" 注释 = "效果说明: 正值增加色彩鲜艳度,负值减少色彩直到灰度" 注释 = "应用场景: 调整画面色彩强度,创造特殊效果"
  678.             注释 = "注意: 设置为-100时画面变为黑白" 注释 = "注意: 设置后立即生效" 注释 = "注意: 饱和度调整会影响所有颜色" 返回值注释 = "设置成功返回真,失败返回假"
  679.             @禁止流程检查 = 真>
  680.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  681.     参数 饱和度 <类型 = 整数 注释 = "饱和度值,-100到100之间,0为原始饱和度">
  682.     {
  683.         如果真 (实例ID < 1)
  684.         {
  685.             实例ID = 对象实例ID
  686.         }

  687.         @ return MPV_SetSaturation(@<实例ID>, @<饱和度>);
  688.     }

  689.     方法 置伽马值 <公开 类型 = 逻辑型 注释 = "设置伽马值 - 设置视频画面的伽马校正值" 注释 = "参数 实例ID: 播放器实例ID"
  690.             注释 = "参数 伽马值: 伽马值,-100到100之间,0为原始伽马" 注释 = "效果说明: 调整画面的中间色调,影响整体色调曲线" 注释 = "应用场景: 专业色彩校正,改善显示效果"
  691.             注释 = "注意: 伽马调整是非线性的色彩变换" 注释 = "注意: 需要一定的色彩知识才能正确使用" 注释 = "注意: 设置后立即生效" 返回值注释 = "设置成功返回真,失败返回假"
  692.             @禁止流程检查 = 真>
  693.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  694.     参数 伽马值 <类型 = 整数 注释 = "伽马值,-100到100之间,0为原始伽马">
  695.     {
  696.         如果真 (实例ID < 1)
  697.         {
  698.             实例ID = 对象实例ID
  699.         }

  700.         @ return MPV_SetGamma(@<实例ID>, @<伽马值>);
  701.     }

  702.     方法 置色调 <公开 类型 = 逻辑型 注释 = "设置色调 - 设置视频画面的色调(色相)" 注释 = "参数 实例ID: 播放器实例ID"
  703.             注释 = "参数 色调: 色调值,-100到100之间,0为原始色调" 注释 = "效果说明: 调整画面的整体色彩倾向" 注释 = "应用场景: 色彩校正,创造特殊色彩效果"
  704.             注释 = "注意: 色调调整会改变所有颜色的色相" 注释 = "注意: 需要一定的色彩知识才能正确使用" 注释 = "注意: 设置后立即生效" 返回值注释 = "设置成功返回真,失败返回假"
  705.             @禁止流程检查 = 真>
  706.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  707.     参数 色调 <类型 = 整数 注释 = "色调值,-100到100之间,0为原始色调">
  708.     {
  709.         如果真 (实例ID < 1)
  710.         {
  711.             实例ID = 对象实例ID
  712.         }

  713.         @ return MPV_SetHue(@<实例ID>, @<色调>);
  714.     }

  715.     方法 置去交错 <公开 类型 = 逻辑型 注释 = "设置去交错模式 - 设置视频去交错处理模式" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 模式: 去交错模式字符串"
  716.             注释 = "模式选项: no(关闭), yes(自动), auto(自动检测)" 注释 = "模式选项: bob(Bob去交错), weave(Weave去交错)等"
  717.             注释 = "应用场景: 处理隔行扫描视频,消除交错线" 注释 = "注意: 只对隔行扫描视频有效,逐行扫描视频无需去交错" 注释 = "注意: 去交错会增加CPU/GPU负担"
  718.             注释 = "注意: 设置后立即生效" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  719.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  720.     参数 模式 <类型 = 文本型 注释 = "去交错模式字符串">
  721.     {
  722.         如果真 (实例ID < 1)
  723.         {
  724.             实例ID = 对象实例ID
  725.         }

  726.         @ return MPV_SetDeinterlace(@<实例ID>, @<模式>);
  727.     }

  728.     方法 取视频属性 <公开 类型 = 文本型 注释 = "获取视频相关属性用于调试" 注释 = "参数 实例ID: 播放器实例ID" 返回值注释 = "返回视频属性信息" @禁止流程检查 = 真>
  729.     参数 实例ID <类型 = 变整数>
  730.     {
  731.         如果真 (实例ID < 1)
  732.         {
  733.             实例ID = 对象实例ID
  734.         }

  735.         @ return MPV_GetVideoProperties(@<实例ID>);
  736.     }

  737.     方法 取视频旋转 <公开 类型 = 整数 注释 = "获取当前视频旋转角度" 注释 = "参数 实例ID: 播放器实例ID" 返回值注释 = "成功返回旋转角度(0,90,180,270),失败返回-1"
  738.             @禁止流程检查 = 真>
  739.     参数 实例ID <类型 = 变整数>
  740.     {
  741.         如果真 (实例ID < 1)
  742.         {
  743.             实例ID = 对象实例ID
  744.         }

  745.         @ return MPV_GetVideoRotation(@<实例ID>);
  746.     }

  747.     方法 取视频宽高比 <公开 类型 = 文本型 注释 = "获取当前视频宽高比设置" 注释 = "参数 实例ID: 播放器实例ID" 返回值注释 = "返回宽高比状态信息" @禁止流程检查 = 真>
  748.     参数 实例ID <类型 = 变整数>
  749.     {
  750.         如果真 (实例ID < 1)
  751.         {
  752.             实例ID = 对象实例ID
  753.         }

  754.         @ return MPV_GetVideoAspect(@<实例ID>);
  755.     }

  756.     方法 置字幕可见 <公开 类型 = 逻辑型 注释 = "设置字幕可见性 - 设置字幕是否显示" 注释 = "参数 实例ID: 播放器实例ID"
  757.             注释 = "参数 可见: 是否显示字幕,真=显示字幕,假=隐藏字幕" 注释 = "控制范围: 影响所有字幕轨道的外部字幕和内嵌字幕" 注释 = "应用场景: 需要时显示字幕,不需要时隐藏"
  758.             注释 = "注意: 设置后立即生效" 注释 = "注意: 隐藏字幕不会卸载字幕文件" 注释 = "注意: 重新显示时会恢复之前的字幕状态" 返回值注释 = "设置成功返回真,失败返回假"
  759.             @禁止流程检查 = 真>
  760.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  761.     参数 可见 <类型 = 逻辑型 注释 = "是否显示字幕,真=显示字幕,假=隐藏字幕">
  762.     {
  763.         如果真 (实例ID < 1)
  764.         {
  765.             实例ID = 对象实例ID
  766.         }

  767.         @ return MPV_SetSubVisibility(@<实例ID>, @<可见>);
  768.     }

  769.     方法 取字幕可见 <公开 类型 = 逻辑型 注释 = "取字幕可见状态 - 获取字幕当前的显示状态" 注释 = "参数 实例ID: 播放器实例ID"
  770.             注释 = "返回值: 字幕显示状态,真=字幕可见,假=字幕隐藏" 注释 = "注意: 如果获取失败,返回默认值真" 注释 = "注意: 返回值反映的是设置状态,不是实际显示状态"
  771.             注释 = "注意: 即使返回真,也可能因为没有字幕文件而看不到字幕" 返回值注释 = "字幕可见返回真,隐藏返回假" @禁止流程检查 = 真>
  772.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  773.     {
  774.         如果真 (实例ID < 1)
  775.         {
  776.             实例ID = 对象实例ID
  777.         }

  778.         @ return MPV_GetSubVisibility(@<实例ID>);
  779.     }

  780.     方法 置字幕延迟 <公开 类型 = 逻辑型 注释 = "设置字幕延迟 - 设置字幕相对于视频的延迟时间" 注释 = "参数 实例ID: 播放器实例ID"
  781.             注释 = "参数 延迟: 字幕延迟时间,单位秒,正数表示字幕延迟,负数表示字幕提前" 注释 = "应用场景: 调整字幕与语音的同步" 注释 = "典型值: 一般调整范围在-5.0到+5.0秒之间"
  782.             注释 = "注意: 设置后立即生效,影响后续播放" 注释 = "注意: 延迟调整对所有字幕轨道都有效" 注释 = "注意: 某些特殊格式的字幕可能不支持延迟调整"
  783.             返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  784.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  785.     参数 延迟 <类型 = 小数 注释 = "字幕延迟时间,单位秒,正数=字幕延迟,负数=字幕提前">
  786.     {
  787.         如果真 (实例ID < 1)
  788.         {
  789.             实例ID = 对象实例ID
  790.         }

  791.         @ return MPV_SetSubDelay(@<实例ID>, @<延迟>);
  792.     }

  793.     方法 取字幕延迟 <公开 类型 = 小数 注释 = "取字幕延迟 - 获取当前设置的字幕延迟时间" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 当前字幕延迟时间,单位秒"
  794.             注释 = "注意: 返回值为0表示无延迟" 注释 = "注意: 如果获取失败,返回默认值0.0" 注释 = "注意: 返回值反映的是设置值,不是实际播放时的精确延迟"
  795.             返回值注释 = "成功返回字幕延迟时间(秒),失败返回0.0" @禁止流程检查 = 真>
  796.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  797.     {
  798.         如果真 (实例ID < 1)
  799.         {
  800.             实例ID = 对象实例ID
  801.         }

  802.         @ return MPV_GetSubDelay(@<实例ID>);
  803.     }

  804.     方法 加载字幕 <公开 类型 = 逻辑型 注释 = "加载字幕文件 - 加载外部的字幕文件" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 字幕路径: 字幕文件的路径,支持常见字幕格式"
  805.             注释 = "支持格式: SRT, ASS, SSA, VTT等主流字幕格式" 注释 = "加载方式: 作为外部字幕轨道加载,不影响内嵌字幕" 注释 = "应用场景: 添加外挂字幕、替换原有字幕等"
  806.             注释 = "注意: 字幕文件必须是有效的字幕格式" 注释 = "注意: 可以同时加载多个字幕文件" 注释 = "注意: 加载后需要设置字幕轨道才能显示" 返回值注释 = "加载成功返回真,失败返回假"
  807.             @禁止流程检查 = 真>
  808.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  809.     参数 字幕路径 <类型 = 文本型 注释 = "字幕文件的路径,支持常见字幕格式">
  810.     {
  811.         如果真 (实例ID < 1)
  812.         {
  813.             实例ID = 对象实例ID
  814.         }

  815.         @ return MPV_LoadSubtitle(@<实例ID>, @<字幕路径>);
  816.     }

  817.     方法 移除字幕 <公开 类型 = 逻辑型 注释 = "移除字幕文件 - 移除已加载的外部字幕文件" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 字幕路径: 要移除的字幕文件路径"
  818.             注释 = "移除方式: 根据文件路径匹配移除对应的字幕轨道" 注释 = "应用场景: 清理不再需要的外挂字幕" 注释 = "注意: 只能移除通过加载字幕方法添加的外部字幕"
  819.             注释 = "注意: 不能移除媒体文件内嵌的字幕轨道" 注释 = "注意: 移除后如果该字幕正在显示,显示会停止" 返回值注释 = "移除成功返回真,失败返回假" @禁止流程检查 = 真>
  820.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  821.     参数 字幕路径 <类型 = 文本型 注释 = "要移除的字幕文件路径">
  822.     {
  823.         如果真 (实例ID < 1)
  824.         {
  825.             实例ID = 对象实例ID
  826.         }

  827.         @ return MPV_RemoveSubtitle(@<实例ID>, @<字幕路径>);
  828.     }

  829.     方法 置字幕缩放 <公开 类型 = 逻辑型 注释 = "设置字幕缩放 - 设置字幕文字的缩放比例" 注释 = "参数 实例ID: 播放器实例ID"
  830.             注释 = "参数 缩放比例: 字幕缩放比例,1.0为原始大小" 注释 = "缩放范围: 建议0.1到10.0之间" 注释 = "缩放方式: 等比缩放,影响所有字幕元素"
  831.             注释 = "应用场景: 调整字幕大小以适应不同分辨率和观看距离" 注释 = "注意: 设置后立即生效" 注释 = "注意: 过大的缩放值可能导致字幕超出屏幕"
  832.             注释 = "注意: 某些字幕格式可能有最小/最大尺寸限制" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  833.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  834.     参数 缩放比例 <类型 = 小数 注释 = "字幕缩放比例,1.0为原始大小">
  835.     {
  836.         如果真 (实例ID < 1)
  837.         {
  838.             实例ID = 对象实例ID
  839.         }

  840.         @ return MPV_SetSubScale(@<实例ID>, @<缩放比例>);
  841.     }

  842.     方法 置字幕位置 <公开 类型 = 逻辑型 注释 = "设置字幕位置 - 设置字幕在屏幕中的垂直位置" 注释 = "参数 实例ID: 播放器实例ID"
  843.             注释 = "参数 位置: 字幕垂直位置,0-100之间" 注释 = "位置说明: 0=屏幕顶部,100=屏幕底部,50=屏幕中间" 注释 = "应用场景: 调整字幕位置避免遮挡重要画面"
  844.             注释 = "注意: 设置后立即生效" 注释 = "注意: 实际位置还受字幕格式和字体大小影响" 注释 = "注意: 某些字幕格式可能有固定的位置设置" 返回值注释 = "设置成功返回真,失败返回假"
  845.             @禁止流程检查 = 真>
  846.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  847.     参数 位置 <类型 = 整数 注释 = "字幕垂直位置,0-100之间">
  848.     {
  849.         如果真 (实例ID < 1)
  850.         {
  851.             实例ID = 对象实例ID
  852.         }

  853.         @ return MPV_SetSubPos(@<实例ID>, @<位置>);
  854.     }

  855.     方法 置字幕颜色 <公开 类型 = 逻辑型 注释 = "设置字幕颜色 - 设置字幕文字的颜色" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 颜色: 颜色值字符串,支持多种颜色格式"
  856.             注释 = "颜色格式: #RRGGBB(十六进制), red(颜色名)" 注释 = "颜色格式: rgb(R,G,B), hsl(H,S,L)等" 注释 = "应用场景: 自定义字幕外观,提高可读性"
  857.             注释 = "注意: 设置后立即生效" 注释 = "注意: 某些字幕格式可能覆盖此颜色设置" 注释 = "注意: 需要了解颜色格式语法" 返回值注释 = "设置成功返回真,失败返回假"
  858.             @禁止流程检查 = 真>
  859.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  860.     参数 颜色 <类型 = 文本型 注释 = "颜色值字符串,支持多种颜色格式">
  861.     {
  862.         如果真 (实例ID < 1)
  863.         {
  864.             实例ID = 对象实例ID
  865.         }

  866.         @ return MPV_SetSubColor(@<实例ID>, @<颜色>);
  867.     }

  868.     方法 置字幕字体 <公开 类型 = 逻辑型 注释 = "设置字幕字体 - 设置字幕文字的字体" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "参数 字体名称: 字体名称字符串"
  869.             注释 = "字体格式: 系统安装的字体名称,如 微软雅黑, Arial" 注释 = "应用场景: 更改字幕字体,改善可读性或美观性" 注释 = "注意: 字体必须在系统中已安装"
  870.             注释 = "注意: 设置后立即生效" 注释 = "注意: 某些字幕格式可能覆盖此字体设置" 返回值注释 = "设置成功返回真,失败返回假" @禁止流程检查 = 真>
  871.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  872.     参数 字体名称 <类型 = 文本型 注释 = "字体名称字符串">
  873.     {
  874.         如果真 (实例ID < 1)
  875.         {
  876.             实例ID = 对象实例ID
  877.         }

  878.         @ return MPV_SetSubFont(@<实例ID>, @<字体名称>);
  879.     }

  880.     方法 置字幕字体大小 <公开 类型 = 逻辑型 注释 = "设置字幕字体大小 - 设置字幕文字的字体大小" 注释 = "参数 实例ID: 播放器实例ID"
  881.             注释 = "参数 字体大小: 字体大小,单位取决于字体和渲染设置" 注释 = "大小范围: 建议8到72之间" 注释 = "应用场景: 调整字幕大小以适应不同分辨率和观看距离"
  882.             注释 = "注意: 设置后立即生效" 注释 = "注意: 字体大小设置可能会被字幕缩放覆盖" 注释 = "注意: 某些字幕格式有固定的字体大小" 返回值注释 = "设置成功返回真,失败返回假"
  883.             @禁止流程检查 = 真>
  884.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  885.     参数 字体大小 <类型 = 整数 注释 = "字体大小,单位取决于字体和渲染设置">
  886.     {
  887.         如果真 (实例ID < 1)
  888.         {
  889.             实例ID = 对象实例ID
  890.         }

  891.         @ return MPV_SetSubFontSize(@<实例ID>, @<字体大小>);
  892.     }

  893.     方法 取字幕文本 <公开 类型 = 文本型 注释 = "取字幕文本 - 获取当前显示的字幕文本内容" 注释 = "参数 实例ID: 播放器实例ID" 注释 = "返回值: 当前正在显示的字幕文本"
  894.             注释 = "应用场景: 字幕提取、实时翻译、字幕分析等" 注释 = "注意: 只有在字幕可见且有字幕显示时才有内容" 注释 = "注意: 返回的是纯文本,不包含格式信息"
  895.             注释 = "注意: 对于ASS/SSA等格式字幕,可能返回处理后的文本" 注释 = "返回值格式: 字幕文本内容 或 status:failed|error:错误信息"
  896.             返回值注释 = "成功返回字幕文本,失败返回错误信息" @禁止流程检查 = 真>
  897.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  898.     {
  899.         如果真 (实例ID < 1)
  900.         {
  901.             实例ID = 对象实例ID
  902.         }

  903.         @ return MPV_GetSubText(@<实例ID>);
  904.     }

  905.     方法 置音频轨道 <公开 类型 = 逻辑型 注释 = "设置音频轨道 - 切换当前使用的音频轨道" 注释 = "参数 实例ID 播放器实例ID"
  906.             注释 = "参数 轨道索引 要切换到的音频轨道索引 从1开始" 注释 = "注意 轨道索引必须存在于当前媒体的音频轨道列表中" 注释 = "注意 切换轨道后可能需要重新缓冲音频数据"
  907.             注释 = "注意 某些媒体文件可能只有一个音频轨道" 注释 = "注意 可以使用取音频轨道列表方法获取所有可用轨道" 返回值注释 = "切换成功返回真 失败返回假" @禁止流程检查 = 真>
  908.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  909.     参数 轨道索引 <类型 = 整数 注释 = "要切换到的音频轨道索引 从1开始">
  910.     {
  911.         如果真 (实例ID < 1)
  912.         {
  913.             实例ID = 对象实例ID
  914.         }

  915.         @ return MPV_SetAudioTrack(@<实例ID>, @<轨道索引>);
  916.     }

  917.     方法 取音频轨道 <公开 类型 = 整数 注释 = "取当前音频轨道 - 获取当前正在使用的音频轨道索引" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 当前音频轨道索引 从1开始"
  918.             注释 = "注意 如果获取失败 返回默认值1" 注释 = "注意 返回值1表示第一个音频轨道" 注释 = "注意 如果媒体没有音频轨道 返回值可能无效"
  919.             返回值注释 = "成功返回当前音频轨道索引 失败返回1" @禁止流程检查 = 真>
  920.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  921.     {
  922.         如果真 (实例ID < 1)
  923.         {
  924.             实例ID = 对象实例ID
  925.         }

  926.         @ return MPV_GetAudioTrack(@<实例ID>);
  927.     }

  928.     方法 取音频轨道列表 <公开 类型 = 文本型 注释 = "取音频轨道列表 - 获取所有可用的音频轨道信息" 注释 = "参数 实例ID 播放器实例ID"
  929.             注释 = "返回值 包含所有音频轨道ID的列表字符串" 注释 = "返回格式 status:success|tracks:[1,2,3] 或 status:failed|error:错误信息"
  930.             注释 = "应用场景 显示音频轨道选择菜单 支持多语言音频切换" 注释 = "注意 返回的是轨道ID列表 不是轨道名称" 注释 = "注意 轨道ID从1开始连续编号"
  931.             注释 = "注意 某些媒体文件可能没有音频轨道" 返回值注释 = "返回音频轨道列表信息" @禁止流程检查 = 真>
  932.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  933.     {
  934.         如果真 (实例ID < 1)
  935.         {
  936.             实例ID = 对象实例ID
  937.         }

  938.         @ return MPV_GetAudioTrackList(@<实例ID>);
  939.     }

  940.     方法 置视频轨道 <公开 类型 = 逻辑型 注释 = "设置视频轨道 - 切换当前使用的视频轨道" 注释 = "参数 实例ID 播放器实例ID"
  941.             注释 = "参数 轨道索引 要切换到的视频轨道索引 从1开始" 注释 = "注意 轨道索引必须存在于当前媒体的视频轨道列表中" 注释 = "注意 切换轨道后可能需要重新缓冲视频数据"
  942.             注释 = "注意 某些媒体文件可能只有一个视频轨道" 注释 = "注意 可以使用取视频轨道列表方法获取所有可用轨道" 返回值注释 = "切换成功返回真 失败返回假" @禁止流程检查 = 真>
  943.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  944.     参数 轨道索引 <类型 = 整数 注释 = "要切换到的视频轨道索引 从1开始">
  945.     {
  946.         如果真 (实例ID < 1)
  947.         {
  948.             实例ID = 对象实例ID
  949.         }

  950.         @ return MPV_SetVideoTrack(@<实例ID>, @<轨道索引>);
  951.     }

  952.     方法 取视频轨道 <公开 类型 = 整数 注释 = "取当前视频轨道 - 获取当前正在使用的视频轨道索引" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 当前视频轨道索引 从1开始"
  953.             注释 = "注意 如果获取失败 返回默认值1" 注释 = "注意 返回值1表示第一个视频轨道" 注释 = "注意 如果媒体没有视频轨道 返回值可能无效"
  954.             返回值注释 = "成功返回当前视频轨道索引 失败返回1" @禁止流程检查 = 真>
  955.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  956.     {
  957.         如果真 (实例ID < 1)
  958.         {
  959.             实例ID = 对象实例ID
  960.         }

  961.         @ return MPV_GetVideoTrack(@<实例ID>);
  962.     }

  963.     方法 取视频轨道列表 <公开 类型 = 文本型 注释 = "取视频轨道列表 - 获取所有可用的视频轨道信息" 注释 = "参数 实例ID 播放器实例ID"
  964.             注释 = "返回值 包含所有视频轨道ID的列表字符串" 注释 = "返回格式 status:success|tracks:[1,2,3] 或 status:failed|error:错误信息"
  965.             注释 = "应用场景 显示视频轨道选择菜单 支持多角度视频切换" 注释 = "注意 返回的是轨道ID列表 不是轨道名称" 注释 = "注意 轨道ID从1开始连续编号"
  966.             注释 = "注意 某些媒体文件可能没有视频轨道" 返回值注释 = "返回视频轨道列表信息" @禁止流程检查 = 真>
  967.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  968.     {
  969.         如果真 (实例ID < 1)
  970.         {
  971.             实例ID = 对象实例ID
  972.         }

  973.         @ return MPV_GetVideoTrackList(@<实例ID>);
  974.     }

  975.     方法 置字幕轨道 <公开 类型 = 逻辑型 注释 = "设置字幕轨道 - 切换当前使用的字幕轨道" 注释 = "参数 实例ID 播放器实例ID"
  976.             注释 = "参数 轨道索引 要切换到的字幕轨道索引 从1开始" 注释 = "注意 轨道索引必须存在于当前媒体的字幕轨道列表中" 注释 = "注意 切换轨道后会立即显示新的字幕内容"
  977.             注释 = "注意 某些媒体文件可能没有内嵌字幕轨道" 注释 = "注意 可以使用取字幕轨道列表方法获取所有可用轨道" 注释 = "注意 外部加载的字幕也会出现在轨道列表中"
  978.             返回值注释 = "切换成功返回真 失败返回假" @禁止流程检查 = 真>
  979.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  980.     参数 轨道索引 <类型 = 整数 注释 = "要切换到的字幕轨道索引 从1开始">
  981.     {
  982.         如果真 (实例ID < 1)
  983.         {
  984.             实例ID = 对象实例ID
  985.         }

  986.         @ return MPV_SetSubTrack(@<实例ID>, @<轨道索引>);
  987.     }

  988.     方法 取字幕轨道 <公开 类型 = 整数 注释 = "取当前字幕轨道 - 获取当前正在使用的字幕轨道索引" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 当前字幕轨道索引 从1开始"
  989.             注释 = "注意 如果获取失败 返回默认值1" 注释 = "注意 返回值1表示第一个字幕轨道" 注释 = "注意 如果媒体没有字幕轨道 返回值可能无效"
  990.             注释 = "注意 返回值0表示没有选择任何字幕轨道" 返回值注释 = "成功返回当前字幕轨道索引 失败返回1" @禁止流程检查 = 真>
  991.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  992.     {
  993.         如果真 (实例ID < 1)
  994.         {
  995.             实例ID = 对象实例ID
  996.         }

  997.         @ return MPV_GetSubTrack(@<实例ID>);
  998.     }

  999.     方法 取字幕轨道列表 <公开 类型 = 文本型 注释 = "取字幕轨道列表 - 获取所有可用的字幕轨道信息" 注释 = "参数 实例ID 播放器实例ID"
  1000.             注释 = "返回值 包含所有字幕轨道ID的列表字符串" 注释 = "返回格式 status:success|tracks:[1,2,3] 或 status:failed|error:错误信息"
  1001.             注释 = "应用场景 显示字幕轨道选择菜单 支持多语言字幕切换" 注释 = "注意 返回的是轨道ID列表 不是轨道名称" 注释 = "注意 轨道ID从1开始连续编号"
  1002.             注释 = "注意 某些媒体文件可能没有字幕轨道" 注释 = "注意 外部加载的字幕也会包含在列表中" 返回值注释 = "返回字幕轨道列表信息" @禁止流程检查 = 真>
  1003.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1004.     {
  1005.         如果真 (实例ID < 1)
  1006.         {
  1007.             实例ID = 对象实例ID
  1008.         }

  1009.         @ return MPV_GetSubTrackList(@<实例ID>);
  1010.     }

  1011.     方法 取章节数量 <公开 类型 = 整数 注释 = "取章节数量 - 获取当前媒体的章节总数" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 媒体文件的章节数量 0表示没有章节"
  1012.             注释 = "注意 需要媒体文件包含章节信息" 注释 = "注意 如果获取失败 返回-1" 注释 = "注意 章节信息通常存在于DVD、蓝光或特定格式的视频中"
  1013.             返回值注释 = "成功返回章节数量 失败返回-1" @禁止流程检查 = 真>
  1014.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1015.     {
  1016.         如果真 (实例ID < 1)
  1017.         {
  1018.             实例ID = 对象实例ID
  1019.         }

  1020.         @ return MPV_GetChapterCount(@<实例ID>);
  1021.     }

  1022.     方法 取章节列表 <公开 类型 = 文本型 注释 = "取章节列表 - 获取所有章节的标题信息" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 包含所有章节标题的列表字符串"
  1023.             注释 = "返回格式 status:success|chapters:[章节1,章节2]或 status:failed|error:错误信息"
  1024.             注释 = "应用场景 显示章节选择菜单 快速导航到特定章节" 注释 = "注意 需要媒体文件包含章节信息且章节有标题" 注释 = "注意 某些章节可能没有标题 会用空字符串表示"
  1025.             注释 = "注意 章节索引从0开始 与章节标题一一对应" 返回值注释 = "返回章节列表信息" @禁止流程检查 = 真>
  1026.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1027.     {
  1028.         如果真 (实例ID < 1)
  1029.         {
  1030.             实例ID = 对象实例ID
  1031.         }

  1032.         @ return MPV_GetChapterList(@<实例ID>);
  1033.     }

  1034.     方法 置章节 <公开 类型 = 逻辑型 注释 = "设置当前章节 - 跳转到指定的章节" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 章节索引 要跳转到的章节索引 从0开始"
  1035.             注释 = "注意 章节索引必须在0到章节数量-1的范围内" 注释 = "注意 需要媒体文件包含章节信息" 注释 = "注意 跳转后会从章节开始位置继续播放"
  1036.             注释 = "注意 可以使用取章节数量方法检查是否有章节" 返回值注释 = "跳转成功返回真 失败返回假" @禁止流程检查 = 真>
  1037.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1038.     参数 章节索引 <类型 = 整数 注释 = "要跳转到的章节索引 从0开始">
  1039.     {
  1040.         如果真 (实例ID < 1)
  1041.         {
  1042.             实例ID = 对象实例ID
  1043.         }

  1044.         @ return MPV_SetChapter(@<实例ID>, @<章节索引>);
  1045.     }

  1046.     方法 取当前章节 <公开 类型 = 整数 注释 = "取当前章节 - 获取当前播放位置所在的章节索引" 注释 = "参数 实例ID 播放器实例ID"
  1047.             注释 = "返回值 当前章节索引 从0开始 -1表示不在任何章节中" 注释 = "注意 需要媒体文件包含章节信息" 注释 = "注意 如果获取失败 返回-1"
  1048.             注释 = "注意 返回值基于当前播放时间点自动计算" 注释 = "注意 如果播放位置在章节之间 可能返回前一个章节索引" 返回值注释 = "成功返回当前章节索引 失败返回-1" @禁止流程检查 = 真>
  1049.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1050.     {
  1051.         如果真 (实例ID < 1)
  1052.         {
  1053.             实例ID = 对象实例ID
  1054.         }

  1055.         @ return MPV_GetCurrentChapter(@<实例ID>);
  1056.     }

  1057.     方法 取媒体信息 <公开 类型 = 文本型 注释 = "取媒体信息 - 获取当前媒体的基本信息" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 包含媒体基本信息的字符串"
  1058.             注释 = "返回格式 status:success|duration:3600|width:1920|height:1080 等" 注释 = "包含信息 时长 视频宽度 视频高度等"
  1059.             注释 = "应用场景 显示媒体文件的基本属性" 注释 = "注意 需要先成功加载媒体文件" 注释 = "注意 不同媒体文件返回的信息可能不同" 注释 = "注意 某些信息可能无法获取 会省略对应字段"
  1060.             返回值注释 = "返回媒体基本信息" @禁止流程检查 = 真>
  1061.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1062.     {
  1063.         如果真 (实例ID < 1)
  1064.         {
  1065.             实例ID = 对象实例ID
  1066.         }

  1067.         @ return MPV_GetMediaInfo(@<实例ID>);
  1068.     }

  1069.     方法 取视频信息 <公开 类型 = 文本型 注释 = "取视频信息 - 获取当前视频流的详细信息" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 包含视频流详细信息的字符串"
  1070.             注释 = "返回格式 status:success|width:1920|height:1080|fps:29.97 等" 注释 = "包含信息 视频宽度 视频高度 帧率 编码格式等"
  1071.             注释 = "应用场景 显示视频流的技术参数" 注释 = "注意 需要媒体文件包含视频流" 注释 = "注意 某些信息可能无法获取 会省略对应字段" 注释 = "注意 帧率等信息可能来自容器或视频流本身"
  1072.             返回值注释 = "返回视频流详细信息" @禁止流程检查 = 真>
  1073.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1074.     {
  1075.         如果真 (实例ID < 1)
  1076.         {
  1077.             实例ID = 对象实例ID
  1078.         }

  1079.         @ return MPV_GetVideoInfo(@<实例ID>);
  1080.     }

  1081.     方法 取音频信息 <公开 类型 = 文本型 注释 = "取音频信息 - 获取当前音频流的详细信息" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 包含音频流详细信息的字符串"
  1082.             注释 = "返回格式 status:success|samplerate:44100|channels:2 等" 注释 = "包含信息 采样率 声道数 编码格式等"
  1083.             注释 = "应用场景 显示音频流的技术参数" 注释 = "注意 需要媒体文件包含音频流" 注释 = "注意 某些信息可能无法获取 会省略对应字段"
  1084.             注释 = "注意 声道数可能为1(单声道) 2(立体声) 6(5.1)等" 返回值注释 = "返回音频流详细信息" @禁止流程检查 = 真>
  1085.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1086.     {
  1087.         如果真 (实例ID < 1)
  1088.         {
  1089.             实例ID = 对象实例ID
  1090.         }

  1091.         @ return MPV_GetAudioInfo(@<实例ID>);
  1092.     }

  1093.     方法 取元数据 <公开 类型 = 文本型 注释 = "取元数据 - 获取媒体的元数据信息" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 包含媒体元数据的JSON格式字符串"
  1094.             注释 = "返回格式 status:success|metadata:{title:视频标题,artist:作者}" 注释 = "包含信息 标题 作者 专辑 年代 描述等元数据"
  1095.             注释 = "应用场景 显示媒体的描述性信息" 注释 = "注意 需要媒体文件包含元数据" 注释 = "注意 不同媒体文件包含的元数据字段不同" 注释 = "注意 某些媒体文件可能没有元数据"
  1096.             返回值注释 = "返回媒体元数据信息" @禁止流程检查 = 真>
  1097.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1098.     {
  1099.         如果真 (实例ID < 1)
  1100.         {
  1101.             实例ID = 对象实例ID
  1102.         }

  1103.         @ return MPV_GetMetadata(@<实例ID>);
  1104.     }

  1105.     方法 添加视频滤镜 <公开 类型 = 逻辑型 注释 = "添加视频滤镜 - 向视频处理管道添加指定的滤镜" 注释 = "参数 实例ID 播放器实例ID"
  1106.             注释 = "参数 滤镜名称 要添加的视频滤镜名称或滤镜链" 注释 = "滤镜示例 滤镜示例 hflip 水平翻转 vflip 垂直翻转"
  1107.             注释 = "滤镜示例 eq=brightness=0.1 亮度调整" 注释 = "滤镜示例 scale=w=1280:h=720 缩放滤镜" 注释 = "应用场景 实时视频处理 特效添加"
  1108.             注释 = "注意 需要了解FFmpeg滤镜语法" 注释 = "注意 滤镜添加会增加CPU/GPU负担" 注释 = "注意 某些复杂滤镜可能需要特定硬件支持"
  1109.             返回值注释 = "添加成功返回真 失败返回假" @禁止流程检查 = 真>
  1110.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1111.     参数 滤镜名称 <类型 = 文本型 注释 = "要添加的视频滤镜名称或滤镜链">
  1112.     {
  1113.         如果真 (实例ID < 1)
  1114.         {
  1115.             实例ID = 对象实例ID
  1116.         }

  1117.         @ return MPV_AddVideoFilter(@<实例ID>, @<滤镜名称>);
  1118.     }

  1119.     方法 移除视频滤镜 <公开 类型 = 逻辑型 注释 = "移除视频滤镜 - 从视频处理管道移除指定的滤镜" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 滤镜名称 要移除的视频滤镜名称"
  1120.             注释 = "注意 滤镜名称必须与添加时使用的名称完全匹配" 注释 = "注意 如果滤镜不存在 移除操作会失败" 注释 = "注意 移除后视频会恢复原始状态"
  1121.             注释 = "注意 可以移除通过添加视频滤镜方法添加的滤镜" 返回值注释 = "移除成功返回真 失败返回假" @禁止流程检查 = 真>
  1122.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1123.     参数 滤镜名称 <类型 = 文本型 注释 = "要移除的视频滤镜名称">
  1124.     {
  1125.         如果真 (实例ID < 1)
  1126.         {
  1127.             实例ID = 对象实例ID
  1128.         }

  1129.         @ return MPV_RemoveVideoFilter(@<实例ID>, @<滤镜名称>);
  1130.     }

  1131.     方法 添加音频滤镜 <公开 类型 = 逻辑型 注释 = "添加音频滤镜 - 向音频处理管道添加指定的滤镜" 注释 = "参数 实例ID 播放器实例ID"
  1132.             注释 = "参数 滤镜名称 要添加的音频滤镜名称或滤镜链" 注释 = "滤镜示例 volume=volume=2.0 音量放大2倍"
  1133.             注释 = "滤镜示例 equalizer=f=1000:width_type=h:width=1000:g=5 均衡器" 注释 = "滤镜示例 aresample=osr=44100 重采样"
  1134.             注释 = "应用场景 实时音频处理 音效添加" 注释 = "注意 需要了解FFmpeg音频滤镜语法" 注释 = "注意 滤镜添加会增加CPU负担"
  1135.             注释 = "注意 某些复杂滤镜可能需要特定音频设备支持" 返回值注释 = "添加成功返回真 失败返回假" @禁止流程检查 = 真>
  1136.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1137.     参数 滤镜名称 <类型 = 文本型 注释 = "要添加的音频滤镜名称或滤镜链">
  1138.     {
  1139.         如果真 (实例ID < 1)
  1140.         {
  1141.             实例ID = 对象实例ID
  1142.         }

  1143.         @ return MPV_AddAudioFilter(@<实例ID>, @<滤镜名称>);
  1144.     }

  1145.     方法 移除音频滤镜 <公开 类型 = 逻辑型 注释 = "移除音频滤镜 - 从音频处理管道移除指定的滤镜" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 滤镜名称 要移除的音频滤镜名称"
  1146.             注释 = "注意 滤镜名称必须与添加时使用的名称完全匹配" 注释 = "注意 如果滤镜不存在 移除操作会失败" 注释 = "注意 移除后音频会恢复原始状态"
  1147.             注释 = "注意 可以移除通过添加音频滤镜方法添加的滤镜" 返回值注释 = "移除成功返回真 失败返回假" @禁止流程检查 = 真>
  1148.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1149.     参数 滤镜名称 <类型 = 文本型 注释 = "要移除的音频滤镜名称">
  1150.     {
  1151.         如果真 (实例ID < 1)
  1152.         {
  1153.             实例ID = 对象实例ID
  1154.         }

  1155.         @ return MPV_RemoveAudioFilter(@<实例ID>, @<滤镜名称>);
  1156.     }

  1157.     方法 取视频滤镜 <公开 类型 = 文本型 注释 = "取视频滤镜 - 获取当前应用的视频滤镜列表" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 当前视频滤镜列表字符串"
  1158.             注释 = "返回格式 status:success|filters:滤镜列表 或 status:failed|error:错误信息" 注释 = "应用场景 显示当前视频处理状态 滤镜管理"
  1159.             注释 = "注意 返回的是当前生效的视频滤镜" 注释 = "注意 如果没有任何视频滤镜 返回空列表" 注释 = "注意 返回的滤镜名称可能与添加时略有不同" 返回值注释 = "返回当前视频滤镜信息"
  1160.             @禁止流程检查 = 真>
  1161.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1162.     {
  1163.         如果真 (实例ID < 1)
  1164.         {
  1165.             实例ID = 对象实例ID
  1166.         }

  1167.         @ return MPV_GetVideoFilters(@<实例ID>);
  1168.     }

  1169.     方法 取音频滤镜 <公开 类型 = 文本型 注释 = "取音频滤镜 - 获取当前应用的音频滤镜列表" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 当前音频滤镜列表字符串"
  1170.             注释 = "返回格式 status:success|filters:滤镜列表 或 status:failed|error:错误信息" 注释 = "应用场景 显示当前音频处理状态 滤镜管理"
  1171.             注释 = "注意 返回的是当前生效的音频滤镜" 注释 = "注意 如果没有任何音频滤镜 返回空列表" 注释 = "注意 返回的滤镜名称可能与添加时略有不同" 返回值注释 = "返回当前音频滤镜信息"
  1172.             @禁止流程检查 = 真>
  1173.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1174.     {
  1175.         如果真 (实例ID < 1)
  1176.         {
  1177.             实例ID = 对象实例ID
  1178.         }

  1179.         @ return MPV_GetAudioFilters(@<实例ID>);
  1180.     }

  1181.     方法 置配置选项 <公开 类型 = 逻辑型 注释 = "设置配置选项 - 设置MPV播放器的配置参数" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 键名称 配置选项的名称"
  1182.             注释 = "参数 键值 配置选项的值" 注释 = "配置示例 vo gpu 设置视频输出为GPU" 注释 = "配置示例 hwdec auto 设置硬件解码为自动"
  1183.             注释 = "配置示例 profile fast 使用快速解码配置" 注释 = "应用场景 高级播放器配置 性能调优" 注释 = "注意 需要了解MPV配置选项的详细文档"
  1184.             注释 = "注意 某些配置选项需要在初始化前设置" 注释 = "注意 错误的配置可能导致播放异常" 返回值注释 = "设置成功返回真 失败返回假" @禁止流程检查 = 真>
  1185.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1186.     参数 键名称 <类型 = 文本型 注释 = "配置选项的名称">
  1187.     参数 键值 <类型 = 文本型 注释 = "配置选项的值">
  1188.     {
  1189.         如果真 (实例ID < 1)
  1190.         {
  1191.             实例ID = 对象实例ID
  1192.         }

  1193.         @ return MPV_SetConfigOption(@<实例ID>, @<键名称>, @<键值>);
  1194.     }

  1195.     方法 取配置选项 <公开 类型 = 文本型 注释 = "取配置选项 - 获取指定配置选项的当前值" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 键名称 要查询的配置选项名称"
  1196.             注释 = "返回值 配置选项的当前值字符串" 注释 = "返回格式 status:success|value:配置值 或 status:failed|error:错误信息"
  1197.             注释 = "应用场景 查询当前播放器配置状态" 注释 = "注意 需要配置选项存在且可读" 注释 = "注意 某些配置选项可能无法读取" 注释 = "注意 返回的值是字符串形式 可能需要转换"
  1198.             返回值注释 = "返回配置选项值信息" @禁止流程检查 = 真>
  1199.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1200.     参数 键名称 <类型 = 文本型 注释 = "要查询的配置选项名称">
  1201.     {
  1202.         如果真 (实例ID < 1)
  1203.         {
  1204.             实例ID = 对象实例ID
  1205.         }

  1206.         @ return MPV_GetConfigOption(@<实例ID>, @<键名称>);
  1207.     }

  1208.     方法 取性能数据 <公开 类型 = 文本型 注释 = "取性能数据 - 获取播放器的性能统计信息" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 包含性能数据的字符串"
  1209.             注释 = "返回格式 status:success|uptime_seconds:3600 等" 注释 = "包含信息 运行时间 缓存状态 解码性能等" 注释 = "应用场景 性能监控 调试分析"
  1210.             注释 = "注意 返回的性能数据可能因版本而异" 注释 = "注意 某些性能数据需要特定配置才能收集" 注释 = "注意 性能数据从实例创建开始累计" 返回值注释 = "返回性能数据信息"
  1211.             @禁止流程检查 = 真>
  1212.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1213.     {
  1214.         如果真 (实例ID < 1)
  1215.         {
  1216.             实例ID = 对象实例ID
  1217.         }

  1218.         @ return MPV_GetPerformanceData(@<实例ID>);
  1219.     }

  1220.     方法 置网络超时 <公开 类型 = 逻辑型 注释 = "设置网络超时 - 设置网络操作的超时时间" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 超时秒数 网络超时时间 单位秒"
  1221.             注释 = "应用场景 网络流媒体播放 在线视频加载" 注释 = "注意 主要影响网络连接和初始缓冲" 注释 = "注意 设置过小可能导致网络连接失败" 注释 = "注意 设置过大可能导致卡顿时间过长"
  1222.             注释 = "注意 对于不稳定的网络环境建议设置较大值" 返回值注释 = "设置成功返回真 失败返回假" @禁止流程检查 = 真>
  1223.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1224.     参数 超时秒数 <类型 = 整数 注释 = "网络超时时间 单位秒">
  1225.     {
  1226.         如果真 (实例ID < 1)
  1227.         {
  1228.             实例ID = 对象实例ID
  1229.         }

  1230.         @ return MPV_SetNetworkTimeout(@<实例ID>, @<超时秒数>);
  1231.     }

  1232.     方法 置缓存大小 <公开 类型 = 逻辑型 注释 = "设置缓存大小 - 设置播放器的缓存大小" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 缓存大小 缓存大小 单位KB"
  1233.             注释 = "应用场景 网络流媒体播放 大文件播放" 注释 = "注意 较大的缓存可以减少卡顿但增加内存使用" 注释 = "注意 较小的缓存节省内存但可能增加卡顿"
  1234.             注释 = "注意 默认缓存大小通常为50MB左右" 注释 = "注意 设置后对新加载的文件生效" 返回值注释 = "设置成功返回真 失败返回假" @禁止流程检查 = 真>
  1235.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1236.     参数 缓存大小 <类型 = 整数 注释 = "缓存大小 单位KB">
  1237.     {
  1238.         如果真 (实例ID < 1)
  1239.         {
  1240.             实例ID = 对象实例ID
  1241.         }

  1242.         @ return MPV_SetCacheSize(@<实例ID>, @<缓存大小>);
  1243.     }

  1244.     方法 置用户代理 <公开 类型 = 逻辑型 注释 = "设置用户代理 - 设置网络请求的用户代理字符串" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 用户代理 用户代理字符串"
  1245.             注释 = "示例 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
  1246.             注释 = "应用场景 网络流媒体访问 需要特定用户代理的网站" 注释 = "注意 主要影响HTTPHTTPS请求" 注释 = "注意 某些视频网站需要特定的用户代理才能访问"
  1247.             注释 = "注意 设置后对新发起的网络请求生效" 返回值注释 = "设置成功返回真 失败返回假" @禁止流程检查 = 真>
  1248.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1249.     参数 用户代理 <类型 = 文本型 注释 = "用户代理字符串">
  1250.     {
  1251.         如果真 (实例ID < 1)
  1252.         {
  1253.             实例ID = 对象实例ID
  1254.         }

  1255.         @ return MPV_SetUserAgent(@<实例ID>, @<用户代理>);
  1256.     }

  1257.     方法 置来源引用 <公开 类型 = 逻辑型 注释 = "设置来源引用 - 设置网络请求的Referer头信息" 注释 = "参数 实例ID 播放器实例ID"
  1258.             注释 = "参数 来源引用 Referer字符串 通常是来源网页的URL" 注释 = "应用场景 网络流媒体访问 防盗链验证" 注释 = "注意 主要影响HTTPHTTPS请求"
  1259.             注释 = "注意 某些视频网站需要正确的Referer才能访问" 注释 = "注意 设置后对新发起的网络请求生效" 注释 = "注意 需要遵守目标网站的使用条款"
  1260.             返回值注释 = "设置成功返回真 失败返回假" @禁止流程检查 = 真>
  1261.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1262.     参数 来源引用 <类型 = 文本型 注释 = "Referer字符串 通常是来源网页的URL">
  1263.     {
  1264.         如果真 (实例ID < 1)
  1265.         {
  1266.             实例ID = 对象实例ID
  1267.         }

  1268.         @ return MPV_SetReferrer(@<实例ID>, @<来源引用>);
  1269.     }

  1270.     方法 置最大内存使用 <公开 类型 = 逻辑型 注释 = "设置最大内存使用 - 设置播放器的最大内存使用限制" 注释 = "参数 实例ID 播放器实例ID"
  1271.             注释 = "参数 最大内存 最大内存使用量 单位MB" 注释 = "应用场景 内存受限环境 多实例同时运行" 注释 = "注意 这是一个软限制 实际使用可能略微超出"
  1272.             注释 = "注意 设置过小可能导致播放卡顿或失败" 注释 = "注意 设置过大可能影响系统其他程序" 注释 = "注意 默认情况下MPV会自动管理内存使用"
  1273.             返回值注释 = "设置成功返回真 失败返回假" @禁止流程检查 = 真>
  1274.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1275.     参数 最大内存 <类型 = 整数 注释 = "最大内存使用量 单位MB">
  1276.     {
  1277.         如果真 (实例ID < 1)
  1278.         {
  1279.             实例ID = 对象实例ID
  1280.         }

  1281.         @ return MPV_SetMaxMemoryUsage(@<实例ID>, @<最大内存>);
  1282.     }

  1283.     方法 置操作超时 <公开 类型 = 逻辑型 注释 = "设置操作超时 - 设置各种操作的超时时间" 注释 = "参数 实例ID 播放器实例ID" 注释 = "参数 超时毫秒 操作超时时间 单位毫秒"
  1284.             注释 = "应用场景 控制各种MPV操作的响应时间" 注释 = "注意 影响命令执行 属性访问等操作" 注释 = "注意 设置过小可能导致操作频繁超时" 注释 = "注意 设置过大可能导致界面无响应"
  1285.             注释 = "注意 默认超时时间通常足够大多数操作" 返回值注释 = "设置成功返回真 失败返回假" @禁止流程检查 = 真>
  1286.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1287.     参数 超时毫秒 <类型 = 整数 注释 = "操作超时时间 单位毫秒">
  1288.     {
  1289.         如果真 (实例ID < 1)
  1290.         {
  1291.             实例ID = 对象实例ID
  1292.         }

  1293.         @ return MPV_SetTimeout(@<实例ID>, @<超时毫秒>);
  1294.     }

  1295.     方法 取调试信息 <公开 类型 = 文本型 注释 = "取调试信息 - 获取MPV播放器的调试信息" 注释 = "参数 实例ID 播放器实例ID" 注释 = "返回值 包含调试信息的字符串"
  1296.             注释 = "应用场景 故障排查 性能分析 开发调试" 注释 = "注意 返回的信息可能包含内部状态和错误详情" 注释 = "注意 调试信息的详细程度可能因版本而异"
  1297.             注释 = "注意 某些调试信息可能需要启用特定编译选项" 返回值注释 = "返回调试信息字符串" @禁止流程检查 = 真>
  1298.     参数 实例ID <类型 = 变整数 注释 = "播放器实例ID" @默认值 = 0>
  1299.     {
  1300.         如果真 (实例ID < 1)
  1301.         {
  1302.             实例ID = 对象实例ID
  1303.         }

  1304.         @ return MPV_GetDebugInfo(@<实例ID>);
  1305.     }

  1306.     方法 取事件调试信息 <公开 类型 = 文本型 注释 = "取事件调试信息 - 获取MPV事件系统的调试信息" 注释 = "返回值 包含事件系统调试信息的字符串"
  1307.             注释 = "应用场景 事件处理调试 状态监控" 注释 = "注意 返回当前事件队列的状态信息" 注释 = "注意 主要用于开发调试目的" 注释 = "注意 普通用户通常不需要使用此方法"
  1308.             返回值注释 = "返回事件调试信息字符串" @禁止流程检查 = 真>
  1309.     {
  1310.         @ return MPV_GetEventDebugInfo();
  1311.     }

  1312.     #
  1313. }
复制代码

全国活动会议直播拍摄
回复

使用道具 举报

10

主题

130

帖子

526

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
526
132#
 楼主| 发表于 前天 16:05 | 只看该作者
朕的 发表于 2025-10-30 14:55
实际效果是没反应

关于全屏这个我在修改!直接弄成占满整个屏幕!正在编写代码!估计晚上就OK了!你在看看其他功能!又BUG就提出来!我毕竟没办法挨个查看!毕竟每个人的思路和使用方法不一样!
回复

使用道具 举报

203

主题

1327

帖子

5402

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5402
QQ
133#
发表于 前天 16:06 | 只看该作者

全国活动会议直播拍摄
回复

使用道具 举报

203

主题

1327

帖子

5402

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5402
QQ
134#
发表于 前天 16:07 | 只看该作者
本帖最后由 朕的 于 2025-10-30 16:09 编辑
孤独靖仇 发表于 2025-10-30 16:02
你说的方法我试过!我这个方法更好!比如如果按你的方法走!比如我在主窗口控制窗口1中的MPV和窗口2的MPV   ...

我这个方法,一样可以用变量,可用可不用,不需要用对象。这样就不需要每个都必须创建变量了
MPV播放器.v (268.23 KB, 下载次数: 0)
全国活动会议直播拍摄
回复

使用道具 举报

10

主题

130

帖子

526

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
526
135#
 楼主| 发表于 前天 16:13 | 只看该作者
朕的 发表于 2025-10-30 16:07
我这个方法,一样可以用变量,可用可不用,不需要用对象。这样就不需要每个都必须创建变量了

...

都说了每个人使用方式不一样!我现在更新后主要更新的是C++实现文件!火山部分可以不变动!现在更新置全屏   我还会再加一个取是否全屏的命令!到时候你就添加一个  取是否全屏的方法就好!C++实现直接替换就好!
回复

使用道具 举报

203

主题

1327

帖子

5402

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5402
QQ
136#
发表于 前天 16:17 | 只看该作者
孤独靖仇 发表于 2025-10-30 16:13
都说了每个人使用方式不一样!我现在更新后主要更新的是C++实现文件!火山部分可以不变动!现在更新置全屏   ...

好的,有什么办法实现两个播放窗口同步吗,播放一样的画面内容保持同步。不知道用两个实例同时操作2个之间会不会有画面延迟
全国活动会议直播拍摄
回复

使用道具 举报

1

主题

7

帖子

31

积分

新手上路

Rank: 1

积分
31
137#
发表于 前天 16:19 来自手机 | 只看该作者
上个版本改变音量无效,不知道这次修复了没有
回复

使用道具 举报

10

主题

130

帖子

526

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
526
138#
 楼主| 发表于 前天 16:19 | 只看该作者
朕的 发表于 2025-10-30 16:17
好的,有什么办法实现两个播放窗口同步吗,播放一样的画面内容保持同步。不知道用两个实例同时操作2个之 ...

这个只能你自己试了!这个MPV组件我加入线程保护了!你尝试一下用一个方法直接线程调用?即使失败按理说应该也不会引起奔溃!最多功能无效!
回复

使用道具 举报

203

主题

1327

帖子

5402

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5402
QQ
139#
发表于 前天 16:27 | 只看该作者


我直接用的2个,稍微会有点延迟,理论上直接这样用肯定会有,,我看下怎么处理,用线程试试
全国活动会议直播拍摄
回复

使用道具 举报

1

主题

7

帖子

31

积分

新手上路

Rank: 1

积分
31
140#
发表于 前天 17:05 来自手机 | 只看该作者
置音量没反应,置视频大小 多点几次出现左边顶边位置改变
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-11-1 13:16 , Processed in 0.121197 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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