视频文件转换为 .mp4 后不显示
Posted
技术标签:
【中文标题】视频文件转换为 .mp4 后不显示【英文标题】:Video file is not displaying after converted to .mp4 【发布时间】:2021-09-09 21:31:51 【问题描述】:我正在尝试创建 php 视频上传脚本,它将 MOV 和许多其他视频文件扩展名转换为 .mp4 扩展名。我成功地将文件上传到文件夹并在数据库中创建了一条记录。但是当我尝试在 html5 视频标签中显示该视频文件时不起作用。
这是我的 PHP 代码:
<?php include "includes/dbh.inc.php"; ?>
<?php
if (isset($_SESSION['user_name']))
if (isset($_POST['submit']))
$author = $_SESSION['user_name'];
$post_photo = time() . '-' . $_FILES["post_photo"]["name"];
if (file_exists($_FILES['post_photo']['tmp_name']) && is_uploaded_file($_FILES['post_photo']['tmp_name']))
$targetvid = md5(time());
$target_dirvid = "post_video/";
$target_filevid = $targetvid . basename($post_photo);
$uploadOk = 0;
$videotype = pathinfo($target_filevid, PATHINFO_EXTENSION);
//these are the valid video formats that can be uploaded and
//they will all be converted to .mp4
$video_formats = [
"mpeg",
"mp4",
"mov",
"wav",
"avi",
"dat",
"flv",
"MOV",
"3gp"
];
foreach ($video_formats as $valid_video_format)
//You can use in_array and it is better
if (preg_match("/$videotype/", $valid_video_format))
$target_filevid = $targetvid . basename($_FILES["post_photo"] . ".mp4");
$uploadOk = 1;
break;
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0)
echo $message;
// if everything is ok, try to upload file
if (move_uploaded_file($_FILES["post_photo"]["tmp_name"], $target_dirvid . $target_filevid))
$sql = "INSERT INTO video_posts (author, video_post) VALUES ('$author', '$target_filevid')" ;
$result = mysqli_query($conn, $sql);
if ($result)
echo "Success";
else
echo "Failed" . mysqli_error($conn);
?>
这是我的 HTML 视频标签 附言我正在使用 foreach 循环为每个用户显示视频。
<video id="myVideo" controls playsinline>
<source src="../post_video/<?php echo $user_post['video_post']; ?>" type="video/mp4">
<source src="../post_video/<?php echo $user_post['video_post']; ?>" type="video/ogg">
</video>
在数据库记录中,文件名与上传文件夹中的文件名完全相同,扩展名为 MP4,但仍未显示在 HTML 页面中。
【问题讨论】:
您无法通过简单地更改文件扩展名将视频转换为另一种格式。您实际上必须逐帧处理视频并将其保存为新格式。看; FFmpeg. 我需要寻找什么来做到这一点。我的目标是创建上传视频/图像网站,但与 Apple 类似的格式并不容易处理。任何我需要学习和寻找来完成我的任务的建议。谢谢。 警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough! 如果你刚刚开始学习 PHP,那么你应该学习 PDO 而不是 mysqli。 PDO 更容易,更适合初学者。从这里开始phpdelusions.net/pdo & websitebeaver.com/… 请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。 【参考方案1】:如果您的意思是您的视频在上传时没有显示在您的网站上,请更改以下内容:
$target_dirvid = "post_video/";
收件人:
$target_dirvid = "post_video\";
如果您的意思是要将扩展名更改为另一个并且希望显示它;你不能这样做。
【讨论】:
以上是关于视频文件转换为 .mp4 后不显示的主要内容,如果未能解决你的问题,请参考以下文章