当前位置: 首页 > 知识库问答 >
问题:

FFmpeg不工作

宦瀚
2023-03-14

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

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

$name=$_FILES['video']['name'];$title=$_POST['video otitle'];$type=爆炸('.', $name);
$type=end($type);$size=$_FILES['video']['size'];$random_name=rand();$tmp=$_FILES['video']['tmp_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'];

**缩略图生成完美的作品。$ffmpeg="/usr/本地/bin/ffmpeg";$video oFile=$_FILES['video']['tmp_name'];$ImageFile="上传/"。$username."/thumail/"。$random_name. jpg";$size="160x90";$getFrom第二=5;$cmd="$ffmpeg-i$video oFile-an-ss$getFrom秒-s$size$ImageFile"; if(!shell_exec($cmd)){回声"缩略图已创建!
";
}另一些{echo"创建缩略图时出错!";}

**将上传的文件移动到其永久目录进行视频转换。$newFilePlace="上传/".$username."/temp".$random_name.".".$type;move_uploaded_file($tmp,$newFilePlace);

*视频转换代码$outputFile=“uploads/”$用户名。"/".$随机名称。“.mp4”$databaseStoredVideoUrl=“上传/”$用户名。"/".$随机名称。“.mp4”$video_cmd=“$ffmpeg-i$newFileLocation$outputFile”;echo$video\u cmd;如果(!shell_exec($video_cmd)){echo”视频已转换!
“;}否则{echo“创建缩略图时出错!”
}

**将输出src链接正确存储在数据库中,但无法查看视频,因为它不存在。//将视频存储到数据库中的正确用户名和用户目录mysql_query(“插入视频值(“$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

共有1个答案

缪阎宝
2023-03-14

不知道。我自己用FFMPEG和PHP工作过几次,你可能遇到的一些问题如下:

  1. 内存限制,因为您似乎正在运行视频编码服务器端,我不建议这样做
  2. 其次,ffmpeg过程本身可能会花费太长时间,因为视频编码的执行时间可能比html" target="_blank">web服务器Apache/Nginx允许的最大脚本执行时间要长

如果你运行编码作为Web请求,你应该避免这样做,而是做一个cron作业或一个单独的服务,检查是否有任何新的视频应该被处理和编码(视频队列服务)。

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

  1. 首先直接从cmdline测试编码

如果您对PHP最满意,请使用ini_set(set_time_limit,0)编写一个php脚本,以确保脚本不会超时。其他选项可以是bash脚本,或者例如使用node.js和永远的ffmpeg库来创建处理服务。

 类似资料:
  • 我从安装了这个版本http://ffmpeg.org/releases/ffmpeg-2.5.3.tar.bz2 还尝试了yum版本,但对于youtube-dl来说还不够新。 我尝试了,PHP/Apache仍然找不到ffmpeg。 Apache用户在CentOS 6.5上运行PHP脚本<打电话给我的youtube dl。以根用户身份从php命令行调用php(使用FFmpeg) 调用my youtu

  • 我使用FFMPEG创建视频缩略图, 我已经下载了FFMPEG(FFMPEG-2.4.2.tar.bz2)并安装在服务器上。 位于 /usr/bin/ffmpeg 并在以下代码中使用: 但是这个命令没有像我预期的那样工作... 问题是我们上传视频时未创建视频缩略图。 任何帮助很大的赞赏

  • 我已经创建了视频文件的缩略图图像文件使用ffmpeg在PHP。它正在wamp服务器上成功工作。现在想在xampp服务器中使用它,但它不工作......这是我创建缩略图的代码: 为什么它不在xampp上工作。。。谢谢$getFromSecond=25$cmd=“$ffmpeg-i$videoFile-an-ss$getFromSecond-s$size$imageFile”;

  • 我必须得到我使用ffmpeg的视频缩略图。在我的服务器上,我从ssh运行ffmpeg命令,然后它运行正常,但从php exec函数它不运行,它给出错误/usr/bin/ffmpeg:没有这样的文件或目录,但ffmpeg安装在这个位置usr/bin/ffmpeg。我的源代码是: 请提供任何解决方案。

  • 我想将两个图像(名称未按顺序编号)合并到一个视频中,但结果仅包括第一个图像的视频。 我将感谢任何帮助! ffmpeg.exe-r 1/5-iimage_x.png-r 1/5-iimage_y.png-codec: v libx264-vf fps=50video.mp4 输出: 输入0,png管道,来自'C:\Users\khj\Desktop\SpeakerLayoutTool\Images\

  • 希望你们中有人能告诉我为什么我的这个ffmpeg命令没有画出想要的文本。制作的视频没有。给你: 你觉得对吗?如果是这样,那么为什么我在videoMail_preview.webm视频文件中看不到任何文本呢? 在这里使用FFMPEGV2.8.6,启用了--enable-libfreetype、--enable-libfontconfig和--enable-libfribidi。 此外,上面的命令是用