Я использовал следующий код для создания миниатюр с помощью ffmpeg, но он отлично работал для файлов, в которых нет пробелов или кавычек.
Но если в файле есть пробел (например, 'sachin knock.flv') или файлы с кавычками (например, sachin's_double_cent.mp4), он не работает ..
Что я могу сделать, чтобы эти файлы работали точно? Одно ограничение заключается в том, что я не могу переименовывать файлы, потому что они немного ..
Мой код
<?php
error_reporting(E_ALL);
extension_loaded('ffmpeg') or die('Error in loading ffmpeg');
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('db', $link);
$max_width = 120;
$max_height = 72;
$path ="/home/rootuser/public_html/temp/";
$qry="select id, input_file, output_file from videos where thumbnail='' or thumbnail is null;";
$res=mysql_query($qry);
while($row = mysql_fetch_array($res,MYSQL_ASSOC))
{
$orig_str = array(" ");
$rep_str = array("\ ");
$outfile = $row[output_file];
// $infile = $row[input_file];
$infile1 = str_replace($orig_str, $rep_str, $outfile);
$tmp = explode(".",$infile1);
$tmp_name = $tmp[0];
$imgname = $tmp_name.".png";
$srcfile = "/home/rootuser/public_html/uploaded_vids/".$outfile;
echo exec("ffmpeg -i ".$srcfile." -r 1 -ss 00:00:05 -f image2 -s 120x72 ".$path.$imgname);
$nname = "./temp/".$imgname;
$fileo = fopen($nname,"rb");
if($fileo)
{
$imgData = addslashes(file_get_contents($nname));
echo $imgdata;
$qryy="update videos set thumbnail='{$imgData}' where input_file='$outfile'";
$ress=mysql_query($qryy);
}
else
echo "Could not open<br><br>";
unlink('$nname');
}
?>