Ответ 1
Я могу только комментировать предварительно записанное видео, а не прямую трансляцию...
Нужно ли конвертировать MP4 видео в M8U8?
Я думаю, что вы имеете в виду .m3u8. По сути, вам нужно взять ваш файл .mp4 и:
-
Закодируйте его в дружественный битрейт для пропускной способности мобильной связи. Для этого вы можете использовать приложение Apple Compressor *, оно имеет предустановки для HTTP Live Streaming. Выберите что-то около 1000 кбит/с, если вы играете вокруг.
-
Нарежьте его с помощью Apple mediafilesegmenter. В итоге вы получите множество небольших файлов .ts и манифест (.m3u8), в котором они перечислены.
-
Нажмите файл .m3u8 в вашем плеере (initWithContentURL...), и все готово.
-
Повторите шаги 1 и 2 выше и укажите разные полосы пропускания. Мы пошли на пресеты в компрессоре.
-
В итоге вы получите разные версии вашего видео, по одной на каждую полосу пропускания, используйте инструмент varplayplaylistcreator от Apple, чтобы создать основной файл списка воспроизведения, который будет указывать вашему проигрывателю каждую полосу пропускания, чтобы он мог автоматически переключаться.
-
Вставьте все ваши файлы .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