视频文件转换为 .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 后不显示的主要内容,如果未能解决你的问题,请参考以下文章

如何将flv视频格式转换为mp4视频格式

腾讯课堂视频怎么转换为MP4格式并下载到电脑上?

FFMPEG 转换的 mp4 文件无法在 firefox 和 chrome 中播放

环境配置—ROS bag数据记录转换为mp4视频

怎么样把腾讯视频转换成mp4的?

adv怎么转mp4