微软媒体基础应用开发:转码与MFT技术解析
1. 转码方法概述
在媒体处理中,将内容从一种格式转换为另一种格式是常见需求。这里介绍两种转码方法:转码API和源读取器/接收器写入器方法。
1.1 转码API
转码API旨在快速创建转码拓扑,并将数据从一种文件格式转换为另一种。它是一种简化的转码方法,适用于对可变比特率、多遍编码、文件中的多个流或实时转码情况不太关注的场景。
1.2 源读取器方法
源读取器方法则更加灵活。通过这种方法,可以单独控制每个流的行为,处理多个流、动态格式更改和可变比特率。不过,由于源读取器和接收器写入器是为通用媒体访问而设计的,它们缺乏专用转码方法的一些优势。例如,转码API从设计上就避免了流同步问题,能够处理两个流之间时间戳的微小差异随时间累积导致的音视频不同步问题。
1.3 选择合适的转码方法
转码API和源读取器/接收器写入器方法都不能解决所有转码情况。在许多情况下,可能需要对转码过程进行更多控制,并直接访问转码拓扑中的MF组件,这时就需要手动创建转码拓扑。虽然这个过程可能很繁琐,但在设计转码过程时提供了更大的灵活性。最终,在应用程序中使用的转码方法应根据应用程序的需求和预期遇到的场景来决定。
2. 核心类定义
2.1 CTranscodeApi类
class CTranscodeApi : public IMFAsyncCallback
{
public:
CTranscodeApi(void);