У меня есть файлы, подобные этому на моем сервере:
aaaa.flv
aaaa.mp4
bbbb.flv
bbbb.mp4
cccc.flv
dddd.flv
dddd.mp4
Этот код не работает:
$dir=$_SERVER{'DOCUMENT_ROOT'}."/test/";
foreach(glob($dir . "*.flv") as $file)
{
$strip_ext=substr($file, 0, strrpos($file, "."));
$mp4_ext=$strip_ext.".mp4";
if (!file_exists($dir . $mp4_ext)) {
echo "Non-matching pair! ".$strip_ext."<BR>";
}
}
Как я могу найти свой .flv
файлы, которые не имеют соответствия .mp4
?
Я бы предпочел поместить скрипт в каталог и запустить его, чтобы он выплевывал все имена файлов без совпадения с .mp4, это указывало бы на файлы, которые мне нужно будет конвертировать.
Вместо того, чтобы делать итерированные проверки каталогов, если данный .mp4
файл существует, я лучше попробую (и посмотрим, не захлебнется ли он):
.flv
файлы.mp4
файлы.mp4
файлыКод: (Mock Demo)
chdir($_SERVER{'DOCUMENT_ROOT'}."/test/"); // change working directory so that glob's output excludes the path
$flvs=array_map(function($f){return basename($f,'.flv');},glob("*.flv")); // store .flv's and strip suffixes
$mp4s=array_map(function($f){return basename($f,'.mp4');},glob("*.mp4")); // store .mp4's and strip suffixes
$need_conversion=array_diff($flvs,$mp4s); // run ffmpeg() on these suffix-free files
// $need_conversion = array( 4 => 'cccc' )
Других решений пока нет …