Прогрессивная загрузка с использованием аудио стримера Мэтта Галлахера - PullRequest
1 голос
/ 07 августа 2010

Я совершенно n00b, когда говорю об аудио. Я использую аудиопоток Мэтта Галлахера в своем радио-приложении. Как я могу использовать прогрессивную загрузку? Кроме того, ExtAudioFile также является хорошей идеей:)

Edit:

Использовал это:

length = CFReadStreamRead(stream, bytes, kAQDefaultBufSize);            
if(!data)
    data =[[NSMutableData alloc] initWithLength:0];             
[data appendData:[NSData dataWithBytes:bytes length:kAQDefaultBufSize]];

Теперь я могу сохранить аудиоданные, используя метод writeToFile: atomically: NSData, но звук не воспроизводится. Кроме того, если я пытаюсь загрузить его на AVAudioPlayer, я получаю сообщение об ошибке.

1 Ответ

1 голос
/ 20 февраля 2011

Я пытаюсь сделать что-то подобное. В итоге я сделал это так:

        length = CFReadStreamRead(stream, bytes, kAQDefaultBufSize); 

        // Save data
        if (saveLocation){
            NSFileHandle *mp3 = [NSFileHandle fileHandleForWritingAtPath:saveLocation];

            [mp3 seekToEndOfFile];
            [mp3 writeData:[NSData dataWithBytes:bytes length:length]];

            [mp3 closeFile];
        }

Некоторые проблемы, о которых следует знать. Вы должны убедиться, что файл в saveLocation существует. Я сделал новый инициализатор с mp3-адресом и путем saveLocation, и поставил там чек. Кроме того, имейте в виду, что если пользователь выполняет поиск в mp3, он этого не поймет. По сути, он будет записывать именно то, что воспроизводится. Он недостаточно умен, чтобы понять, что позиция воспроизведения сместилась. Однако, если вы просто запустите поток и дадите ему закончить весь mp3 (при условии, что у него есть конец), он должен сохраниться просто отлично.

...