8、微软媒体基础应用程序开发:转码技术详解

微软媒体基础应用程序开发:转码技术详解

1. 错误代码处理与转码会话

在媒体处理过程中,某些错误代码可以被忽略。例如, MF_E_NO_MORE_TYPES 是媒体基础转换(MFT)在返回所有支持的媒体类型后返回的错误代码,它并不表示失败。

使用转码 API 构建部分转码拓扑后,可将该拓扑传递给媒体基础(MF)会话以启动实际的转码过程。转码会话的行为与播放会话相同,运行所需的代码也与播放器中的会话代码几乎相同。

不过,转码拓扑在拓扑解析阶段比播放器在播放过程中更容易失败。拓扑并非实际处理数据的 MF 组件,而是由一组不完整的激活对象组成,用于初始化和实例化实际的源、MFT 和接收器。转码 API 构建的部分拓扑可能因多种原因无法渲染,比如在拓扑解析阶段,MF 可能找不到将源内容转换为请求输出格式的 MFT;或者转码配置文件中设置的输出视频媒体类型不一致,没有编码器接受该类型。

与播放器类似,各组件之间的通信大多通过 CTranscodeApi 类实现的 IMFAsyncCallback 接口异步进行。以下是 CTranscodeApi 类实现的核心 IMFAsyncCallback::Invoke() 方法:

// 
// IMFAsyncCallback::Invoke implementation.  This is the function called by the media   
// session whenever any
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值