# mpvPlayer 库模块帮助文档

## mpvPlayer 成员列表 <a id="mpvPlayer" href="#mpvPlayer">&#x23;</a>

开源万能视频播放器

### mpvPlayer() <a id="mpvPlayer()" href="#mpvPlayer()">&#x23;</a>
[返回对象:mpvPlayerObject](#mpvPlayerObject)

### mpvPlayer(winform) <a id="mpvPlayer(winform)" href="#mpvPlayer(winform)">&#x23;</a>
创建 MPV 播放器控件,

## mpvPlayerObject 成员列表 <a id="mpvPlayerObject" href="#mpvPlayerObject">&#x23;</a>

### mpvPlayerObject.command <a id="mpvPlayerObject.command" href="#mpvPlayerObject.command">&#x23;</a>
发送命令

### mpvPlayerObject.command(...) <a id="mpvPlayerObject.command" href="#mpvPlayerObject.command">&#x23;</a>
发送命令,  
参数为一个或多个字符串参数,非字符串参数自动调用 tostring 转换为字符串  
注意MPV组件的任何函数的字符串参数都是使用UTF8编码，与aardio默认编码一致

### mpvPlayerObject.commandAsync <a id="mpvPlayerObject.commandAsync" href="#mpvPlayerObject.commandAsync">&#x23;</a>
异步发送命令

### mpvPlayerObject.commandAsync(reply,...) <a id="mpvPlayerObject.commandAsync" href="#mpvPlayerObject.commandAsync">&#x23;</a>
异步发送命令,参数@1指定回调函数,  
其他为一个或多个字符串参数,非字符串参数自动调用tostring转换为字符串

### mpvPlayerObject.destroy() <a id="mpvPlayerObject.destroy" href="#mpvPlayerObject.destroy">&#x23;</a>
释放对象。  
在窗口关闭时会自动调用此函数

### mpvPlayerObject.eventName(id) <a id="mpvPlayerObject.eventName" href="#mpvPlayerObject.eventName">&#x23;</a>
使用参数指定的事件 ID 返回事件名称

### mpvPlayerObject.getMediaTitle() <a id="mpvPlayerObject.getMediaTitle" href="#mpvPlayerObject.getMediaTitle">&#x23;</a>
返回视频文件标题

### mpvPlayerObject.getProperty <a id="mpvPlayerObject.getProperty" href="#mpvPlayerObject.getProperty">&#x23;</a>
获取属性

### mpvPlayerObject.getProperty(name,value) <a id="mpvPlayerObject.getProperty" href="#mpvPlayerObject.getProperty">&#x23;</a>
获取属性  
value 参数可以是一个结构体,这时候返回值为结构体  
value也可以使用"string","bool","double","long","int"等指定返回值类型,这时候直接返回对应的值  

所有可用属性参考文档 http://mpv.io/manual/master/#properties

### mpvPlayerObject.getTrackCodec(索引) <a id="mpvPlayerObject.getTrackCodec" href="#mpvPlayerObject.getTrackCodec">&#x23;</a>
获取轨道解码器名称，例如h264

### mpvPlayerObject.getTrackCount() <a id="mpvPlayerObject.getTrackCount" href="#mpvPlayerObject.getTrackCount">&#x23;</a>
获取轨道数量

### mpvPlayerObject.getTrackDecoderDesc(索引) <a id="mpvPlayerObject.getTrackDecoderDesc" href="#mpvPlayerObject.getTrackDecoderDesc">&#x23;</a>
获取轨道解码成功的友好的解码器名称

### mpvPlayerObject.getTrackDefault (索引) <a id="mpvPlayerObject.getTrackDefault " href="#mpvPlayerObject.getTrackDefault ">&#x23;</a>
是否默认轨道

### mpvPlayerObject.getTrackDemuxChannelCount(索引) <a id="mpvPlayerObject.getTrackDemuxChannelCount" href="#mpvPlayerObject.getTrackDemuxChannelCount">&#x23;</a>
获取通道数

### mpvPlayerObject.getTrackDemuxChannels(索引) <a id="mpvPlayerObject.getTrackDemuxChannels" href="#mpvPlayerObject.getTrackDemuxChannels">&#x23;</a>
获取通道

### mpvPlayerObject.getTrackDemuxFps(索引) <a id="mpvPlayerObject.getTrackDemuxFps" href="#mpvPlayerObject.getTrackDemuxFps">&#x23;</a>
获取轨道视频FPS

### mpvPlayerObject.getTrackDemuxSamplerate(索引) <a id="mpvPlayerObject.getTrackDemuxSamplerate" href="#mpvPlayerObject.getTrackDemuxSamplerate">&#x23;</a>
获取轨道音频采样率

### mpvPlayerObject.getTrackDemuxSize(索引) <a id="mpvPlayerObject.getTrackDemuxSize" href="#mpvPlayerObject.getTrackDemuxSize">&#x23;</a>
获取轨道大小

### mpvPlayerObject.getTrackExternal(索引) <a id="mpvPlayerObject.getTrackExternal" href="#mpvPlayerObject.getTrackExternal">&#x23;</a>
获取轨道是否外挂的文件，主要指外挂字幕

### mpvPlayerObject.getTrackExternalFile(索引) <a id="mpvPlayerObject.getTrackExternalFile" href="#mpvPlayerObject.getTrackExternalFile">&#x23;</a>
获取轨道外挂文件路径

### mpvPlayerObject.getTrackFfmpegIndex(索引) <a id="mpvPlayerObject.getTrackFfmpegIndex" href="#mpvPlayerObject.getTrackFfmpegIndex">&#x23;</a>
获取轨道FFmpeg索引

### mpvPlayerObject.getTrackForced(索引) <a id="mpvPlayerObject.getTrackForced" href="#mpvPlayerObject.getTrackForced">&#x23;</a>
获取轨道强制标识

### mpvPlayerObject.getTrackId(索引) <a id="mpvPlayerObject.getTrackId" href="#mpvPlayerObject.getTrackId">&#x23;</a>
获取轨道ID

### mpvPlayerObject.getTrackLang(索引) <a id="mpvPlayerObject.getTrackLang" href="#mpvPlayerObject.getTrackLang">&#x23;</a>
获取轨道语言

### mpvPlayerObject.getTrackReplaygainAlbumGain(索引) <a id="mpvPlayerObject.getTrackReplaygainAlbumGain" href="#mpvPlayerObject.getTrackReplaygainAlbumGain">&#x23;</a>
获取专辑回放增益峰值

### mpvPlayerObject.getTrackReplaygainAlbumPeak(索引) <a id="mpvPlayerObject.getTrackReplaygainAlbumPeak" href="#mpvPlayerObject.getTrackReplaygainAlbumPeak">&#x23;</a>
获取专辑回放增益峰值

### mpvPlayerObject.getTrackReplaygainTrackGain(索引) <a id="mpvPlayerObject.getTrackReplaygainTrackGain" href="#mpvPlayerObject.getTrackReplaygainTrackGain">&#x23;</a>
获取轨道回放增益

### mpvPlayerObject.getTrackReplaygainTrackPeak(索引) <a id="mpvPlayerObject.getTrackReplaygainTrackPeak" href="#mpvPlayerObject.getTrackReplaygainTrackPeak">&#x23;</a>
获取轨道回放增益峰值

### mpvPlayerObject.getTrackSelected(索引) <a id="mpvPlayerObject.getTrackSelected" href="#mpvPlayerObject.getTrackSelected">&#x23;</a>
获取轨道是否当前选用轨道

### mpvPlayerObject.getTrackSrcId(索引) <a id="mpvPlayerObject.getTrackSrcId" href="#mpvPlayerObject.getTrackSrcId">&#x23;</a>
获取源文件轨道ID

### mpvPlayerObject.getTrackTitle(索引) <a id="mpvPlayerObject.getTrackTitle" href="#mpvPlayerObject.getTrackTitle">&#x23;</a>
获取轨道标题

### mpvPlayerObject.getTrackType(索引) <a id="mpvPlayerObject.getTrackType" href="#mpvPlayerObject.getTrackType">&#x23;</a>
获取轨道类型,返回值为字符串  
可能的类型为"video","audio","sub",其中"sub"为加载的字幕

### mpvPlayerObject.getVolume() <a id="mpvPlayerObject.getVolume" href="#mpvPlayerObject.getVolume">&#x23;</a>
返回播放音量

### mpvPlayerObject.isPaused() <a id="mpvPlayerObject.isPaused" href="#mpvPlayerObject.isPaused">&#x23;</a>
当前是否暂停播放

### mpvPlayerObject.loadFile <a id="mpvPlayerObject.loadFile" href="#mpvPlayerObject.loadFile">&#x23;</a>
加载视频文件

### mpvPlayerObject.loadFile(filename) <a id="mpvPlayerObject.loadFile" href="#mpvPlayerObject.loadFile">&#x23;</a>
加载视频文件,参数指定文件路径或者视频网址  
注意 MPV 组件的字符串参数都是使用UTF8编码，与aardio默认编码一致  
注意MPV组件的任何函数的字符串参数都是使用UTF8编码，与aardio默认编码一致

### mpvPlayerObject.loadSubtitle(filename,flag,title,lang) <a id="mpvPlayerObject.loadSubtitle" href="#mpvPlayerObject.loadSubtitle">&#x23;</a>
加载字幕文件,  
除参数@1用于指定字幕文件路径以外其他参数可选  
其他参数参考函数源码以及MPV文档

### mpvPlayerObject.observeProperty <a id="mpvPlayerObject.observeProperty" href="#mpvPlayerObject.observeProperty">&#x23;</a>
订阅属性变更事件

### mpvPlayerObject.observeProperty(name,format) <a id="mpvPlayerObject.observeProperty" href="#mpvPlayerObject.observeProperty">&#x23;</a>
订阅属性变更事件  
format可选值为"string","bool","double","long","int",  
也可以使用 _MPV_FORMAT 前缀的常量指定format  
不指定formart时默认为"double",

### mpvPlayerObject.pause <a id="mpvPlayerObject.pause" href="#mpvPlayerObject.pause">&#x23;</a>
暂停或取消暂停

### mpvPlayerObject.pause(paused) <a id="mpvPlayerObject.pause" href="#mpvPlayerObject.pause">&#x23;</a>
参数为 true 时暂停,为 false 时继续播放

### mpvPlayerObject.requestLogMessages(minLevel) <a id="mpvPlayerObject.requestLogMessages" href="#mpvPlayerObject.requestLogMessages">&#x23;</a>
设置日志信息级别

### mpvPlayerObject.screenshotToFile <a id="mpvPlayerObject.screenshotToFile" href="#mpvPlayerObject.screenshotToFile">&#x23;</a>
截图

### mpvPlayerObject.screenshotToFile(filename,flag) <a id="mpvPlayerObject.screenshotToFile" href="#mpvPlayerObject.screenshotToFile">&#x23;</a>
截图,  
除参数@1用于指定保存文件路径以外其他参数可选  
其他参数参考函数源码以及MPV文档

### mpvPlayerObject.seek <a id="mpvPlayerObject.seek" href="#mpvPlayerObject.seek">&#x23;</a>
切换到指定位置播放

### mpvPlayerObject.seek(pos) <a id="mpvPlayerObject.seek" href="#mpvPlayerObject.seek">&#x23;</a>
切换到指定位置播放,参数为秒数

### mpvPlayerObject.setOption <a id="mpvPlayerObject.setOption" href="#mpvPlayerObject.setOption">&#x23;</a>
设置选项

### mpvPlayerObject.setOption(name,value) <a id="mpvPlayerObject.setOption" href="#mpvPlayerObject.setOption">&#x23;</a>
设置选项，  
也可以用一个表包含多个键值对用于设置多个选项,  
参考文档 http://mpv.io/manual/master/#options

### mpvPlayerObject.setProperty <a id="mpvPlayerObject.setProperty" href="#mpvPlayerObject.setProperty">&#x23;</a>
设置属性

### mpvPlayerObject.setProperty(name,value,format) <a id="mpvPlayerObject.setProperty" href="#mpvPlayerObject.setProperty">&#x23;</a>
设置属性  
如果值不是一个结构体,可用format指定值类型  
format可选值为"string","bool","double","long","int",  
format也可以用数值常量指定类型,参考MPV文档，  
所有可用属性参考文档 http://mpv.io/manual/master/#properties

### mpvPlayerObject.setSubtitle(id) <a id="mpvPlayerObject.setSubtitle" href="#mpvPlayerObject.setSubtitle">&#x23;</a>
切换到指定的字幕  
字幕ID使用 getTrackId 函数获取

### mpvPlayerObject.setVolume() <a id="mpvPlayerObject.setVolume" href="#mpvPlayerObject.setVolume">&#x23;</a>
设置音量，值可以为 0 到 100

### mpvPlayerObject.stop() <a id="mpvPlayerObject.stop" href="#mpvPlayerObject.stop">&#x23;</a>
停止播放视频

### mpvPlayerObject.waitEvent <a id="mpvPlayerObject.waitEvent" href="#mpvPlayerObject.waitEvent">&#x23;</a>
等待视频播放器事件

### mpvPlayerObject.waitEvent(timeout) <a id="mpvPlayerObject.waitEvent" href="#mpvPlayerObject.waitEvent">&#x23;</a>
等待视频播放器事件  
参数指定超时秒数,如果在界面线程中建议指定为0  
返回的 event.id为0时为无效事件  
此函数也负责触发对象的默认事件，例如onPropertyChange,onEndFile等等  
通常应当在窗口定时器中持续调用此事件

### 自动完成常量
_MPV_END_FILE_REASON_EOF=0  
_MPV_END_FILE_REASON_ERROR=4  
_MPV_END_FILE_REASON_QUIT=3  
_MPV_END_FILE_REASON_REDIRECT=5  
_MPV_END_FILE_REASON_STOP=2  
_MPV_EVENT_AUDIO_RECONFIG=0x12  
_MPV_EVENT_CLIENT_MESSAGE=0x10  
_MPV_EVENT_COMMAND_REPLY=5  
_MPV_EVENT_END_FILE=7  
_MPV_EVENT_FILE_LOADED=8  
_MPV_EVENT_GET_PROPERTY_REPLY=3  
_MPV_EVENT_IDLE=0xB  
_MPV_EVENT_LOG_MESSAGE=2  
_MPV_EVENT_NONE=0  
_MPV_EVENT_PLAYBACK_RESTART=0x15  
_MPV_EVENT_PROPERTY_CHANGE=0x16  
_MPV_EVENT_QUEUE_OVERFLOW=0x18  
_MPV_EVENT_SEEK=0x14  
_MPV_EVENT_SET_PROPERTY_REPLY=4  
_MPV_EVENT_SHUTDOWN=1  
_MPV_EVENT_START_FILE=6  
_MPV_EVENT_TICK=0xE  
_MPV_EVENT_VIDEO_RECONFIG=0x11  
_MPV_FORMAT_BYTE_ARRAY=9  
_MPV_FORMAT_DOUBLE=5  
_MPV_FORMAT_FLAG=3  
_MPV_FORMAT_INT64=4  
_MPV_FORMAT_NODE=6  
_MPV_FORMAT_NODE_ARRAY=7  
_MPV_FORMAT_NODE_MAP=8  
_MPV_FORMAT_NONE=0  
_MPV_FORMAT_OSD_STRING=2  
_MPV_FORMAT_STRING=1  
