У меня проблема с получением снимка из видео для использования в качестве изображения заголовка. Ниже у меня есть код, который я сейчас использую, но на выходе я получаю только черное изображение. В консоли я не получаю никаких проблем. Я делаю это после того, как загрузил видео на используемый мной файловый сервер.
let video = $(videoPath).find('#newVideo').get(0);
let canvas = document.createElement('canvas');
video.onloadedmetadata = function() {
video.play();
canvas.width = 640;
canvas.height = 480;
var ctx = canvas.getContext('2d');
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
var dataURI = canvas.toDataURL('image/jpeg');
let $previewBox = $(".post-preview-box");
let $previewCardImg = $previewBox.find(".card-img");
Я использовал Как сделать снимок видео плеера на основе HTML5 - JavaScript? в качестве основы для получения снимка, а затем добавил некоторые другие вещи в надежде, что это сработает, но до сих пор я был не в состоянии это сделать.
Любая помощь или вклад в то, что попробовать, приветствуется.
Редактировать 04-03-2020 (третье апреля): Чтобы дать больше пояснений, я добавлю консоль из dataURI и внесу изменения в код, который я сделал.
data: image / jpeg; base64, / 9J / 4AAQSkZJRgABAQAAAQABAAD / 2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD / 2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD / wAARCACWASwDAREAAhEBAxEB / 8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL / 8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2 t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4 + Tl5ufo6erx8vP09fb3 + PN6 / 8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL / 8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3 + PN6 /// 2Q ==
Добавлена CURRENTTIME на видео и установить его на 3 (Я также пробовал с 5).
let video = $(videoPath).find('#newVideo').get(0);
let canvas = document.createElement('canvas');
video.onloadedmetadata = function() {
video.currentTime = 3;
video.play();
var ctx = canvas.getContext('2d');
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
var dataURI = canvas.toDataURL('image/jpeg');
let $previewBox = $(".post-preview-box");
console.log(dataURI);
let $previewCardImg = $previewBox.find(".card-img");