Существует на самом деле способ.
Способ: Пользователь выбирает видео для загрузки. После выбора отобразите загрузочное сообщение во всплывающем div или просто используйте поле предупреждения. Затем, что вы сделаете, загрузите этот видеофайл в тег видео. Лучше всего показывать тег видео: нет. После того, как видео-тег находится в состоянии готовности, пропустите 50% видео. Затем получите скриншот видеотега. Вы можете получить изображение как base64, а затем отправить его на PHP через Ajax вместе с видео.
(Méthode:... Un utilisateur sélectionne ла выставлению Апр де Загрузить Камеры sélectionner, montrez ООН сообщение де Chargement данс ипа fenêtre НУ utiliser ипы Boîte d'Alerte Puis, зарядное устройство л выставлению ООН Субъективной стороны де vidéo C'est Mieux si l'élément est sur display: нет. Avant que la vidéo soit dans un état-prêt, passez la vidéo à 50%. Puis, prenez une capture d'écran d'élément vidéo. На peut obtenir l'image dans base64 et alors envoyez-la à PHP avec Ajax.)
Включите тег ввода для скрипта base64. (Incluez ООН Субъективная сторона d'entrée пур ле сценарий base64.)
<html>
<form action="" method="post" enctype="multipart/form-data" id="uploadvidform" accept="video/*">
<input type="file" name="file" id="file" />
<input type="text" name="screenshotbase64" id="screenshotbase64" value="" style="display: none;" />
</form>
<input type="button" value="Upload" id="uploadvidbut" />
И невидимый элемент видео. (Et l'Субъективная сторона де vidéo невидим.)
<video width="400" id="videoelem" style="display: none;" controls>
<source src="" id="video_src">
Your browser does not support HTML5 video.
</video>
И сценарий. Сначала сделайте действие, когда файл был выбран. Не забудьте связать файл Ajax Google в элементе head.
(D'Абор, Faites ипе действие налить lorsqu'on sélecionne ле Fichier. Assurez-Vous d'Avoir Lie ле Fichier де Google Ajax Dans l'ЭЛЕМЕНТ tête.)
<script>
var scalefac = 0.25;
// Scale of image;
// Echelle de l'image;
var screenshots = [];
// An array for multiple screenshots;
// Un tableau pour plusieurs captures d'écran;
// This function will create an image. It's not used now, it's used in the below action (when you change the file).
// Cette fonctionne créera une image. C'est pas pour maintenant c'est pour la fonctionne suivante (lorsqu'on change le fichier).
function capture(video, scalefac) {
if(scaleFactor == null){
scaleFactor = 1;
}
var w = video.videoWidth * scalefac;
var h = video.videoHeight * scalefac;
var canvas = document.createElement('canvas');
canvas.width = w;
canvas.height = h;
var ctx = canvas.getContext('2d');
ctx.drawImage(video, 0, 0, w, h);
return canvas;
}
$(document).ready(function(){
$(document).on("change", "#file", function(){
alert("Please wait while we verify your video. This will only take a couple of seconds.");
// The next 3 lines will load the video
// Les 3 lignes suivantes chargeront la vidéo
var lasource = $('#video_src');
lasource[0].src = URL.createObjectURL($('#file').prop("files")[0]);
lasource.parent()[0].load();
var video = document.getElementById("videoelem");
setTimeout(function(){
// Video needs to load then we check the state.
// Il faut que la vidéo charge puis nous vérifier l'état.
if (video.readyState == "4"){
var videoduration = $("#videoelem").get(0).duration;
var timetogoto = videodurationinseconds/2;
$("#videoelem").get(0).currentTime = timetogoto;
setTimeout(function(){
// Video needs to load again
// Il faut que la vidéo charge de nouveau
var video = document.getElementById("videoelem");
// function the screen grab.
// fonctionne la capture d'écan.
var canvas = capture(video, scalefac);
screenshots.unshift(canvas);
for(var i=0; i<4; i++){
$("#screenshotbase64").val(screenshots[i].toDataURL());
}
}, 500);
}, 3000);
});
// Now that the form is filled, you can send your data to your PHP file.
// Maintenant que le formulaire est rempli vous pouvez envoyer les données à votre fichier de PHP.
$(document).on('click', '#uploadvidbut', function(){
var form = new FormData($("#uploadvidform")[0]);
$.ajax({
url: '/uploadvideodocument.php', // PHP file - Fichier de PHP
type: 'POST',
data: form,
cache: false,
contentType: false,
processData: false,
success: function (result){
if (result == 1){
alert("The video has been uploaded.");
}
}
}).fail(function(){
alert("Oh no, the video wasn't uploaded.");
});
});
});
</script>
и теперь PHP файл. Я собираюсь включить преобразование base64 в изображение, я надеюсь, вы знаете, как сделать все остальное.
(. Et Maintenant ле Fichier PHP Je Вайс seulement inclure л преобразования base64 данс ипа изображения, j'espère дие уоиз Savez комментарий Ыга ле Reste.)
<?php
$data = $_POST['screenshotbase64'];
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
// The following 2 lines will create the time in microseconds which you can use as the name. Microseconds ensures an almost impossibility of two people uploading at the same time.
// Les 2 lignes suivantes créeront les temps dans microseconds, vous pouvez l'utiliser en tant que le nom. Utiliser les microseconds garantira une presque impossibilité de noms en double.
$mt = explode(' ', microtime());
$millies = ((int)$mt[1]) * 1000 + ((int)round($mt[0] * 1000));
$screenshotfilename = time(). $millies . '.png';
// In the next line, replace YOUR DIRECTORY with your home path and then include the folder of where you want to save the screenshot.
// Dans la ligne suivante, remplacez YOUR DIRECTORY par votre chemin d'accès, puis incluez le dossier dans lequel vous souhaitez sauvegarder la capture.
file_put_contents('YOUR DIRECTORY AND FOLDER' . $screenshotfilename, $data);
// Now, the screen shot has been saved to the server and the name of the file is $screenshotfilename.
// Maintenant la capure d'écran a été sauvegardée à votre serveur et le nom du fichier est $screenshotfilename.
?>
ли примечание:
Некоторые браузеры могут не принимать видеоэлемент. В наши дни этого почти никогда не бывает. Но имейте это в виду.
Veuillez ноу:
Certains navigateurs peuvent пе па приемщик l'видео устройствами. Mais de nos jours cela n'arrive presque jamais.
Вам нужно ffmpeg. Это невозможно без инструмента, такого как ffmpeg. –
попросите пользователя загрузить один ... –