2009-03-20 11 views
1

AudioFileStreamSeekでアップルのマニュアルがかなり限定されていて、実際の使用例はどこにも見つかりません。私は働いているストリーミングオーディオプレーヤーを持っていますが、私はAudioFileStreamSeekが広告されたように動作するように見えることができません...誰もiPhone用のAudioFileStreamSeekの実例を提供できますか?

ヘルプヒントや少しの例が大いにありがとう!

+0

あなたが解決策を見つけた場合、私に教えてください:MattのコードAudioStreamer.m

ルック。まだスタックされています! – lostInTransit

答えて

0

私が間違っていない限り、これは3.0 SDKでしか利用できないため、NDAで利用できます。あなたはこれをApple Beta forumsに持って行くべきでしょうか?

私は訂正しました。オンラインの2.2.1ドキュメントで検索を行うと、AudioFileStreamSeekは表示されません。それを見つけるには、手動で文書を掘り下げなければなりません。

+0

いいえ、私はAudioFileStreamSeekのXCodeドキュメントをチェックしています。 iPhone OS 2.0以降で利用できます。 – Paul

+0

私は訂正しました。オンラインの2.2.1ドキュメントで検索を行うと、AudioFileStreamSeekは表示されません。それを見つけるには、手動で文書を掘り下げなければなりません。 –

1

は、私はこの作品聞いています:

AudioQueueStop(audioQueue, true); 
UInt32 flags = 0; 
err = AudioFileStreamParseBytes(audioFileStream, length, bytes, 
           kAudioFileStreamParseFlag_Discontinuity); 

OSStatus status = AudioFileStreamSeek(audioFileStream, framePacket.mPacket, 
             &currentOffset, &flags); 
NSLog(@"Setting next byte offset to: %qi, flags: %d", (long long)currentOffset, flags); 

// then read data from the new offset set by AudioFileStreamSeek 
[fileHandle seekToFileOffset:currentOffset]; 
NSData* data = "" readDataOfLength:4096]; 

flags = kAudioFileStreamParseFlag_Discontinuity; 
status = AudioFileStreamParseBytes(stream, [data length], [data bytes], flags); 
if (status != noErr) 
{ 
    NSLog(@"Error parsing bytes: %d", status); 
} 
0

がAudioFileStreamSeekによって返されたバイトオフセットにオフセットデータ(kAudioFileStreamProperty_DataOffset)を追加することを忘れないでください。戻り値はオーディオデータへのオフセットであり、データオフセットは無視されます。

シーク前後のAudioQueueを停止してから再起動することもお勧めします。

0

Matt Gallagherは、彼の例の"Streaming and playing an MP3 stream"AudioFileStreamSeekを使用しています。

SInt64 seekPacket = floor(newSeekTime/packetDuration); 
err = AudioFileStreamSeek(audioFileStream, seekPacket, &packetAlignedByteOffset, &ioFlags); 
関連する問題