processDir($subDir); } else { $this->processVideo($subDir); } } } public function processVideo($pathFile) { $mime = mime_content_type($pathFile); // dump("file type", [$mime, $pathFile]);exit; // continue; $mediaInfo = new MediaInfo(); $mediaInfo->setConfig('use_oldxml_mediainfo_output_format', true); if (strstr($mime, "video/") || strstr($mime, "application/octet-stream")) { if (is_file($pathFile)) { $mediaContainer = $mediaInfo->getInfo($pathFile); foreach ($mediaContainer->getVideos() as $video) { $height = $video->get('height')->getAbsoluteValue(); $width = $video->get('width')->getAbsoluteValue(); if ($width <= 1280 && $height <= 720) { echo "$pathFile 分辨率小于 720p 跳过\n"; // return; } } $fileInfo = pathinfo($pathFile); dump("fileInfo", $fileInfo); if (ends_with($fileInfo["filename"], "-720p")) { return; } if (is_file($fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-720p'. '.' . $fileInfo["extension"])) { unlink($pathFile); return; } $targetFile = $fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-720p'. '.' . $fileInfo["extension"]; dump("targetFile", [$targetFile]); // $result = shell_exec("handBrakeCli -Z 'Very Fast 720p30' -i '". $subPathFile ."' -o '". $targetFile . " && echo 'success'"); $result = shell_exec("handBrakeCli -Z 'Very Fast 720p30' -i '". $pathFile ."' -o '". $targetFile . "'"); dump($result); } } } public function processUnCompleteDir($baseDir = "/Volumes/WD/tmp/探花系列【AI高清2K修复】大合集") // public function processDir($baseDir = "/Volumes/Backup/iPhone nPlayer/") { $files = scandir($baseDir); foreach ($files as $file) { if ($file == "." || $file == "..") { continue; } $subDir = implode("/", [$baseDir, $file]); $isDir = is_dir($subDir); if ($isDir) { $this->processUnCompleteDir($subDir); } else { $this->processUnCompleteVideo($subDir); } } } public function processUnCompleteVideo($pathFile) { //... $mediaInfo = new MediaInfo(); $mediaInfo->setConfig('use_oldxml_mediainfo_output_format', true); $mime = mime_content_type($pathFile); // dump("file type", [$mime, $subPathFile]); // continue; if (strstr($mime, "video/")) { if (is_file($pathFile)) { $fileInfo = pathinfo($pathFile); // dump("fileInfo", $fileInfo); if (ends_with($fileInfo["filename"], "-1")) { return; } if (is_file($fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"])) { $mediaInfoContainer1 = $mediaInfo->getInfo($fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"]); $millSecond1 = $mediaInfoContainer1->getGeneral()->get("duration")->getMilliseconds(); echo gettype($millSecond1) . "\n"; // ["duration"] . "\n"; $mediaInfoContainer = $mediaInfo->getInfo($pathFile); $millSecond = $mediaInfoContainer->getGeneral()->get("duration")->getMilliseconds(); echo gettype($millSecond) . "\n"; if (abs(intval($millSecond) - intval($millSecond1)) > 100) { echo $pathFile . "\n"; echo abs(intval($millSecond) - intval($millSecond1)) . "\n"; } // unlink($pathFile); return; } // $targetFile = $fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"]; // dump("targetFile", [$targetFile]); //// $result = shell_exec("handBrakeCli -Z 'Very Fast 720p30' -i '". $subPathFile ."' -o '". $targetFile . " && echo 'success'"); // $result = shell_exec("handBrakeCli -Z 'Very Fast 720p30' -i '". $pathFile ."' -o '". $targetFile . "'"); // dump($result); } } } }