gpt4 book ai didi

iphone - 在 iPhone 上,如何使用 fileHandle 即时下载 mp3 文件?

转载 作者:行者123 更新时间:2023-12-03 19:47:47 29 4
gpt4 key购买 nike

我正在尝试在我的流应用程序上实现 AudioFileStreamSeek 功能。但我没有办法让它运行。甚至马特·加拉格尔也在他的博客上说道:

Icidentally, the AudioFileStreamSeek function seems completely broken. If you can't get it to work (as I couldn't) just seek to a new point in the file, set discontinuous to true and let AudioFileStream deal with it.

我的代码看起来像这样,但我无法让它工作:

    NSString *path = [[NSString alloc] initWithContentsOfURL: url];

NSLog(@"url = %@", path);
SInt64 currentOffset;
UInt32 flags = 0;

OSStatus status = AudioFileStreamSeek( audioFileStream, 150, &currentOffset, &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;
}
}

请帮忙...

最佳答案

缺乏任何其他解决方案,您可以做的就是创建一个 NSConnection,然后当您收到 NSData 时,您可以通过处理收到到 NSConnectionDelegate 的每个新 NSData block 来有效地创建流。 NSConnection 将确保按顺序将其发送给您,因此您不必担心顺序是否正确。但请注意,根据您的应用程序,您可能需要在主应用程序线程之外执行此操作,以便即使下载停止并且您必须重新缓冲,用户仍然可以使用您的应用程序。

关于iphone - 在 iPhone 上,如何使用 fileHandle 即时下载 mp3 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1348538/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com