FFmpeg不工作

FFmpeg不工作,ffmpeg,Ffmpeg,我拥有一个类似于youtube的网站www.goploom.com,允许用户上传和观看视频。上传的视频被转换为mp4格式,以与我们网站的html5视频播放器兼容。我的问题是,虽然FFmpeg成功地从上传的视频生成视频缩略图并将图像存储在适当的目录中,但我的代码的视频转换方面不会产生任何输出。我已经对代码进行了几个小时的调整,但我无法解决这个问题,但是,有人告诉我,我可以使用html、php和ffmpeg执行视频转换 我的ffmpeg路径是正确的,因为缩略图生成非常有效 **上传时从上传的视频中收

我拥有一个类似于youtube的网站www.goploom.com,允许用户上传和观看视频。上传的视频被转换为mp4格式,以与我们网站的html5视频播放器兼容。我的问题是,虽然FFmpeg成功地从上传的视频生成视频缩略图并将图像存储在适当的目录中,但我的代码的视频转换方面不会产生任何输出。我已经对代码进行了几个小时的调整,但我无法解决这个问题,但是,有人告诉我,我可以使用html、php和ffmpeg执行视频转换

我的ffmpeg路径是正确的,因为缩略图生成非常有效

**上传时从上传的视频中收集的信息。 $name=$_文件['video']['name']; $title=$_POST['videotitle']; $type=分解('.',$name)
$type=结束($type); $size=$_文件['video']['size']; $random_name=rand(); $tmp=$\u文件['video']['tmp\u name']

                if($type != 'mp4' && $type != 'MP4' && $type != 'flv' && $type != 'FLV' && $type != 'mov' && $type != 'MOV'){
                    $message = "Video Format Not Supported<br>";
                } else {
            $username_query = mysql_query("SELECT `username` FROM `users` WHERE `user_id` = $session_user_id");
                    $username = mysql_fetch_assoc($username_query); 
                    $username = $username['username'];
if($type!='mp4'&&&$type!='mp4'&&&$type!='flv'&&$type!='flv'&&$type!='mov'&&$type!='mov'){
$message=“不支持视频格式
”; }否则{ $username\u query=mysql\u query(“从`users`中选择`username`,其中`user\u id`=$session\u user\u id”); $username=mysql\u fetch\u assoc($username\u query); $username=$username['username'];
**缩略图生成,工作完美。 $ffmpeg=“/usr/local/bin/ffmpeg”; $videoFile=$_文件['video']['tmp_名称']; $imageFile=“uploads/”$username./thumbnails/“$random_name..jpg”; $size=“160x90”; $getFromSecond=5; $cmd=“$ffmpeg-i$videoFile-an-ss$getFromSecond-s$size$imageFile”; 如果(!shell_exec($cmd)){ 回显“已创建缩略图!
”;
}否则{ echo“创建缩略图时出错!”; }

**将上载的文件移动到其永久目录以进行视频转换。 $newFileLocation=“uploads/”$username./temp.“$random\u name..”$type; 移动上传的文件($tmp,$newFileLocation)

*视频转换代码。 $outputFile=“uploads/”$username./“$random_name.”.mp4”; $databaseStoredVideoUrl=“uploads/”$username./“$random_name.”.mp4”; $video_cmd=“$ffmpeg-i$newFileLocation$outputFile”; echo$video\u cmd; 如果(!shell_exec($video_cmd)){ 回显“视频转换!
”; }否则{ 回显“创建缩略图时出错!”;
}

**将输出src链接正确存储在数据库中,但无法查看视频,因为它不存在。 //将视频存储到正确用户名和用户目录下的数据库中 mysql_查询(“插入
视频
值('$session_user_id',''$name','$outputFile','$title','$imageFile'); $message=“视频上传成功。

任何帮助或洞察都将是卓越的。 谢谢

**编辑:使用以下行修复。 $video_cmd=“$ffmpeg-i$newFileLocation-vcodec libx264-vpre normal-acodec libfaac$outputFile”

然后将$video\u cmd输入shell\u exec

Dunno。 我曾多次使用FFMPEG和PHP,您可能会遇到以下问题:

  • 内存限制,因为您似乎正在运行视频编码服务器端,我不建议这样做
  • 其次,ffmpeg过程本身可能会花费太长时间,因为视频编码的执行时间可能比web服务器Apache/Nginx允许的最大脚本执行时间要长
  • 如果您正在以web请求的形式运行编码,您应该避免这样做,而是创建一个cron作业或一个单独的服务来检查是否有任何新的视频需要处理和编码(视频队列服务)

    确保这一点的步骤大致如下:

  • 首先直接从cmdline测试编码
  • 更新视频表并标记应处理的视频表,或创建视频队列表
  • 有一个cron作业或服务来检查要处理的新视频,然后逐个处理它们
  • 如果您最熟悉PHP,请使用ini_set(“set_time_limit”,0)创建一个PHP脚本,以确保您的脚本不会超时。其他选项可以是bash脚本,或者例如使用node.js和创建处理服务