#libvlc #http-streaming
#libvlc #http-потоковая передача
Вопрос:
Существует ли какое-либо потоковое решение с открытым исходным кодом, поддерживающее Http Adaptive Streaming? Основываясь на моих исследованиях, VLC не поддерживает адаптивную потоковую передачу. Я не уверен насчет Darwin Streaming Server. Есть идеи?
Ответ №1:
Я вижу их, но не тестировал. Я бы предположил, что количество огорчений, которые они причинили бы на этой ранней стадии HTTP Live Streaming, не стоило бы того. Существует несколько доступных ресурсов, которые вы можете использовать, чтобы попытаться решить проблемы с ним.
Если вы хотите сэкономить, вы можете попробовать:
50 долларов США: компрессор Apple. Кодирует и сегментирует все в одном, если у вас 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) ведет сегмент
Ответ №2:
Если вам нужно решение с открытым исходным кодом, вы могли бы сделать это с помощью 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 .
Ответ №3:
Проигрыватель OSMF:http://www.osmf.com /
Ответ №4:
Честно говоря, не существует простого решения для выполнения всего этого вообще, не говоря уже об адаптивной потоковой передаче. Определенно, не существует универсального решения с открытым исходным кодом для кодирования, сегментации и доставки потоковой передачи HTTP (не говоря уже об адаптивной потоковой передаче с синхронизированными ключевыми кадрами).
Комментарии:
1. И поверьте мне, видеоприложения с открытым исходным кодом не стоят того, чтобы тратить на них время, за исключением X264, который можно использовать для некоторых целей, но требуется очень высокий опыт.