如何在目录中查找丢失的 .mp4 文件?

How to find missing .mp4 files in a directory?

我的服务器上有这样的文件:

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>";
    } 
}

如何找到没有匹配 .mp4.flv 文件?

我更愿意在目录中放置一个脚本,然后 运行 它会吐出所有不匹配 .mp4 的文件名,这会告诉我需要转换的文件。

与其对给定的 .mp4 文件是否存在进行迭代目录检查,我宁愿尝试(看看它是否阻塞):

  1. 正在提取所有 .flv 个文件
  2. 正在提取所有 .mp4 个文件
  3. 隔离丢失的 .mp4 个文件
  4. 开始转换

代码:(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' )