我拥有与youtube类似的网站www.goploom.com,允许用户上传和观看视频。上传的视频会转换为mp4格式,以便与我们网站的html5视频播放器兼容。我的问题是,虽然FFmpeg成功地从上传的视频生成视频缩略图,并将图像存储在正确的目录中,但我的代码的视频转换方面不会产生任何输出。我已经调整了几个小时的代码,但我一直无法解决此问题,但是,我被告知可以使用html,php和ffmpeg执行视频转换。FFmpeg无法正常工作
我的ffmpeg的路径是正确的,因为缩略图的生成完美。
**上传时从上传的视频中收集的信息。 $ name = $ _FILES ['video'] ['name']; $ title = $ _POST ['videotitle']; $ type = explode('。',$ 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'];
** Thumbnail generation that works perfect。 $ ffmpeg =“/ usr/local/bin/ffmpeg”; $ videoFile = $ _FILES ['video'] ['tmp_name']; $ 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“Thumbnail Created!
”;
} else { echo“Error Creating Thumbnail!”; }
**将上传的文件移动到其永久目录进行视频转换。 $ newFileLocation =“uploads /".$ username。”/ temp“。$ random_name。”。“。$ type; move_uploaded_file($ tmp,$ newFileLocation);
*视频转换代码。 $ outputFile =“uploads /".$ username。”/“。$ random_name。”。mp4“; $ databaseStoredVideoUrl =“uploads /".$ username。”/“。$ random_name。”。mp4“; $ video_cmd =“$ ffmpeg -i $ newFileLocation $ outputFile”; echo $ video_cmd; if(!shell_exec($ video_cmd)){ echo“Video Converted!
”; } else { echo“Error Creating Thumbnail!”;
}
**正确地将输出src链接存储在数据库中,但视频因为不存在而无法查看。 //将视频存储到正确的用户名和用户目录下的数据库中 mysql_query(“INSERT INTO videos
VALUES('$ session_user_id','','$ name','$ outputFile','$ title','','$图像文件')”); $ message =“Video Upload Successful。
”;
任何帮助或洞察力将是辉煌的。 谢谢。
**编辑:通过使用下面的行修复。 $ video_cmd =“$ ffmpeg -i $ newFileLocation -vcodec libx264 -vpre normal -acodec libfaac $ outputFile”;
,然后输入$ video_cmd到了shell_exec