如何在Yii2中获取视频文件输入的持续时间,大小和尺寸?

时间:2017-07-13 06:06:51

标签: php html video yii2

我有一个将视频文件作为输入的表单。看起来像这样。

<?php $form = ActiveForm::begin(['options'=>['enctype'=>'multipart/form-data']]); ?>

<?= $form->field($model, 'file')->fileInput(['maxlength' => true]) ?> 

我想获得视频的持续时间,尺寸和大小。在yiiframework文档中没有提及视频解析。有没有办法做到这一点?

编辑:正如所建议的那样,本地php可以使用getID3()。没有第三方库,有没有办法在Yii2中完成?如果没有,我如何将getID3()集成到Yii2?

3 个答案:

答案 0 :(得分:2)

"james-heinrich/getid3": "*"添加到require文件中的project-directory/composer.json部分,然后添加到项目目录中(如果您已经安装好了作曲家)运行命令:

composer update

然后在项目中使用它:

$getID3 = new \getID3;

$file = $getID3->analyze($pathToFIle);

您的项目中将提供完整的库,无需不必要的导入/需求。

答案 1 :(得分:0)

解决。

第1步:(Install FFmpeg from here

第2步:获取视频的持续时间

public static function getDuration($filePath)
{
    exec('ffmpeg -i'." '$filePath' 2>&1 | grep Duration | awk '{print $2}' | tr -d ,",$O,$S);
    if(!empty($O[0]))
    {
        return $O[0];
    }else
    {
        return false;
    }
}

第3步:获取视频尺寸

 public static function getAVWidthHeight( $filePath )
{
    exec("ffprobe -v error -show_entries stream=width,height -of default=noprint_wrappers=1 '$filePath'",$O,$S);
    if(!empty($O))
    {
        $list = [
                "width"=>explode("=",$O[0])[1],
                "height"=>explode("=",$O[1])[1],
        ];

        return $list;
    }else
    {
        return false;
    }
}

答案 2 :(得分:-1)

getID3()

的Yii2实现

第1步:您需要从以下网址下载类文件

  

https://github.com/JamesHeinrich/getID3/archive/master.zip

step2:将其解压缩到您的供应商目录网址,如下所示

  

供应商/ getID3主/ getid3 / getid3.php

第3步:将下面的代码放在测试结果

public function actionIndex() { //where you need this code

  $path = \Yii::getAlias("@vendor/getID3-master/getid3/getid3.php");
  require_once($path);
  $getID3 = new \getID3;
  $file = $getID3->analyze($path_of_the_video_file);

  echo("Duration: " . $file['playtime_string'] .
    " / Dimensions: " . $file['video']['resolution_x'] . " wide by " . $file['video']['resolution_y'] . " tall" .
    " / Filesize: " . $file['filesize'] . " bytes<br />"); 

 die;// for see instant result;

}