gpt4 book ai didi

php - 在 PHP 中从没有 ffmpeg 的视频创建缩略图

转载 作者:可可西里 更新时间:2023-11-01 00:21:23 25 4
gpt4 key购买 nike

我需要在不使用 ffmpeg 的情况下创建缩略图,因为我必须在共享主机上部署网站,而 ffmpeg 在共享主机上不可用。

有人可以提出一些解决方案吗?

最佳答案

如果视频可以在浏览器中播放,您可以尝试使用 html5 的 Canvas 功能在 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;

?>

关于php - 在 PHP 中从没有 ffmpeg 的视频创建缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21179522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com