Cocoa:如何创建CFUrl / NSUrl以从ExtAudioFileOpenURL的内存缓冲区中读取

时间:2012-04-17 04:15:07

标签: macos cocoa file url buffer

某些函数(如ExtAudioFileOpenURL)仅接受URL作为文件的路径。这很好但是如果你的文件在容器或内存缓冲区中,是否仍然可以创建一个指向这个的URL?

例如

char * w = read_sample_bytes(...);
CFURLRef url = CFURLCreateForBuffer(..., w, ...);
ExtAudioFileOpenURL(url, &extAudioFile);
etc..

或者我是否必须将数据提取到临时文件并创建一个URL?

2 个答案:

答案 0 :(得分:3)

据推测,您首先要使用AudioFileID创建AudioFileInitializeWithCallbacks,然后使用ExtAudioFileWrapAudioFileID将结果包装为您需要的ExtAudioFile API。使用这种方法在内存中创建/读取文件不需要CF / NS-URL。

答案 1 :(得分:0)

您无法创建内存区域的URL。

出于特定目的,您必须执行Justin建议或使用Audio Queue Services