Ответ 1
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 Streaming Tools, сделайте это:
- Получить учетную запись разработчика Mac или iPhone.
- Перейдите на https://developer.apple.com и найдите "HTTP Live Streaming Tools", или посмотрите на https://developer.apple.com/streaming/.
Установленные инструменты командной строки:
/usr/bin/mediastreamsegmenter
/usr/bin/mediafilesegmenter
/usr/bin/variantplaylistcreator
/usr/bin/mediastreamvalidator
/usr/bin/id3taggenerator
Описания из справочной страницы:
- Сегментер медиапотока: создание сегментов из транспортных потоков MPEG-2 для потоковой передачи по HTTP.
- Сегментер мультимедийных файлов: создание сегментов для потоковой передачи по HTTP из мультимедийных файлов.
- Variant Playlist Creator: создайте список воспроизведения для переключения потоков из потоковых сегментов HTTP Live, созданных mediafilesegmenter.
- Media Stream Validator: проверяет потоковые HTTP-потоки и серверы.
- Генератор тегов 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. Теперь нам нужно разделить файлы на сегменты и создать список воспроизведения, содержащий все эти файлы. Мы можем использовать Apple mediafilesegmenter
для этого:
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.