http адаптивная потоковая передача

Есть ли какое-либо решение для потоковой передачи с открытым исходным кодом, поддерживающее адаптивную потоковую передачу по протоколу Http? Согласно моим исследованиям, VLC не поддерживает адаптивную потоковую передачу. Я не уверен насчет Darwin Streaming Server. Есть идеи?


person Ananth Duari    schedule 06.11.2011    source источник


Ответы (4)


Я их вижу, но не проверял. Я бы предположил, что количество горя, которое они причинят на этой ранней стадии HTTP Live Streaming, не будет стоить того. Есть несколько доступных ресурсов, которые вы можете использовать, чтобы попытаться решить проблемы с ним.

Если вы хотите сэкономить, вы можете попробовать:

50 долларов: Apple Compressor. Кодирует и сегментирует все в одном, если у вас есть MAC

25 долларов: Markelsoft HLS Segmenter: однако вам может понадобиться поиграть с некоторыми настройками X.264, чтобы получить конечный продукт, и, хотя он сегментирует (большая работа), он не создает вариантный список воспроизведения. Это можно сделать вручную с помощью блокнота. это не большая работа.

Если вы хотите совершенно бесплатно, у вас есть:

  1. Кодировка: Handbrake, MeGui, какая угодно. Просто следуйте спецификациям кодирования Android. Используйте H264 и AAC. НЕ используйте настройки/пресеты прогрессивной загрузки. Используйте CBR, а не VBR, и убедитесь, что ваша частота кадров постоянна, а не переменна. Выберите частоту кадров, которую можно легко использовать при умножении, чтобы вы могли обеспечить расположение ключевого кадра в сегменте.

  2. Используйте бесплатные инструменты Apple: mediafilesegment, variantplaylistcreator и т. д. Mediafilesegmenter спросит вас, насколько большой сегмент вы хотите. По умолчанию 10 секунд. При этом вы устанавливаете ключевой кадр декодера, чтобы каждый сегмент начинался с ключевого кадра.

Я приведу два примера.

Пример 1:

  • Размер сегментации: 10 секунд
  • Частота кадров: изначально переменная 29,97, кодируется до постоянной 30 кадров в секунду.
  • Расстояние между ключевыми кадрами в кадрах: 30 x 10 секунд = 300 кадров. Вам нужен ключевой кадр каждые 300 кадров.
  • Рекомендуемые ключевые кадры для адаптивного: каждые 2 секунды

Настройка ключевого кадра 2 * 30 = 60 кадров. Каждый 5-й ключевой кадр (5*60) ведет сегмент

Пример 2:

  • Частота кадров: изначально переменная 23,97, кодируется до постоянной 24 кадров в секунду.
  • Размер сегмента: 8 секунд
  • Ключевой кадр, необходимый для сегмента: 8 * 24 = 192
  • Рекомендуется для адаптивного 2 секунды = 2 * 24 = 48
  • Каждый 4-й ключевой кадр (4*48) ведет сегмент
person MikeInDetroit    schedule 30.05.2012

Если вам нужно решение с открытым исходным кодом, вы можете сделать это с помощью x264 и mp4box. Следующая команда может служить примером того, как вы можете создать одно качество/представление/воспроизведение:

x264 --output intermediate_2400k.264 --fps 24 --preset slow --bitrate 2400 --vbv-maxrate 4800 --vbv-bufsize 9600 --min-keyint 48 --keyint 48 --scenecut 0 --no-scenecut --pass 1 --video-filter "resize:width=1280,height=720" inputvideo.mkv

Следующим шагом будет мультиплексирование закодированного контента в mp4:

MP4Box -add intermediate.264 -fps 24 output_2400k.mp4

Затем вы создаете отдельные сегменты и манифест:

MP4Box -dash 4000 -frag 4000 -rap -segment-name segment_ output_2400k.mp4

Затем вы можете создать несколько других качеств и воспроизвести их с помощью одного из проигрывателей с открытым исходным кодом, например dash. js.

person Christopher Mueller    schedule 19.12.2016

Проигрыватель OSMF: http://www.osmf.com/

person Sam    schedule 06.08.2012

Честно говоря, нет простого решения для всего этого, не говоря уже об адаптивной потоковой передаче. Определенно не существует универсального решения с открытым исходным кодом для кодирования, сегментации и доставки потоковой передачи HTTP (не говоря уже об адаптивной потоковой передаче с синхронизированными ключевыми кадрами).

person Andrew    schedule 09.04.2012
comment
И поверьте мне, видео приложения с открытым исходным кодом не стоят времени, за исключением X264, который можно использовать для некоторых вещей, но требуется очень высокий уровень знаний. - person Andrew; 09.04.2012