Мне нужно создать эскиз без ffmpeg, потому что мне нужно развернуть сайт на общедоступном хостинге, а ffmpeg недоступен на общем хостинге.
Может ли кто-нибудь предложить какое-то решение?
Если видео можно воспроизвести в браузере, вы можете попробовать использовать функцию холста html5 для воспроизведения видео на холсте, а затем отправить сообщение с этого видео на ваш сервер с помощью javascript … Возможно, вы могли бы даже автоматизировать его или если у вас всего несколько десятков видео, сделайте это вручную …
Ниже приведен javascript jquery jquery для загрузки jpg-кода с кодировкой base64, чтобы вы начали. (Восстает из нескольких разных проектов, поэтому непроверенный и, вероятно, кошмар безопасности).
<script> var vidDOM = $('article').children('video'); var vid = vidDOM.get(2); var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); vidDOM.bind({ 'paused':function () { vid.width = canvas.width = vid.offsetWidth; vid.height = canvas.height = vid.offsetHeight; var $this = this; ctx.drawImage($this, 0, 0, vid.width, vid.height); uploadbase64(); } }) function uploadbase64(){ canvasData = canvas.toDataURL("image/jpeg"); var ajax = new XMLHttpRequest(); ajax.open("POST",'ImageUpload.php?filename='+vidDOM.id,false); ajax.setRequestHeader('Content-Type', 'application/upload'); ajax.send(canvasData); } </script>
И вот немного php, чтобы принять загрузку.
<?php $filename =$_GET['filename']; if (file_get_contents('php://input')){ // Remove the headers (data:,) part. $filteredData=substr(file_get_contents('php://input'), strpos(file_get_contents('php://input'), ",")+1); // Need to decode before saving since the data we received is already base64 encoded $decodedData=base64_decode($filteredData); //create the file if($fp = fopen( $filename, 'wb' )){ fwrite( $fp, $decodedData); fclose( $fp ); } else { echo "Could not create file."; } } echo "Created image ".$filename; ?>