Получить кадр video элемента в картинку
Всем привет.
Очень нужна помощь, пытался решить проблему сам, увы не получилось. Я делаю свой небольшой видео\аудио плеер на JS. У меня есть основное окно где собственно и будет отображаться видео, и список из других видео на выбор. Разметка следующая (для наглядности) <div class="video media"> <div class="video__wrapper-screen"> <video src="video/my-video.mp4"></video> <!-- окно для отображения видео --> </div> <div class="video__wrapper-controller"> <!-- панель управления --> ...... </div> <div class="video__wrapper-video-list"> <!-- список всех видео --> <div class="video__item-list"> <div class="video__item-title">video 1</div> <div class="video__item-time">00:00</div> <img src="video-frame.jpg"> <!-- тут кадр --> </div> <div class="video__item-list"> <div class="video__item-title">video 2</div> <div class="video__item-time">00:00</div> <img src="video-frame.jpg"> </div> ....... </div> </div> Мне надо что бы в списке с видео, у каждого элемента отображалась бы картинка с кадром из данного видео. Тег video на странице будет только один, остальные создаю, вешаю на них обработчики element.addEventListener("loadeddata", loadedData); element.addEventListener("timeupdate", timeUpdate); element.addEventListener("ended", timeEnded); но на страницу не добавляю. Таким образом получается получить длительность каждого видео, а вот с получением кадра у меня разобраться не вышло. Можно ли это вообще реализовать? Сразу добавлю, никаких библиотек, плагинов и тд, только на ванильном JS... |
|
Цитата:
Вот примерный мой код //Создаю элементы по получаемым данным for (var i = 0; i < elements.length; i++) { var element = document.createElement("video"); element.src = elements[i].url; element.addEventListener("loadeddata", loadedData); element.addEventListener("timeupdate", timeUpdate); element.addEventListener("ended", timeEnded); } var loadedData = function (e) { var canvas = document.createElement('canvas'); canvas.width = 300; canvas.height = 300; var context = canvas.getContext('2d'); context.drawImage(this, 0, 0, 300, 300); // this в данном случае это мой video var dataURL = canvas.toDataURL(); } И мне прилетает вот такая вот ошибка video-js.js:653 Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported. at HTMLVideoElement.loadedData Так что похоже не вариант... или может вы подскажите как это поправить? |
Arhitector,
на сервере код запускали? |
Цитата:
Теперь новый момент, картинка вроде как есть, но фактически у меня это черный фон (как я понимаю это первый кадр видео). Есть ли возможность получить кадр из определенного отрезка времени? Допустим секунды с 10-20? |
Arhitector,
строка 15 this.currentTime = 15; |
там вроде бы есть отдельная картинка для заставки видео...
|
Цитата:
внезапно всё встало на свои места :) Спасибо. |
Цитата:
|
Часовой пояс GMT +3, время: 07:41. |