Прямая трансляция HTTP с помощью ios

Мое приложение отклонено яблоком, и они дают причину

Мы обнаружили, что ваше приложение не использует протокол HTTP Live Streaming с базовым потоком 64 кбит/с для трансляции потокового видео

Затем я ищу решения и через Интернет. Все решения предполагают, что я должен использовать расширение .U8F8 и .ts для прямой трансляции, но мое приложение имеет формат mp4. Я уже использовал MPMoviePlayerController для потоковой передачи.

Итак, мой вопрос:

  • Нужно ли преобразовывать mp4-видео в M8U8?
  • Нужно ли использовать MPMoviePlayer?
  • Могу ли я конвертировать mp4-видео в формат M8U8 во время выполнения и как реализовать потоковое воспроизведение в реальном времени.
  • Есть ли какой-либо примерный код для потоковой передачи HTTP?

Спасибо заранее.

Ответ 1

Я могу только комментировать предварительно записанное видео, а не прямую трансляцию...

Нужно ли конвертировать MP4 видео в M8U8?

Я думаю, что вы имеете в виду .m3u8. По сути, вам нужно взять ваш файл .mp4 и:

  1. Закодируйте его в дружественный битрейт для пропускной способности мобильной связи. Для этого вы можете использовать приложение Apple Compressor *, оно имеет предустановки для HTTP Live Streaming. Выберите что-то около 1000 кбит/с, если вы играете вокруг.

  2. Нарежьте его с помощью Apple mediafilesegmenter. В итоге вы получите множество небольших файлов .ts и манифест (.m3u8), в котором они перечислены.

  3. Нажмите файл .m3u8 в вашем плеере (initWithContentURL...), и все готово.

  4. Повторите шаги 1 и 2 выше и укажите разные полосы пропускания. Мы пошли на пресеты в компрессоре.

  5. В итоге вы получите разные версии вашего видео, по одной на каждую полосу пропускания, используйте инструмент varplayplaylistcreator от Apple, чтобы создать основной файл списка воспроизведения, который будет указывать вашему проигрывателю каждую полосу пропускания, чтобы он мог автоматически переключаться.

  6. Вставьте все ваши файлы .ts и .m3u8 в сеть и используйте инструмент mediastreamvalidator, чтобы убедиться, что ваш главный файл списка воспроизведения в порядке и правильно указывает на каждую версию.

Убедитесь, что битрейт приличного качества стоит первым в главном файле списка воспроизведения, поскольку именно эта версия воспроизводится первой. Мы пошли на что-то около отметки 1000 кбит/с.

Нужно ли использовать MPMoviePlayer?

Я не могу комментировать другие библиотеки, мы использовали MPMoviePlayer.

Могу ли я конвертировать видео mp4 в формат M8U8 во время выполнения и как реализовать прямую трансляцию

Вы можете для прямых трансляций, но для предварительно записанного видео сделать все это раньше. Разместите все свои файлы в Интернете, проверьте свой список воспроизведения (.m3u8) и воспроизводите видео, используя основной файл .m3u8.

Есть ли пример кода, доступного для прямой трансляции HTTP?

В нашей реализации клиент в iOS выполняет всю работу (например, переключение потоков в зависимости от доступной пропускной способности). Таким образом, вам просто нужно убедиться, что все ваши файлы находятся в нужном месте, прежде чем под рукой.

Компрессор - https://www.apple.com/final-cut-pro/compressor/ Инструменты командной строки инструментов mediafilesegmenter и mediastreamvalidator, доступные для загрузки с сайта сети разработчиков Apple.

В этих статьях есть все, что вам нужно знать: https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html https://developer.apple.com/library/archive/TechNotes/tn2288/_index.html #//apple_ref/док /UID/DTS40012238

Откройте это в Safari: https://developer.apple.com/streaming/examples/advanced-stream.html - Каждый "Gear" - это отдельный поток битрейта

Взломайте этот файл .m3u8 в текстовом редакторе для примера файла основного списка воспроизведения: https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8

Ответ 2

Если ваш MP4 файл занимает больше 10 минут, вам нужно будет использовать HLS для потоковой передачи файла.
Для прямых трансляций вы можете использовать такое программное обеспечение, чтобы закодировать его в прямом эфире: http://www.mcommstv.com/products/mcomms-transcode

Если это файл VoD, предварительно предварительно закодируйте его с помощью вашего любимого кодировщика H.264/AAC.

Не забудьте включить несколько версий битрейта вашего файла, включая 64kbps. Если вы не включите поток 64 Кбит/с, Apple отклонит приложение. Мы обычно используем: 64k 120k 240k 480k 800Kbps 1200kbps Битрейт, который вы перечисляете первым в своем мультиручном файле m3u8, будет воспроизводиться в течение первых 30 секунд, сначала установите средний бит, чтобы не было слишком много времени, чтобы начать потоковое вещание, когда пользователи находятся в медленных сетях 3G. Вот пример:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=120000
120k/Playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=60000
60k/Playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=240000
240k/Playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=480000
480k/Playlist.m3u8

Ответ 3

Мы должны преобразовать любой аудиофайл в m3U8 formnat.

Во время выполнения я не мог найти никакого плагина. Я искал немного.

мы можем поместить этот URL в HTML5 с помощью тега Video. Мы также можем загружать видео по запросу.