我正在使用getID3库来获取远程视频文件的详细信息。我正在尝试读取文件的一部分,以获取文件的详细信息,但是一些视频在一开始就没有完整的详细信息。
对于这些视频,我尝试下载完整的视频,然后提取相关信息。然而,即使在视频完全下载之后,getID3->analyze($filename)也会返回相同的错误文件信息。
但是,当我复制视频,然后对复制的视频运行函数analyze($filename.'copied.mp4')时,即使文件内容相同,它也会返回正确的信息。也许getID3没有再次加载视频,但是,我如何才能在不复制视频的情况下解决此问题。
请找到下面的代码。
if ($fp_remote = fopen($remotefilename, 'r')) {
echo 'conn opened';
$localtempfilename = tempnam('/home/xerox/abc', 'whateva').'.mp4';
if ($fp_local = fopen($localtempfilename, 'wb')) {
$count = 0;
$countExpiry = 8;
while ($buffer = fread($fp_remote, 8192)) {
$count++;
fwrite($fp_local, $buffer);
if ($count >= $countExpiry) {
fflush($fp_local);
$getID3 = new getID3;
$ThisFileInfo = $getID3->analyze($localtempfilename);
if ($ThisFileInfo["error"]){
print "problem encouterd";
$countExpiry += 1000;
} else {
break;}
}
}
fclose($fp_local);
$getID31 = new getID3;
copy ( $localtempfilename, $localtempfilename.'_copied.mp4' );
$ThisFileInfoz = $getID31->analyze($localtempfilename.'_copied.mp4');
// Delete temporary file
unlink($localtempfilename);
fclose($fp_remote);
var_dump($ThisFileInfoz);
}
}发布于 2016-08-30 23:43:49
一个给clearstatcache的电话为我解决了这个问题,
文件大小,因为对文件大小的重复调用将被文件系统缓存,并且getID3不会读取超出文件末尾的内容。
https://stackoverflow.com/questions/39209452
复制相似问题