【发布时间】:2021-01-31 02:01:02
【问题描述】:
我正在尝试使用适用于 Windows 的 Quicktime 7 API(我知道),因为最终我将尝试更改 Quicktime 文件中的音频通道布局标志,但现在我只是尝试创建一个“电影”对象。
我非常熟悉 Python 和 JavaScript 等语言,但对 C++ 很陌生。尽管如此,我还是能够将以下代码全部链接起来并很好地编译:
#include <iostream>
#include <Movies.h>
#include <QTML.h>
int main()
{
std::string mystring = "D:/CodingProjects/testfiles/mytestfile.mov";
OSErr initerr = InitializeQTML(0L);
OSErr entererr = EnterMovies();
Movie myMovie;
short myResID;
Size mySize = (Size)strlen(mystring.c_str()) + 1;
Handle myHandle = NewHandleClear(mySize);
BlockMove(mystring.c_str(), *myHandle, mySize);
OSErr newmovieerr = NewMovieFromDataRef(&myMovie, 0, &myResID, myHandle, URLDataHandlerSubType);
}
一切似乎运行良好,initerr 和 entererr 返回 0,整个程序也以 0 退出。问题出在 NewMovieFromDataRef 函数中。 newmovieerr 似乎返回代码 -2000 并且没有将任何内容 (0x00000000) 分配给 myMovie。查了一下,原来这个错误码是Quicktime错误,意思是“couldNotResolveDataRef”。
我也尝试使用函数NewMovieFromHandle 创建一个Movie 并得到相同的错误代码。
谁能帮我弄清楚我做错了什么?
【问题讨论】: