# sys.mediaFoundation 库模块帮助文档

[sys.mediaFoundation 使用指南](https://www.aardio.com/zh-cn/docs/library/sys/mediaFoundation/)

## sys.mediaFoundation 成员列表 <a id="sys.mediaFoundation" href="#sys.mediaFoundation">&#x23;</a>

调用系统自带 Media Foundation（零依赖）读写音视频。  
本模块提供底层接口声明、GUID 表与属性工具函数。  
写 MP4 请导入 sys.mediaFoundation.writer，读取解码请导入 sys.mediaFoundation.reader。  
MP3 解码请导入 sys.mediaFoundation.mp3Decoder

### sys.mediaFoundation.IMF2DBuffer <a id="sys.mediaFoundation.IMF2DBuffer" href="#sys.mediaFoundation.IMF2DBuffer">&#x23;</a>
IMF2DBuffer 接口声明类

### sys.mediaFoundation.IMFAttributes <a id="sys.mediaFoundation.IMFAttributes" href="#sys.mediaFoundation.IMFAttributes">&#x23;</a>
IMFAttributes 接口声明类

### sys.mediaFoundation.IMFMediaBuffer <a id="sys.mediaFoundation.IMFMediaBuffer" href="#sys.mediaFoundation.IMFMediaBuffer">&#x23;</a>
IMFMediaBuffer 接口声明类

### sys.mediaFoundation.IMFMediaType <a id="sys.mediaFoundation.IMFMediaType" href="#sys.mediaFoundation.IMFMediaType">&#x23;</a>
IMFMediaType 接口声明类

### sys.mediaFoundation.IMFSample <a id="sys.mediaFoundation.IMFSample" href="#sys.mediaFoundation.IMFSample">&#x23;</a>
IMFSample 接口声明类

### sys.mediaFoundation.IMFSinkWriter <a id="sys.mediaFoundation.IMFSinkWriter" href="#sys.mediaFoundation.IMFSinkWriter">&#x23;</a>
IMFSinkWriter 接口声明类

### sys.mediaFoundation.IMFSourceReader <a id="sys.mediaFoundation.IMFSourceReader" href="#sys.mediaFoundation.IMFSourceReader">&#x23;</a>
IMFSourceReader 接口声明类

### sys.mediaFoundation.PROPVARIANT() <a id="sys.mediaFoundation.PROPVARIANT" href="#sys.mediaFoundation.PROPVARIANT">&#x23;</a>
PROPVARIANT 结构体（只用于数值类型）

### sys.mediaFoundation.api <a id="sys.mediaFoundation.api" href="#sys.mediaFoundation.api">&#x23;</a>
已声明的 Media Foundation API 函数

### sys.mediaFoundation.available <a id="sys.mediaFoundation.available" href="#sys.mediaFoundation.available">&#x23;</a>
当前操作系统是否支持Media Foundation 组件（如部分 Windows Server 或精简版系统不支持）

### sys.mediaFoundation.createAttributes() <a id="sys.mediaFoundation.createAttributes" href="#sys.mediaFoundation.createAttributes">&#x23;</a>
[返回对象:sysMfAttributesObject](#sysMfAttributesObject)

### sys.mediaFoundation.createAttributes(attributes) <a id="sys.mediaFoundation.createAttributes" href="#sys.mediaFoundation.createAttributes">&#x23;</a>
创建 IMFAttributes 接口对象并批量设置属性，失败返回 null,错误信息。  
属性表规则见 setAttributes

### sys.mediaFoundation.createMediaType() <a id="sys.mediaFoundation.createMediaType" href="#sys.mediaFoundation.createMediaType">&#x23;</a>
[返回对象:sysMfAttributesObject](#sysMfAttributesObject)

### sys.mediaFoundation.createMediaType(attributes) <a id="sys.mediaFoundation.createMediaType" href="#sys.mediaFoundation.createMediaType">&#x23;</a>
创建 IMFMediaType 接口对象并批量设置属性，失败返回 null,错误信息。  
属性表规则见 setAttributes

### sys.mediaFoundation.getGUID(attrs,name) <a id="sys.mediaFoundation.getGUID" href="#sys.mediaFoundation.getGUID">&#x23;</a>
读取 GUID 属性，返回 win.guid 结构体

### sys.mediaFoundation.getPair(attrs,name) <a id="sys.mediaFoundation.getPair" href="#sys.mediaFoundation.getPair">&#x23;</a>
读取 UINT64 属性并拆分，返回 高32位,低32位。  
例如帧尺寸返回 宽,高，帧率返回 分子,分母

### sys.mediaFoundation.getUINT32(attrs,name) <a id="sys.mediaFoundation.getUINT32" href="#sys.mediaFoundation.getUINT32">&#x23;</a>
读取 UINT32 属性，不存在返回 null

### sys.mediaFoundation.guidName(guid) <a id="sys.mediaFoundation.guidName" href="#sys.mediaFoundation.guidName">&#x23;</a>
GUID 转可读名称，例如媒体子类型返回 "H264"、"AAC"

### sys.mediaFoundation.guids <a id="sys.mediaFoundation.guids" href="#sys.mediaFoundation.guids">&#x23;</a>
GUID 表：MF_MT_*、MFMediaType_*、MFVideoFormat_*、MFAudioFormat_*、CODECAPI_* 等

### sys.mediaFoundation.hresultText(hr,action) <a id="sys.mediaFoundation.hresultText" href="#sys.mediaFoundation.hresultText">&#x23;</a>
HRESULT 错误码转错误信息

### sys.mediaFoundation.setAttributes(attrs,attributes) <a id="sys.mediaFoundation.setAttributes" href="#sys.mediaFoundation.setAttributes">&#x23;</a>
批量设置属性，成功返回 true，失败返回 null,错误信息。  
键为 guids 表中的名称（或 GUID 字符串），值的类型决定写入方式：  
字符串 = GUID 名称或 GUID 字符串；数值、布尔值 = UINT32；  
{高32位,低32位} = UINT64，例如帧尺寸 {宽,高}、帧率 {分子,分母}

### sys.mediaFoundation.shutdown() <a id="sys.mediaFoundation.shutdown" href="#sys.mediaFoundation.shutdown">&#x23;</a>
对应一次 startup 调用（MFShutdown）

### sys.mediaFoundation.startup() <a id="sys.mediaFoundation.startup" href="#sys.mediaFoundation.startup">&#x23;</a>
初始化 Media Foundation（MFStartup），成功返回 true。  
可重复调用，每次调用都要对应一次 shutdown。  
writer、reader 已自动调用，一般无需手动调用

### sys.mediaFoundation.wrap(ptr,declInterface) <a id="sys.mediaFoundation.wrap" href="#sys.mediaFoundation.wrap">&#x23;</a>
把 API 返回的原生接口指针包装为接口对象，并释放原指针的引用

## sysMfAttributesObject 成员列表 <a id="sysMfAttributesObject" href="#sysMfAttributesObject">&#x23;</a>

### sysMfAttributesObject.GetCount(0) <a id="sysMfAttributesObject.GetCount" href="#sysMfAttributesObject.GetCount">&#x23;</a>
返回 HRESULT,属性个数

### sysMfAttributesObject.GetGUID(key,win.guid()) <a id="sysMfAttributesObject.GetGUID(key,win.guid" href="#sysMfAttributesObject.GetGUID(key,win.guid">&#x23;</a>
返回 HRESULT,GUID

### sysMfAttributesObject.GetUINT32(key,0) <a id="sysMfAttributesObject.GetUINT32" href="#sysMfAttributesObject.GetUINT32">&#x23;</a>
返回 HRESULT,值

### sysMfAttributesObject.GetUINT64(key,0) <a id="sysMfAttributesObject.GetUINT64" href="#sysMfAttributesObject.GetUINT64">&#x23;</a>
返回 HRESULT,值

### sysMfAttributesObject.Release() <a id="sysMfAttributesObject.Release" href="#sysMfAttributesObject.Release">&#x23;</a>
引用计数减一

### sysMfAttributesObject.SetGUID(key,guid) <a id="sysMfAttributesObject.SetGUID" href="#sysMfAttributesObject.SetGUID">&#x23;</a>
设置 GUID 属性

### sysMfAttributesObject.SetUINT32(key,value) <a id="sysMfAttributesObject.SetUINT32" href="#sysMfAttributesObject.SetUINT32">&#x23;</a>
设置 UINT32 属性，参数 @key 为 GUID 结构体

### sysMfAttributesObject.SetUINT64(key,value) <a id="sysMfAttributesObject.SetUINT64" href="#sysMfAttributesObject.SetUINT64">&#x23;</a>
设置 UINT64 属性
