C++中的Media Foundation API和ID3标记
Media Foundation API and ID3 tag in C++
我正在编写一个实用程序,将未压缩的音频编码为MP3。我正在使用C++和媒体基础API,它在MP3编码方面非常娴熟。但我需要确保ID3标记位于文件的开头。我使用ID3Lib编写ID3标签数据,然后调用MFneneneba API来处理MP3的编码。在这样做的过程中,MP3的编码基本上是从文件的开头开始的,它覆盖了文件中的ID3标记数据。
是否有任何方法可以通过媒体基金会API进行编码,并使其不覆盖现有的ID3数据?
如果没有,是否有任何方法可以使用MF API写入ID3数据?我可以找到描述获取元数据的文章,但几乎没有关于编写元数据的文章。
一种可能的方法是使用接收器写入程序。
调用MFCreateFile打开您的id3标记文件。您收到一个指向IMFByteStream接口的指针。
调用IMFByteStream接口上的Seek或SetCurrentPosition在文件末尾进行查找(在ID3标记数据之后)。
调用MFCreateSinkWriterFromURL并传递IMFByteStream的指针,输出url使用NULL。
执行代码转换过程。
我没有尝试这个解决方案,所以也许伸卡手会在文件一开始就寻求。如果是这样,您可以尝试实现自己的IMFByteStream接口来避免这种情况。
相关文章:
- 将依赖名称显式标记为类型名和模板的奇怪之处
- 为什么output_editor Concept不需要output_e迭代器标记
- 标记 '","' 之前的预期主表达式
- 为什么g++在未执行的代码处标记强制转换错误
- muQueue.front() 给出了 const 实例,即使我没有将其标记为 const
- 使用 boost 进行标记化会给出相同的输出
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- C++标头错误 C2238 意外标记";"
- 语句错误:"","标记之前有"预期的')'
- 编译 llvm 3.1 时,为什么会出现错误:在">"标记之前预期主表达式
- 生成错误 - "." 标记之前的预期主表达式
- 错误:应在"{"标记之前使用"",""或";&qu
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 无法使用迭代器标记调度实例化模板
- 如何分隔字符串并将标记传递给方法
- SFML:错误:")"标记之前的预期主表达式
- 二进制读取mp3文件的ID3标记
- C++中的Media Foundation API和ID3标记