Потоковое видео с помощью django от jellyfin
Я сделал streaming приложение с django с jellyfin сервера, я использую video js для воспроизведения моих видео медиа. Проблема в том, что когда я пытаюсь воспроизвести видео длиной более 1 часа и дольше, это занимает безумное время, кажется, что видео сначала загружается, а затем воспроизводится, и более того, я не могу продвинуть медиа и поставить в нужную позицию, Сначала я заподозрил опцию video js под названием preload, поэтому я попробовал значения 'none', 'metadata' и 'auto', но ничего не вышло На самом деле, коллега подсказал мне, что возможно django не поддерживает такую функциональность! Кто-нибудь может подтвердить это? Какое может быть решение с помощью django
Например, вот моя функция для получения фильма типа episode:
views.py
а это мой episode_detail.html:
episode_detail.html
"Это занимает безумное время, кажется, что видео сначала скачивается, а потом воспроизводится"
Проверьте, что метаданные MP4 находятся спереди (а не сзади файла).
Вы можете использовать этот сайт для проверки MP4 (прокрутите вниз до раздела MP4 atom locations).
Если написано "Не оптимизировано", значит, метаданные находятся на заднем плане (а также требуется полная загрузка).
Вы можете исправить это с помощью такого инструмента, как FFmpeg, или даже поискать в Google: MP4 moov Fast start fix advice.
"Я не могу продвинуться в СМИ и занять ту должность, которую хочу",
Когда вы предоставляете байты самостоятельно (через потоковую передачу), вы должны обрабатывать поиск самостоятельно.
Это означает, что нужно слушать событие поиска (вызванное видеотегом HTML5) и предоставлять новые байты для этой точки поиска. Ваш MP4 должен быть фрагментированным MP4, чтобы легко искать с помощью потоковой передачи байтов. Когда вашему приложению задается точка поиска (в секундах), вы вычисляете, какой файл (если он разделен по времени) или какой диапазон байтов (если вся продолжительность видео находится в одном файле) необходимо прочитать. Теперь ваш стример отправляет эти байты вместо них. Эти байты будут представлять собой фрагмент MP4, представляющий данные для запрошенного времени "поиска".