【问题标题】:On iPhone, how can I use fileHandle to download a mp3 file on the fly?在 iPhone 上,如何使用 fileHandle 即时下载 mp3 文件?
【发布时间】:2009-08-28 18:03:13
【问题描述】:

我正在尝试在我的流媒体应用上实现 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, &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;
        }
    }

请帮忙...

【问题讨论】:

  • 所以在 iphone 上的流媒体应用中寻找功能是不可能的?

标签: iphone url audio-streaming filehandle


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 2011-04-08
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2011-05-31
    相关资源
    最近更新 更多