gpt4 book ai didi

PHP使用ffmpeg将任何视频转换为MP4

转载 作者:行者123 更新时间:2023-12-04 22:50:40 26 4
gpt4 key购买 nike

我有一个网站,允许用户上传视频。但是使用 HTML5 标签视频,只允许 MP4 视频

因此,我想将用户上传的任何类型的视频转换为 MP4,然后在我的数据库中添加路径。

我尝试了一些方法,将文件扩展名更改为 MP4,但它不起作用。
我读过一些关于 ffmepg 的文章,但我不知道如何使用它。

这是我的 PHP 脚本,我在其中更改文件扩展名,然后在我的数据库中添加路径,请问如何正确转换视频,我应该添加/更改什么?

<?php 
if(file_exists($_FILES['media-vid']['tmp_name']) && is_uploaded_file($_FILES['media-vid']['tmp_name']))
{
$targetvid = md5(time());
$target_dirvid = "videos/";
$target_filevid = $targetvid.basename($_FILES["media-vid"]["name"]);
$uploadOk = 0;
$videotype = pathinfo($target_filevid,PATHINFO_EXTENSION);

$video_formats = array(
"mpeg",
"mp4",
"mov",
"wav",
"avi",
"dat",
"flv",
"3gp"
);
foreach ($video_formats as $valid_video_format)
{
if (preg_match("/$videotype/i", $valid_video_format))
{
$target_filevid = $targetvid . basename($_FILES["media-vid"] . ".mp4");
$uploadOk = 1;
break;
}
else
{
//if it is an image or another file format it is not accepted
$format_error = "Invalid Video Format!";
}
}

if ($_FILES["media-vid"]["size"] > 5000000000000)
{
$uploadOk = 0;
echo "Sorry, your file is too large.";
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0 && isset($format_error))
{
echo "Sorry, your video was not uploaded.";
// if everything is ok, try to upload file
}
else if ($uploadOk == 0)
{
echo "Sorry, your video was not uploaded.";
}
else
{
$target_filevid = strtr($target_filevid,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$target_filevid = preg_replace('/([^.a-z0-9]+)/i', '_', $target_filevid);
if (!move_uploaded_file($_FILES["media-vid"]["tmp_name"], $target_dirvid. $target_filevid))
{
echo "Sorry, there was an error uploading your file. Please retry.";
}
else
{
$vid= $target_dirvid.$target_filevid;
$nbvid = 1;
}
}
}
?>

谢谢你。

最佳答案

这对我有用

$folder = '/path/to/uploads/folder';
$filename = 'your_video.avi';
$newFilename = pathinfo($filename, PATHINFO_FILENAME).'.mp4';

exec('/usr/bin/ffmpeg -y -i '.$folder.DIRECTORY_SEPARATOR.$filename.' -c:v libx264 -c:a aac -pix_fmt yuv420p -movflags faststart -hide_banner '.$folder.DIRECTORY_SEPARATOR.$newFilename.' 2>&1', $out, $res);

if($res != 0) {
error_log(var_export($out, true));
error_log(var_export($res, true));

throw new \Exception("Error!");
}

关于PHP使用ffmpeg将任何视频转换为MP4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46066860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com