如何在目录中查找丢失的 .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
文件是否存在进行迭代目录检查,我宁愿尝试(看看它是否阻塞):
- 正在提取所有
.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' )
我的服务器上有这样的文件:
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
文件是否存在进行迭代目录检查,我宁愿尝试(看看它是否阻塞):
- 正在提取所有
.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' )