Кто-нибудь может предоставить рабочий пример AudioFileStreamSeek для iPhone? - PullRequest
1 голос
/ 20 марта 2009

Я нахожу документацию Apple довольно ограниченной на AudioFileStreamSeek, и я нигде не могу найти никаких примеров реального использования У меня есть работающий потоковый аудиоплеер, но я просто не могу заставить AudioFileStreamSeek работать так, как рекламируется ...

Буду признателен за любые советы или небольшой пример!

Ответы [ 4 ]

1 голос
/ 05 августа 2009

Мне сказали, что это работает:

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 голосов
/ 13 января 2012

Мэтт Галлахер использует AudioFileStreamSeek в своем примере «Потоковое воспроизведение и воспроизведение потока MP3» .

Посмотрите на код Мэтта AudioStreamer.m:

SInt64 seekPacket = floor(newSeekTime / packetDuration);
err = AudioFileStreamSeek(audioFileStream, seekPacket, &packetAlignedByteOffset, &ioFlags);
0 голосов
/ 29 марта 2011

Не забудьте добавить смещение данных (kAudioFileStreamProperty_DataOffset) к смещению байтов, возвращенному AudioFileStreamSeek. Возвращаемое значение представляет собой смещение в аудиоданных и игнорирует смещение данных.

Это также хорошая идея, чтобы остановить и затем перезапустить AudioQueue до / после поиска.

0 голосов
/ 20 марта 2009

Если я не ошибаюсь, это доступно только в 3.0 SDK, и, следовательно, под NDA. Может быть, вы должны принять это на бета-форумах Apple ?

Я стою исправлено. AudioFileStreamSeek не отображается, если вы выполняете поиск в онлайн-документации по 2.2.1. Вы должны вручную копаться в документах, чтобы найти его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...