gpt4 book ai didi

c++ - C++ 中的媒体基础 API 和 ID3 标签

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:31 25 4
gpt4 key购买 nike

我正在编写一个实用程序,可以将未压缩的音频编码为 MP3。我正在使用 C++ 和媒体基础 API,它非常擅长编码为 MP3。但我需要确保 ID3 标记位于文件的开头。我正在使用 ID3Lib 编写 ID3 标签数据,然后调用 MF API 来处理 MP3 编码。这样做时,MP3 的编码基本上是从文件的开头开始,并覆盖文件中的 ID3 标记数据。

有没有什么方法可以通过媒体基础 API 进行编码,并且不会覆盖现有的 ID3 数据?

如果没有,有什么方法可以使用MF API写入ID3数据吗?我可以找到描述获取元数据的文章,但几乎没有关于编写元数据的文章。

最佳答案

一种可能的方法是使用接收器编写器。

调用MFCreateFile打开您的 id3 标记文件。您收到指向 IMFByteStream 接口(interface)的指针。

在IMFByteStream接口(interface)调用Seek或SetCurrentPosition寻找文件末尾(ID3标签数据后)。

调用MFCreateSinkWriterFromURL并传递 IMFByteStream 的指针,使用 NULL 作为输出 url。

执行转码过程。

我没有尝试过这个解决方案,所以 sinkwriter 可能会在文件的开头查找。如果是这样,您可以尝试实现自己的 IMFByteStream 接口(interface)来避免这种情况。

关于c++ - C++ 中的媒体基础 API 和 ID3 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com