Я не уверен, что я сделал, но каким-то образом, когда я запустил свой код, он удалил мои видеофайлы, то есть уменьшил каждый видеофайл до 20-40 КБ.
Я использую итератор дерева каталогов, чтобы пройти через выбранную папку и перебрать там все файлы и подпапки с командами для каждого. Я только делаю файлы на этом этапе, а код просто
- переименовывает видеофайл, чтобы в его имени не было пробелов
- извлекает миниатюру с помощью ffmpeg и помещает ее в каталог видео
- вставляет данные в базу данных для отображения на веб-сайте.
Теперь я смог использовать его один раз, и он работал, за исключением двух видеофайлов, которые я использовал для тестирования. По некоторым причинам эти файлы были удалены. Я попытался запустить его снова, и он удалил все видео.
В чем может быть проблема?
$mysqli = new mysqli("localhost", "refit_2_admin", "asd123", "refit_2");
if($mysqli->connect_error)
{
exit('Error db');
}
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli->set_charset("utf8mb4");
$_SESSION['mysqli'] = $mysqli;
// DIRECTORY
$dir = 'videos';
$it = new RecursiveTreeIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS));
foreach($it as $path => $branch)
{
if(is_dir($path)) // if is a directory
{
// echo something
}
if(is_file($path)) // if is a file
{
$schism = pathinfo($path);
$string = str_replace(' ', '_', $schism['filename']);
//$string = str_replace($replace, $with, $string);
rename($path, $dir.'\\'.$string.'.mp4');
$ffmpeg = 'ffmpeg.exe';
$video = dirname(__FILE__) . '\\'.$dir.'\\'.$string.'.mp4';
//echo ''.$video.'<br>';
$image = dirname(__FILE__) . '\\'.$dir.'\\'.$string.'.jpg';
//echo ''.$image.'<br>';
$second = 1;
/*$cmd = "$ffmpeg -i $video 2>&1";
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
$total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
$second = rand(1, ($total - 1));
}*/
$cmd = "$ffmpeg -i $video -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";
$return = `$cmd`;
$video_title = substr($schism['filename'], 0, -5);
$video_filename = $schism['filename'].'.mp4';
$video_thumbnail = $schism['filename'].'.jpg';
$video_include = basename(__DIR__);
// Insert
$stmt = $mysqli->prepare("INSERT INTO videos (video_title, video_filename, video_include, video_tags, video_thumbnail) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $video_title, $video_filename, $dir, $video_title, $video_thumbnail);
$stmt->execute();
$stmt->close();
}
}