Я пытаюсь внедрить локальное кэширование видео в мое приложение для потоковой передачи видео.
Я использую:
- реагировать-нативно-видео для воспроизведения видео
- rn-fetch-blob для загрузки файлов
Мне удалось начать загрузку в начале, заменить исходный URL-адрес налокальный и продолжить воспроизведение из моего локального файла (он работает как положено) - даже с частичным файлом (пока я начинаю с 0).
Основная проблема - функция поиска .Если пользователь хочет начать просмотр, например, с 120 секунд - загрузка все равно начнется с 0B.Я реализовал Range header в Fetch API, который выглядел примерно так:
"Range": "bytes: {oneSecondInBytes * whereYouWantToStartWatchingInSeconds}-{fileSizeInBytes}"
, чтобы преодолеть эту проблему.Теперь загрузка начинается с желаемых байтов и загружает только желаемую часть видеофайла.
Загрузка работает нормально, но при воспроизведении видео выдается ошибка Unrecognized media format
.Также попытался добавить несколько байтов для заголовков в начале (0-10000B) - чтобы попытаться распознать видеофайл, не повезло.
Поэтому мне интересно, если возможно реализовать частичную загрузку видеофайлас помощью rn-fetch-blob и иметь возможность воспроизводить файл с помощью response-native-video (не начиная с начала файла) , позже также добавьте другие фрагменты в файл (пока не завершится полная загрузка),Как я могу убедить ответное нативное видео в том, что моя частичная загрузка действительно является правильным файлом mp4?
ОБНОВЛЕНИЕ
Я некоторое время возился с заголовками HTTP GETи на самом деле получил где-то.Не полное решение, но может помочь кому-то:
"Content-Type": "video/mp4",
"Range": `bytes=0-1000, 45111150-`,
"Accept-Ranges": "bytes",
"Content-Length": "89024062"
^^ это мои тестовые заголовки.Пришлось добавить два значения в Range.Первый просто загружает первую часть файла, чтобы получить заголовки и распознать тип файла.Второй - от "точки поиска".Теперь видео воспроизводится и тип файла распознается.