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

Мое приложение отклонено Apple, и они приводят причину

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

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

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

  1. Мне нужно конвертировать видео mp4 в M8U8?
  2. Я должен использовать MPMoviePlayer?
  3. Могу ли я конвертировать видео mp4 в формат M8U8 во время выполнения и как реализовать потоковую передачу в реальном времени
  4. Есть ли какой-нибудь пример кода для прямой трансляции HTTP?

Заранее спасибо.


person Nikh1414    schedule 25.07.2012    source источник
comment
Не могли бы вы уточнить, отправляет ли ваше приложение видео в реальном времени или просматривает видео в реальном времени? При просмотре, насколько вы контролируете источник видеопотока?   -  person vipw    schedule 25.07.2012
comment
В моем приложении есть функция просмотра видео, и видео длится примерно от 1 до 1,30 часа и имеет формат mp4. Когда я отправил приложение в Apple, я использовал MPMovieplayer. Но теперь, согласно Apple, я должен использовать протокол потоковой передачи HTTP Live, и для его реализации мне нужно изменить URL-адрес видео с формата mp4 на формат m3u8, чтобы преобразовать URL-адрес видео из формата mp4 в формат m3u8, и когда я получаю url-адрес m3u8, как играть в моем приложении. Спасибо vipw.   -  person Nikh1414    schedule 26.07.2012
comment
Привет Них, ищу такую ​​же разработку. У меня есть потоковый движок wowza и iOS Media lib, я не знаю, как транслировать видеокадры в wowza из проекта iOS media lib для потоковой передачи в реальном времени. Не могли бы вы поделиться образцом кода?   -  person Stella    schedule 06.08.2014


Ответы (3)


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

Мне нужно конвертировать видео mp4 в M8U8?

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

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

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

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

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

  5. В итоге у вас будут разные версии вашего видео, по одной для каждой полосы пропускания, используйте инструмент variantplaylistcreator от 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/doc/uid/DTS40012238

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

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

person hemal    schedule 14.10.2012
comment
Привет Хэм, ищу такую ​​же разработку. У меня есть потоковый движок wowza и iOS Media lib, я не знаю, как транслировать видеокадры в wowza из проекта iOS media lib для потоковой передачи в реальном времени. Не могли бы вы поделиться образцом кода? - person Stella; 06.08.2014

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

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

Не забудьте включить несколько версий вашего файла с битрейтом, включая 64 Кбит / с. Если вы не включите поток со скоростью 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
person Grant    schedule 01.11.2012

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

Во время выполнения мне не удалось найти ни одного плагина, я мало искал.

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

person Arpit B Parekh    schedule 08.03.2013