我需要创建没有ffmpeg的缩略图,因为我必须在共享主机上部署站点,而ffmpeg在共享主机上不可用。
有人可以提出解决方案吗?
如果可以在浏览器中播放视频,则可以尝试使用html5的Canvas功能在画布中播放该视频,然后使用javascript将该视频的静止图像发布到您的服务器上...也许您甚至可以将其自动化,或者如果您只有几十个视频,请手动进行操作...
以下是一些jquery风格的javascript,用于上载base64编码的jpg,以帮助您入门。(由几个不同的项目组成,因此未经测试,并且可能是安全噩梦。)
<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;
?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句