#javascript #html #video
#javascript #HTML #Видео
Вопрос:
В настоящее время я создаю веб-сайт для школы и внедрил систему загрузки. Теперь я хочу, чтобы люди могли смотреть загруженные видео. В настоящее время, если вы пытаетесь посмотреть видео, скажем, test.mp4, загрузка занимает более минуты.
Я знаю, что с помощью:
ffmpeg -i inputvideo.mp4 -movflags faststart -acodec copy -vcodec copy outputvideo.mp4
перемещает atom moov в начало файла. И когда я вручную конвертирую mp4 с помощью предыдущей команды, файл начинает воспроизводиться мгновенно.
Проблема:
Я не хочу конвертировать каждый файл вручную. Есть ли другой способ мгновенного воспроизведения загруженных пользователем видео? Заранее спасибо за помощь.
Я использую этот код, но, я думаю, он не имеет ничего общего с самой потоковой передачей:
<source src="Clap.mp4" type="video/mp4">
Your browser does not support the video tag. <!-- Text to be shown incase browser doesnt support html5 -->
</video>
Я также пытался использовать библиотеку js:
<link href="https://vjs.zencdn.net/7.8.4/video-js.css" rel="stylesheet" />
<!-- If you'd like to support IE8 (for Video.js versions prior to v7) -->
<script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
</head>
<body>
<video
id="my-video"
class="video-js"
controls
preload="auto"
width="640"
height="264"
poster="MY_VIDEO_POSTER.jpg"
data-setup="{}"
>
<source src="Clap.mp4" type="video/mp4" />
<source src="MY_VIDEO.webm" type="video/webm" />
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a
web browser that
<a href="https://videojs.com/html5-video-support/" target="_blank"
>supports HTML5 video</a
>
</p>
</video>
<script src="https://vjs.zencdn.net/7.8.4/video.js"></script>
</body>
В обоих случаях я хочу воспроизвести Clap.mp4
Комментарии:
1. Я удалил
FFmpeg
тег, так как ваш вопрос заключается в том, чтобы НЕ использовать его.2. Ok @VC. Один из способов его использования
3. PS: Вы, вероятно, не получаете ответа, потому что на данном этапе это невозможно. Чтобы сделать это при загрузке файла, вам нужна система, которая может извлекать конечные байты MOOV (метаданных) (выполнить запрос диапазона ), такие как PHP, На вашем сервере, затем вам нужно отредактировать байты (номера) метаданных, чтобы обновить их новыми позициями и т. Д., Поскольку метаданные теперь будутспереди, так что байты кадра 1 перемещаются в новый pos). Затем, наконец, сшейте новые байты и передайте в тег видео. Посмотрите на спецификации заголовка MP4 , чтобы узнать, какие значения atom необходимо редактировать.
4. Другим способом было бы снова выполнить запрос диапазона и извлечь метаданные. Затем прочитайте его самостоятельно, чтобы извлечь кадры (аудио или видео) и передать их (в виде массивов байтов) вручную в тег видео, используя методы расширения источника мультимедиа .
5. если вы управляете загрузкой, предположительно, вы можете написать сценарий того, что происходит? php etc может вызвать ffmpeg и выполнить быстрый запуск для вас