我有一个将视频文件作为输入的表单。看起来像这样。
<?php $form = ActiveForm::begin(['options'=>['enctype'=>'multipart/form-data']]); ?>
<?= $form->field($model, 'file')->fileInput(['maxlength' => true]) ?>
我想获得视频的持续时间,尺寸和大小。在yiiframework文档中没有提及视频解析。有没有办法做到这一点?
编辑:正如所建议的那样,本地php可以使用getID3()。没有第三方库,有没有办法在Yii2中完成?如果没有,我如何将getID3()集成到Yii2?
答案 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步:您需要从以下网址下载类文件
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;
}