私はウェブサイト www.goploom.com を所有しており、YouTube と同様に、ユーザーは動画をアップロードして表示できます。アップロードされたビデオは、サイトの html5 ビデオ プレーヤーとの互換性のために mp4 形式に変換されます。私の問題は、FFmpeg がアップロードされたビデオからビデオ サムネイルを正常に生成し、画像を適切なディレクトリに保存する一方で、コードのビデオ変換の側面で出力が生成されないことです。数時間コードを微調整しましたが、この問題を解決できませんでしたが、html、php、および ffmpeg でビデオ変換を実行できると言われました。
サムネイルの生成が完全に機能するため、ffmpeg へのパスは正しいです。
**アップロード時にアップロードされたビデオから収集された情報。$name = $_FILES['ビデオ']['名前']; $title = $_POST['videotitle']; $type = expand('.', $name);
$type = end($type); $size = $_FILES['ビデオ']['サイズ']; $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/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"; if(!shell_exec($cmd)){ echo "サムネイルを作成しました!
";
} else { echo "サムネイルの作成中にエラーが発生しました!"; }
**アップロードされたファイルを動画変換用の永続ディレクトリに移動します。$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 "ビデオが変換されました!
"; } else { echo "サムネイルの作成中にエラーが発生しました!";
}
**出力 src リンクをデータベースに適切に保存しますが、ビデオが存在しないため、ビデオを表示できません。// 正しいユーザー名とユーザー ディレクトリの下のデータベースへのビデオvideos
ストレージ"); $message = "動画のアップロードに成功しました。
";
どんな助けや洞察も素晴らしいでしょう。ありがとう。
**編集: 次の行を使用して修正しました。$video_cmd = "$ffmpeg -i $newFileLocation -vcodec libx264 -vpre normal -acodec libfaac $outputFile";
そして $video_cmd を shell_exec に入力します