我需要在弹出窗口中打开带有.mp4扩展名的文件。它打得很好,所有其他的东西都做得很好。但当弹出窗口打开时。那时我希望它以与视频相同的高度和宽度打开。我的页面上有超过25个视频。所以我将这些参数存储在代码中,然后在我打开弹出窗口时在javascript中使用它。所以我想在播放该文件之前知道视频文件的宽度和高度。我想在php中知道这些参数。
答案 0 :(得分:3)
试用php-mp4info库。
include("MP4Info.php");
$info = MP4Info::getInfo('directory/to/file.mp4');
if($info->hasVideo) {
echo $info->video->width . ' x ' . $info->video->height;
}
$ info对象例如如下:
stdClass Object
(
[hasVideo] => 1
[hasAudio] => 1
[video] => stdClass Object
(
[width] => 480
[height] => 272
[codec] => 224
[codecStr] => H.264
)
[audio] => stdClass Object
(
[codec] => 224
[codecStr] => AAC
)
[duration] => 6
)
答案 1 :(得分:2)
尝试使用FF-MPEG。您可以通过sys调用或使用位于http://ffmpeg-php.sourceforge.net/
的PHP的FF-MPEG扩展来使用它以下是使用FF-MPEG-PHP从视频中获取元信息的方法:
$video = new ffmpeg_movie($filePath);
$duration = $video->getDuration();
$width = $video->getFrameWidth();
$height = $video->getFrameHeight()
FF-MPEG也有许多有用的功能!
答案 2 :(得分:-1)
我不想安装任何php扩展程序(它是Windows下的灾难工作,特别是Windows 64bit),所以我使用ffprobe和php(如下所示)来获取维度:
$xcmd = '{$ffmpeg-stored-folder}\bin\ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width '.$filename.' > vdogeom.txt';
exec($xcmd);
$lines = file("vdogeom.txt");
foreach ($lines as $v) eval('$'.$v.';');
}
echo strtoupper(pathinfo($filename, PATHINFO_EXTENSION)).intval(round(filesize($filename) * .0009765625))."K".$streams_stream_0_width."x".$streams_stream_0_height;
它会像" WMV540K640x480 "
这里唯一的诀窍是:"我必须指定ffprobe exectution文件的完整路径,因为我的PHP的PATH环境非常古怪"。