如何在播放之前在php代码中获取mp4文件的宽度和高度

时间:2012-11-05 20:13:31

标签: php mp4

我需要在弹出窗口中打开带有.mp4扩展名的文件。它打得很好,所有其他的东西都做得很好。但当弹出窗口打开时。那时我希望它以与视频相同的高度和宽度打开。我的页面上有超过25个视频。所以我将这些参数存储在代码中,然后在我打开弹出窗口时在javascript中使用它。所以我想在播放该文件之前知道视频文件的宽度和高度。我想在php中知道这些参数。

3 个答案:

答案 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环境非常古怪"。