0

我正在使用最新版本的 QuickTime SDK 并希望通过特定音频设备播放来自“电影”的音频(它们被称为电影,但可以是 mp3、m4a、mov 和其他文件类型)如果用户有一个以上的音频设备。

Apple 在他们的一个示例中有几个函数允许您执行此操作,但它们使用 C++。我在 C# 互操作程序集中的任何地方都找不到这些函数。它们是SetMovieAudioContextQTAudioContextCreateForAudioDevice

技术常见问题解答中列出了在 C++ 中调用这些函数的示例文档:一旦我拥有音频设备 ID,如何将 QuickTime 电影音频渲染到特定的音频设备?.

这是一个使用音频设备 GUID 执行此操作的示例 .NET 2003 C++ 程序:http: //developer.apple.com/samplecode/QTSetMovieAudioDevice/index.html#//apple_ref/doc/uid/DTS10003897

我将如何在 C# 中引用这些并能够将 Movie 对象传递给它们以设置音频设备上下文?我是否必须创建一个我调用的 C++ dll(这甚至可能)?

如果您需要 SDK,可以从https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=19910下载 Quicktime 7.3 SDK 。它需要一个免费的 ADC 帐户才能下载。

任何帮助将不胜感激。

谢谢,

约翰

4

1 回答 1

1

在 C# 中包装本机代码通常是一个漫长而艰巨的过程(除非您使用 Windows API,否则谷歌搜索通常可以提供 P/Invoke 签名)。您要么必须接受并为相关 API 使用的所有函数和结构创建托管 P/Invoke 包装器,要么可以使用C++/CLIVisual C++ Express Edition免费提供)。使用 C++/CLI,您可以直接调用本机代码,并提供 C# 代码可以使用的简化托管接口。

于 2009-07-03T08:31:04.747 回答