繁体   English   中英

如何在Azure媒体服务中获取上载视频的尺寸(PHP SDK / Django项目)

[英]How to get dimensions of an uploaded Video in Azure Media Services (PHP SDK/Django project)

我有一个Django应用,其中包含视频点播功能。 它由Azure媒体服务(AMS)提供支持。 当用户上传视频时,我首先将视频保存在Azure存储Blob中,然后使用PHP脚本(利用AMS php sdk)对该视频进行编码,并准备一个流URL(托管在AMS上)。

我的问题是:如何获得视频的尺寸 我需要知道高度和宽度,以便可以在AMS上将视频编码为低分辨率格式。 我无法从python获取尺寸,因为我没有先将视频文件上传到本地服务器(运行Web服务器的本地服务器)。 我有什么选择? 请指教。

当您使用用于PHP的AMS SDK创建AMS任务时,该任务需要视频资产文件。 您可以轻松地利用PHP模块http://getid3.sourceforge.net/在PHP流程中获取视频资产的信息。

您可以下载PHP模块http://getid3.sourceforge.net/并将其解压缩到php应用程序的文件夹中,并且可以使用以下代码段获取视频资产的尺寸:

require_once('./getid3/getid3.php');
$filename="<video_path>"; 
$getID3 = new getID3;
$ThisFileInfo = $getID3->analyze($filename);
var_dump($ThisFileInfo['asf']['video_media']);

如有任何其他疑问,请随时告诉我。

在Azure存储上使用remotefile更新

这是一个代码示例,利用它,您可以在Azure存储上使用Blob的SAS URL。 它将文件下载到服务器文件夹,并检测信息,然后删除模板文件。

$remotefilename = '<SAS Url>';
if ($fp_remote = fopen($remotefilename, 'rb')) {
    $localtempfilename = tempnam('/tmp', 'getID3');
    if ($fp_local = fopen($localtempfilename, 'wb')) {
        while ($buffer = fread($fp_remote, 8192)) {
            fwrite($fp_local, $buffer);
        }
        fclose($fp_local);
        // Initialize getID3 engine
        $getID3 = new getID3;
        $ThisFileInfo = $getID3->analyze($localtempfilename);
        // Delete temporary file
        unlink($localtempfilename);
    }
    fclose($fp_remote);
    var_dump($ThisFileInfo);
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM