ストリーミング アプリに AudioFileStreamSeek 機能を実装しようとしています。しかし、これを実行する方法はありません。Matt Gallagherでさえ、彼のブログで次のように述べています。
偶然にも、AudioFileStreamSeek 関数は完全に壊れているようです。ファイル内の新しいポイントをシークするだけで機能しない場合 (私はできませんでした)、discontinuous を true に設定し、AudioFileStream に処理させます。
私のコードは次のようになりますが、動作させることができません:
NSString *path = [[NSString alloc] initWithContentsOfURL: url];
NSLog(@"url = %@", path);
SInt64 currentOffset;
UInt32 flags = 0;
OSStatus status = AudioFileStreamSeek( audioFileStream, 150, ¤tOffset, &flags );
NSLog(@"Setting next byte offset to: %qi, flags: %d", (long long)currentOffset, flags);
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath: path];
// then read data from the new offset set by AudioFileStreamSeek
[fileHandle seekToFileOffset:currentOffset];
NSData * data = [fileHandle readDataOfLength:4096];
NSLog(@"data length %d, bytes %d", [data length], [data bytes]);
if (discontinuous)
{
err = AudioFileStreamParseBytes(audioFileStream, length, bytes, kAudioFileStreamParseFlag_Discontinuity);
if (err)
{
[self failWithErrorCode:AS_FILE_STREAM_PARSE_BYTES_FAILED];
return;
}
}
else
{
err = AudioFileStreamParseBytes(audioFileStream, length, bytes, 0);
if (err)
{
[self failWithErrorCode:AS_FILE_STREAM_PARSE_BYTES_FAILED];
return;
}
}
助けてください...