Есть ли какое-либо решение для потоковой передачи с открытым исходным кодом, поддерживающее адаптивную потоковую передачу по протоколу Http? Согласно моим исследованиям, VLC не поддерживает адаптивную потоковую передачу. Я не уверен насчет Darwin Streaming Server. Есть идеи?
http адаптивная потоковая передача
Ответы (4)
Я их вижу, но не проверял. Я бы предположил, что количество горя, которое они причинят на этой ранней стадии HTTP Live Streaming, не будет стоить того. Есть несколько доступных ресурсов, которые вы можете использовать, чтобы попытаться решить проблемы с ним.
Если вы хотите сэкономить, вы можете попробовать:
50 долларов: Apple Compressor. Кодирует и сегментирует все в одном, если у вас есть MAC
25 долларов: Markelsoft HLS Segmenter: однако вам может понадобиться поиграть с некоторыми настройками X.264, чтобы получить конечный продукт, и, хотя он сегментирует (большая работа), он не создает вариантный список воспроизведения. Это можно сделать вручную с помощью блокнота. это не большая работа.
Если вы хотите совершенно бесплатно, у вас есть:
Кодировка: Handbrake, MeGui, какая угодно. Просто следуйте спецификациям кодирования Android. Используйте H264 и AAC. НЕ используйте настройки/пресеты прогрессивной загрузки. Используйте CBR, а не VBR, и убедитесь, что ваша частота кадров постоянна, а не переменна. Выберите частоту кадров, которую можно легко использовать при умножении, чтобы вы могли обеспечить расположение ключевого кадра в сегменте.
Используйте бесплатные инструменты 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) ведет сегмент
Если вам нужно решение с открытым исходным кодом, вы можете сделать это с помощью 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.
Честно говоря, нет простого решения для всего этого, не говоря уже об адаптивной потоковой передаче. Определенно не существует универсального решения с открытым исходным кодом для кодирования, сегментации и доставки потоковой передачи HTTP (не говоря уже об адаптивной потоковой передаче с синхронизированными ключевыми кадрами).