【问题标题】:Video upload invailed format视频上传格式无效
【发布时间】:2015-04-19 13:30:28
【问题描述】:

我正在尝试使用 ajax -ffmpeg 制作视频上传系统。但我有一个问题。问题是我的 php 代码每次都说 Invailed file video Format。我在哪里做错了,我不明白。

有人可以帮我吗?

    <?php
    include_once 'includes.php';
    include_once'includes/alphaID.php';
    include_once 'includes/getExtension.php';

    $valid_formats = array("mp4", "MP4");
     if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
      {
        $name = $_FILES['videop']['name'];
        $size = $_FILES['videop']['size'];

          if(strlen($name))
           {
             $ext = strtolower(pathinfo($video_numid, PATHINFO_EXTENSION)); 
             $video_numid = alphaID(microtime(true) * 10000);
             if(in_array($ext,$valid_formats))
               {
                if($size<(50024*50024))
                  {
                   $actual_video_name = time().$uid.".".$ext;
                   $tmp = $_FILES['videop']['tmp_name'];
                   $video_numid = $_FILES['file']['name'];          
                   if(move_uploaded_file($tmp, $path.$actual_video_name))
                     {
                      shell_exec("ffmpeg -i $path.$actual_video_name.flv -f flv -s 650x390 $path.$actual_video_name.mp4");
                      shell_exec("ffmpeg -i $path.$actual_video_name.mp4 -vcodec png -ss 00:00:15 -s 650x390 -vframes 1 -an -f rawvideo $path.$actual_video_name.png");
                      $data=$Swamp->Video_Upload($uid,$actual_video_name);
                      $newdata=$Swamp->Get_Upload_Video($uid,$actual_video_name);
                 if($newdata)
                   {
                    echo '<div class="video_prew"><img src="'.$base_url.$path.$actual_video_name.'" width="100%" height="auto" class="preview_video" id="'.$newdata['id'].'"/></div>';

                    }
               }
                else
               {
               echo "Fail upload folder with read access.";
          }
      }
        else
     echo "Video file size max 10 MB";                  
   } else
     echo "Invalid file video format."; 
 } else
   echo "Please select video..!";
   exit;
 }
?>

【问题讨论】:

  • 为什么要依赖扩展来查看支持的格式?
  • 是的,你是对的,我做错了,谢谢 :)

标签: php ffmpeg


【解决方案1】:

验证支持格式的更好方法是首先读取文件信息并正确解析它。 使用 ffmpeg -i "filename" 这将为您提供有关多媒体文件的详细信息,并且您可以准备支持的视频格式列表。

我做了一些研究,发现我们应该使用 ffprobe 来获取文件详细信息。详情请参考link

您在读取文件扩展名时引用了不正确的变量。

替换

$ext = strtolower(pathinfo($video_numid, PATHINFO_EXTENSION));

$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));

【讨论】:

  • 谢谢。有时我看不出我错在哪里:)
  • 是的,你是对的,我需要使用 ffmpeg -i "filename" 来提供有关多媒体文件的详细信息,但我做不到。你能举个例子吗?
  • 我的系统上没有 ffmpeg 模块。我可以在 2-3 小时内为您拿到。
  • 谢谢你,我在等你。
猜你喜欢
  • 1970-01-01
  • 2016-06-18
  • 2014-02-09
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多