作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是我的代码,它将文件上传到服务器并将每个上传文件的名称存储到数据库中:
<?php
// connect to the database
include('connect.php');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
die();
}
if ($_FILES['fileVideo']['error'] === UPLOAD_ERR_OK) {
$result = 0;
if( file_exists("VideoFiles/".$_FILES['fileVideo']['name'])) {
$parts = explode(".",$_FILES['fileVideo']['name']);
$ext = array_pop($parts);
$base = implode(".",$parts);
$n = 2;
while( file_exists("VideoFiles/".$base."_".$n.".".$ext)) $n++;
$_FILES['fileVideo']['name'] = $base."_".$n.".".$ext;
move_uploaded_file($_FILES["fileVideo"]["tmp_name"],
"VideoFiles/" . $_FILES["fileVideo"]["name"]);
$result = 1;
}
else
{
move_uploaded_file($_FILES["fileVideo"]["tmp_name"],
"VideoFiles/" . $_FILES["fileVideo"]["name"]);
$result = 1;
}
$videosql = "INSERT INTO Video (VideoFile)
VALUES (?)";
if (!$insert = $mysqli->prepare($videosql)) {
// Handle errors with prepare operation here
}
//Assign the variable
$vid = 'VideoFiles/'.$_FILES['fileVideo']['name'];
//Dont pass data directly to bind_param store it in a variable
$insert->bind_param("s",$vid);
$insert->execute();
$id = $mysqli->insert_id;
if ($insert->errno) {
// Handle query error here
}
$insert->close();
}else{
echo "Upload was not successful";
}
?>
<script language="javascript" type="text/javascript">
window.top.stopVideoUpload(<?php echo $result; ?>,'<?php echo $id; ?>', '<?php echo $_FILES['fileVideo']['name']; ?>');
</script>
</body>
</html>
Add Question
按钮和文件输入将出现在表格 Upload
并等待上传完成(我推荐一个简短的视频文件以节省时间)。文件上传成功后会提示视频文件上传到服务器,最佳答案
这样做的方法很多。就程序员时间而言,最简单和最快的方法是使用 ffmpeg 直接在您的上传脚本中将事物编码为可用的东西(使用 exec
或 system
来这样做)。
但是,这会带来一些问题:当服务器忙于处理请求时,您的浏览器可能会超时。此外,您无法真正分散负载。
所以,上传成功后,调用ffmpeg:
exec("ffmpeg -i $vid -vcodec libx264 -vpre default -crf 21 ".
"-acodec libfaac -ab 128k $vid-transcoded.mp4");
ffmpeg
所有选项的网站(有
很多 其中)。另外,jwplayer 非常流行,所以应该有很多关于如何转码的资源。
to_be_processed
。目录并有一个后台进程(也许是cronjob?)来处理该目录中的所有文件。这样,上传完成后浏览器请求就完成了,您可以完全控制处理资源。然而,这需要相当多的程序员时间。您将必须创建处理作业,并进行一些管理工作以让用户知道处理的程度。
关于php - 有没有一种方法可以在上传到服务器时自行编码视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569544/
我发现以下帖子非常有帮助: How to pickle yourself? 但是,此解决方案的局限性在于,重新加载类时,它不会以其“运行时”状态返回。即它将重新加载所有变量等以及类在转储时的一般状态.
我是一名优秀的程序员,十分优秀!