2012-04-17 13 views
2

ExtAudioFileOpenURLのような関数の中には、URLをファイルのパスとしてのみ受け入れるものがあります。これは問題ありませんが、ファイルがコンテナまたはメモリバッファ内にある場合、これを指すURLを作成することはできますか?Cocoa:ExtAudioFileOpenURLのメモリバッファから読み込むためのCFUrl/NSUrlの作成方法

例えば

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

または私は一時ファイルにデータを抽出し、それへのURLを作成する必要がありますか?

答えて

3

おそらく、あなたは最初にあなたが必要となりますExtAudioFile APIのExtAudioFileWrapAudioFileIDを使用して結果をラップ、その後、AudioFileInitializeWithCallbacksAudioFileIDを作成します。このアプローチを使用してメモリにファイルを作成/読み込むには、CF/NS-URLは必要ありません。

+1

これは、メモリバッファから読み取る正しい方法だと思います。私が判明したように、ファイルデータをストリーミングして、AudioToolboxのAudioFileStreamとAudioConverterの組み合わせを使用して、ExtAudioFileを完全にスキップすることができました。 –

0

メモリ領域へのURLを作成することはできません。

あなたの特定の目的のためには、ジャスティンが提案したものを行うか、Audio Queue Servicesを使用する必要があります。

関連する問題