Если вы хотите сделать это без сохранения сервера боковые изображения возможно, хотя и немного неуклюжие ... использует холст для записи первого кадра видео и затем накладывается поверх видеоэлемента. Возможно, можно использовать URL-адрес Canvas в качестве источника для Плаката (например, video.poster = c.toDataURL();
), но для этого требуется правильная настройка CORS (не уверен, что видео было на вашем собственном сервере, и если у вас есть контроль над этим, безопасный вариант). Это будет работать лучше, если видео правильно закодировано для потоковой передачи (так атом MOOV находится в передней части видео, в противном случае он будет медленным, чтобы сделать накладку - см this answer более подробно)
HEAD
содержит стиль для видео и наложению (вам нужно будет настроить калибровку и положение в соответствии с вашим приложением)
<head>
<style>
video_box{
float:left;
}
#video_overlays {
position:absolute;
float:left;
width:640px;
min-height:264px;
background-color: #000000;
z-index:300000;
}
</style>
</head>
в BODY
вам понадобится div
для наложения и видео. Наложение ДИВА имеет onclick
обработчика, чтобы скрыть накладку и начать воспроизведение видео
<div id="video_box">
<div id="video_overlays" onclick="this.style.display='none';document.getElementById('video').play()"></div>
<video id="video" controls width="640" height="264">
<source src="BigBuck.mp4" type='video/mp4'>
</video>
</div>
</div>
Наконец вам потребуется код, который будет загружать видео, стремиться к первому кадру и загружать визуальную в холст, который вы затем вставить в оверлей
<script>
function generateOverlay() {
video.removeEventListener('seeked',generateOverlay);/tidy up the event handler so it doesn't redraw the overlay every time the user manually seeks the video
var c = document.createElement("canvas");
var ctx = c.getContext("2d");
c.width = 640;
c.height = 264;
ctx.drawImage(video, 0, 0, 640, 264); // take the content of the video frame and place in canvas
overlay.appendChild(c); // insert canvas into the overlay div
}
// identify the video and the overlay
var video = document.getElementById("video");
var overlay = document.getElementById("video_overlays");
// add a handler that when the metadata for the video is loaded it then seeks to the first frame
video.addEventListener('loadeddata', function() {
this.currentTime = 0;
}, false);
// add a handler that when correctly seeked, it generated the overlay
video.addEventListener('seeked', function() {
// now video has seeked and current frames will show
// at the time as we expect
generateOverlay();
}, false);
// load the video, which will trigger the event handlers in turn
video.load();
</script>
Вы можете добавить свой код? –
Есть решение с автовоспроизведением, но оно будет работать только в IOS 10+ – Hokusai