2

質問はばかげているように聞こえるかもしれませんが、これは次のとおりです。オーディオキューの使用方法を学んでいます。最近、aqtestがiPhone用ではないことがわかるまで、私が取った例(aqtest)は私にとって良いガイドでした。 。(私は愚かです)私はインターネットの周りでサービスを提供し、iPhone用のFSRefがないことを知りました。

可能であれば、FSRefの問題を回避する方法を見つけたいと思います。そこで、ここに質問があります。iPhoneSDKに存在するFSRefの代わりに他のものを使用できますか?それとも私は何かが足りないのですか?

4

2 に答える 2

2

FSRef は電話ではまったく利用できません。FSRef は、ファイル参照を表す方法です。ほとんどの場合、 の代わりに推奨されるのは、file: スキームを使用した NSURL です。

そうは言っても、iPhone 用のSpeakHereの例は確かにあり、FSRef を使用していません。

aqtestに関しては、問題のあるコードは次のとおりだと思います。

FSRef fsref;    
XThrowIfError(FSPathMakeRef(filePath, &fsref, NULL), "Input file not found");

XThrowIfError(AudioFileOpen(&fsref, fsRdPerm, 0, &myInfo.mAudioFile), "AudioFileOpen failed");

私が言ったように、FSRef はもはやファイル参照を処理するための推奨される方法ではなく、電話では利用できません。NSURL はそうです。したがって、URL ベースのバージョンに切り替えます。

NSString *pathString = [NSString stringWithCString: filePath];
if (!pathString) { printf("can't parse file path\n"); return; }

NSURL *url = [NSURL fileURLWithPath:pathString];
if (! url) { printf("can't make file url\n"); return; }

XThrowIfError(AudioFileOpenURL (url, kAudioFileReadPermission, 0/*inFileTypeHint*/, &myInfo.mAudioFil), "can't open file");

もちろん、多くの aqtest 自体は電話では動作しません。デバイス上でコマンドライン ツールを実行することは、結局のところサポートされていません。

于 2009-07-22T08:29:11.837 に答える
1

aqplay.cpp のコードを見ましたか?
これは、 Core Audio -> SimpleSDK -> AudioQueueToolsから取得したサンプル コードにあります。

を使用してCFURLRefを開きますAudioFileID

そのコードのほとんどは、iPhone 用にコンパイルする必要があるように見えます。

于 2009-07-23T09:14:16.287 に答える