3

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

4

3 回答 3

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
)
于 2012-11-05T20:25:46.080 回答
3

尝试使用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 还有很多有用的功能!

于 2012-11-05T20:26:04.437 回答
-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 执行文件的完整路径,因为我的 PHP 的 PATH 环境非常奇怪”。

于 2015-04-16T10:13:31.500 回答