Criar vídeos com tempo de 00:00:05 usando ffmpeg
Estou fazendo Upload de um arquivo MP4 para o servidor. Mas, gostaria de limitar o tempo dos vídeos.
Por exemplo: Você tem um vídeo de 00:03:00 (três minutos), no upload o FFMPEG cria um novo arquivo de vídeo com 5 segundos. Ou seja, descarta os outros 00:02:45.
Segue meu código PHP para conhecimento:
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
$name = $_FILES['photoimg']['name'];
$size = $_FILES['photoimg']['size'];
$message = $_POST['comment'];
$publicar = $_POST['publicar'];
$full_name = $full_name;
function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$userdetails=$Wall->User_Details($uid);
$username=$userdetails['username'];
$email=$userdetails['email'];
$full_name=$userdetails['full_name'];
$profile_pic=$userdetails['profile_pic'];
$profile_pic_status=$userdetails['profile_pic_status'];
$valid_formats = array("mp4", "MP4");
$p_status="1";
$actual_image_name='';
if(strlen($full_name)>0 && strlen($name))
{
$ext = getExtension($name);
if(in_array($ext,$valid_formats))
{
if($size<(1024*3000)*5)
{
$actual_image_name = time().$uid.".".$ext;
$tmp = $_FILES['photoimg']['tmp_name'];
$profile_path = "uploads/";
if(move_uploaded_file($tmp, $profile_path.$actual_image_name))
{
$upload = $profile_path.$actual_image_name;
$cartaz = "uploads/".time().$uid."."."png";
$ffmpeg = "C:\\ffmpeg\\bin\\ffmpeg";
//$size = "120x90";
$size = "320x180";
$cmd = "$ffmpeg -i $upload -an -ss 00:00:1 -s $size $cartaz";
shell_exec($cmd);
$settings=mysql_query("INSERT INTO videos (`id`, `uid`, `video`, `imagem`, `tipo`, `publicar`, `descricao`) VALUES ('', '$user_id', '$upload', '$cartaz', 'mp4', '$publicar', '$message')");
if($settings)
{
$msg="<span class='succ'>Successful. </span>";
}
}
else
{
$msg="<span class='error'>Failed.</span>";
}
}
else
{
$msg="<span class='error'>Image file size max 300 KB</span>";
}
}
else
{
$msg="<span class='error'>Invalid file format.</span>";
}
}
else if(strlen($full_name)>0)
{
$settings=mysql_query("INSERT INTO `wall`.`musicais` (`id`, `uid`, `musicais`) VALUES ('', '$uid', '$actual_image_name')");
if($settings)
{
$msg="<span class='succ'>Updated. </span>";
}
}
else
{
$msg="<span class='error'>Please give valid name and image..!</span>";
}
}
Essa seria a linha que executa o FFMPEG: "$ffmpeg -i $upload -an -ss 00:00:1 -s $size $cartaz";
Tentei utilizar os comandos -t 00:00:05, mas não resultou em vídeo de 5 segundos. Quero economizar espaço do servidor! :)
Obrigado pessoal! :)
Discussão (2)
Carregando comentários...