如何在 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 存储上的远程文件更新

这是一个代码示例,利用它,您可以在 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);
}