php - 视频上传格式无效

标签 php ffmpeg

我正在尝试使用 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;
 }
?>

最佳答案

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

我做了一些研究,发现我们应该使用 ffprobe 来获取文件详细信息。引用 link更多细节。

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

代替

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


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

关于php - 视频上传格式无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28585455/

相关文章:

android - 使用 setpts 和 atempo 选项的 FFmpeg 命令不匹配音频和视频

php - 从 HTML 中读取属性值

php - 使用php从字符串中删除撇号

php - 有教义的 Symfony2 用户

php - 与 PHP.js Javascript 库集成

merge - ffmpeg 合并 mxf 音频和 m2v 视频

php - PHP LIFO 或 FIFO 中的数组?

ffmpeg 将 .mkv 转换为 .264

video - 使用 FFmpeg 从单独的视频生成带有 alpha channel 的电影并填充电影?

android - ffmpeg:混合 m4a 和原始视频的最少组件?