HTTP Live Streaming
HTTP Live Streaming - это стандарт потоковой передачи, предложенный Apple.См. Последний черновой стандарт .
. Используемые файлы
.m4a
для аудио (если вы хотите только поток аудио). .ts
для видео.Это транспорт MPEG-2, обычно с полезной нагрузкой h.264 / AAC.Он содержит 10 секунд видео и создается путем разделения исходного видеофайла или преобразования живого видео. .m3u8
для списка воспроизведения.Это UTF-8 версия формата WinAmp.
Даже когда это называется потоковой передачей, обычно есть задержка в одну минуту или около того, в течение которой конвертируется видео, записываются файлы ts и m3u8, и ваш клиент обновляет файл m3u8.
Все эти файлы являются статическими файлами на вашем сервере.Но в живых событиях добавляется больше файлов .ts, а файл m3u8 обновляется.
Поскольку вы пометили этот вопрос iOS, важно упомянуть связанные правила App Store:
- Вы можете использовать прогрессивную загрузку только для видео размером менее 10 минут или 5 МБ каждые 5 минут.В противном случае вы должны использовать HTTP Live Streaming.
- Если вы используете HTTP Live Streaming, вы должны предоставить как минимум один поток на 64 Кбит / с или с меньшей пропускной способностью (поток с низкой пропускной способностью может быть только аудио или аудио с неподвижным изображением).).
Пример
Получить инструменты потоковой передачи
Для загрузки инструментов потоковой передачи HTTP Live сделайте следующее:
Установленные инструменты командной строки:
/usr/bin/mediastreamsegmenter
/usr/bin/mediafilesegmenter
/usr/bin/variantplaylistcreator
/usr/bin/mediastreamvalidator
/usr/bin/id3taggenerator
Описание со страницы руководства:
- Сегментер медиапотока: создание сегментов из транспортных потоков MPEG-2 для потоковой передачи по HTTP.
- Сегментер медиафайлов: создание сегментов для HTTPПрямая трансляция из мультимедийных файлов.
- Variant Playlist Creator: создание списка воспроизведения для переключения потоков из сегментов потоковой передачи HTTP, созданных mediafilesegmenter.
- Средство проверки потока мультимедиа: проверка потоков и потоков HTTP Live Streaming.
- Генератор тегов ID3: создание тегов ID3.
Создание видео
Установите Macports, перейдите в терминал и sudo port install ffmpeg
.Затем преобразуйте видео в транспортный поток (.ts) с помощью этого сценария FFMpeg:
# bitrate, width, and height, you may want to change this
BR=512k
WIDTH=432
HEIGHT=240
input=${1}
# strip off the file extension
output=$(echo ${input} | sed 's/\..*//' )
# works for most videos
ffmpeg -y -i ${input} -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s ${WIDTH}x${HEIGHT} -vcodec libx264 -b ${BR} -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 0 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate ${BR} -bufsize ${BR} -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 30 -qmax 51 -qdiff 4 -level 30 -aspect ${WIDTH}:${HEIGHT} -g 30 -async 2 ${output}-iphone.ts
Это создаст один файл .ts.Теперь нам нужно разделить файлы на сегменты и создать список воспроизведения, содержащий все эти файлы.Для этого мы можем использовать mediafilesegmenter
от Apple:
mediafilesegmenter -t 10 myvideo-iphone.ts
Это сгенерирует один файл .ts для каждых 10 секунд видео плюс файл .m3u8, указывающий на все из них.
Настройка веб-сервера
Чтобы воспроизвести .m3u8
на iOS, мы указываем на файл с мобильным сафари.Конечно, сначала нам нужно разместить их на веб-сервере.Чтобы Safari (или другой проигрыватель) распознавал файлы ts, нам нужно добавить его типы MIME.В Apache:
AddType application/x-mpegURL m3u8
AddType video/MP2T ts
В lighttpd:
mimetype.assign = ( ".m3u8" => "application/x-mpegURL", ".ts" => "video/MP2T" )
Чтобы связать это с веб-страницы:
<html><head>
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
</head><body>
<video width="320" height="240" src="stream.m3u8" />
</body></html>
Для определения ориентации устройства см. Обнаружение и установка ориентации области просмотра iPhone и iPad с использованием JavaScript, CSS и метатеги .
Еще одна вещь, которую вы можете сделать, - это создавать разные версии видео с битрейтом, вставлять метаданные, чтобы читать их во время воспроизведения в качестве уведомлений,и, конечно, получайте удовольствие от программирования с помощью MoviePlayerController и AVPlayer.