Сохранение данных буфера AVPlayer

Я играю аудио с моего сервера, используя AVPlayer в моем приложении. Теперь я хочу, чтобы, когда он полностью буферизовал аудио, я мог сохранить эти данные в приложении для последующего воспроизведения. Итак, как я могу получить доступ к данным буфера и сохранить их для дальнейшего использования?

Ответы

Ответ 1

Я думаю, что ваша проблема будет похожа на загрузку аудио или музыкальных файлов с сервера, а затем воспроизведение их в вашем приложении. В любом случае, если вы хотите сохранить аудио в своем приложении, не лучше ли скачать его, а затем воспроизвести? В любом случае, пожалуйста, проверьте эти ссылки.

Как загрузить аудиофайлы с сервера в мое приложение iPhone?

Загрузите музыкальный файл с сервера и сохраните его в своем приложении

Надеюсь, они помогут.

Ответ 2

Вы можете предоставить делегат resourceLoader для управления процессом загрузки ресурса из AVPlayer а затем предоставить ему данные по мере того, как он запрашивает и становится доступным. Загрузчик ресурсов является свойством AVURLAsset. Я задокументировал полное решение в своем блоге, но основная идея заключается в том, чтобы переключить протокол вашего URL-адреса на что-то нестандартное, чтобы загрузчик ресурсов AVURLAsset требовал помощи вашего приложения в загрузке этого URL-адреса. Затем, когда вы получите AVAssetResourceLoaderDelegate вызовы AVAssetResourceLoaderDelegate, начните загрузку файла и попытайтесь ответить на ожидающие запросы, полученные от этих обратных вызовов делегата, как и когда у вас есть данные. Это позволит прогрессивно загружать/воспроизводить контент без необходимости запуска полноценного HTTP-сервера в вашем приложении или использования других сложных решений.

Ответ 3

Простота использования... с использованием того же URL-адреса для вашего аудиопотока, использующего NSURLConnection, чтобы получить данные и сохранить с помощью NSFilehandler... просто сделал это сам, в то время как потоковое аудио и сохранение в то же время в mp3... позвольте мне знать, нужен ли вам образец кода...

Ответ 4

Команда в Calm открыла для себя нашу реализацию. Он доступен как CocoaPod. Он называется PersistentStreamPlayer.

Он действует как resourceLoader. Большим преимуществом по сравнению с другими реализациями является то, что он не требует, чтобы двоичные данные были в памяти в любой точке, поэтому он поддерживает более крупные файлы.

Особенности включают:

  • потоковая передача аудиофайла, запуск воспроизведения, как только будут доступны первые данные.
  • также сохраняет потоковые данные в URL-адрес файла, как только буфер завершается выставляет timeBuffered, полезно для отображения индикаторов выполнения буфера в пользовательском интерфейсе
  • обрабатывает повторный запуск аудиофайла после того, как поток буферных потоков (например, медленная сеть)
  • простые способы воспроизведения, паузы и уничтожения (уничтожить все ресурсы памяти)
  • не сохраняет данные аудиофайла в памяти, так что он поддерживает большие файлы, которые не вписываются в оперативную память.

Вы можете найти его здесь: https://github.com/calmcom/PersistentStreamPlayer

Ответ 5

Вы не можете получить доступ к буфере AVPlayer. Некоторые подсказки: вы можете поместить предварительные просмотры (короткие версии аудио) ваших аудиофайлов на свой сервер, чтобы ваши пользователи могли прослушивать предварительные просмотры, прежде чем загружать полные аудиофайлы, или вы можете искать пользовательских аудиопотоков с открытым исходным кодом, возможно они позволят вам получить доступ к буферу потока. Удачи!