1

我发现 Apple 在 AudioFileStreamSeek 上的文档非常有限,而且我在任何地方都找不到任何实际使用的示例。我有一个工作流音频播放器,但我似乎无法让 AudioFileStreamSeek 像宣传的那样工作......

任何帮助提示或一个小例子将不胜感激!

4

4 回答 4

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);
}
于 2009-08-05T02:58:41.647 回答
0

除非我弄错了,否则这仅在 3.0 SDK 中可用,因此在 NDA 下可用。也许你应该把它带到Apple Beta 论坛

我站得更正了。如果您在在线 2.2.1 文档中进行搜索,AudioFileStreamSeek 不会出现。您必须手动挖掘文档才能找到它。

于 2009-03-20T16:51:02.933 回答
0

Matt GallagherAudioFileStreamSeek在他的示例“流式传输和播放 MP3 流”中使用。

看看马特的代码AudioStreamer.m

SInt64 seekPacket = floor(newSeekTime / packetDuration);
err = AudioFileStreamSeek(audioFileStream, seekPacket, &packetAlignedByteOffset, &ioFlags);
于 2012-01-13T10:19:43.030 回答
0

不要忘记将数据偏移量 (kAudioFileStreamProperty_DataOffset) 添加到 AudioFileStreamSeek 返回的字节偏移量。返回值是音频数据的偏移量,忽略数据偏移量。

在搜索之前/之后停止然后重新启动 AudioQueue 也是一个好主意。

于 2011-03-29T17:18:18.343 回答