我有一个包含视频点播功能的Django应用程序。它由Azure媒体服务(AMS)提供支持。当用户上传视频时,我首先将视频保存在Azure存储blob中,然后使用PHP脚本(利用AMS PHP sdk)对所述视频进行编码,并准备一个流URL(托管在AMS上)。
我的问题是:我如何得到尺寸的视频?我需要知道高度和宽度,以便我可以在AMS上将视频编码为低分辨率格式。我无法从python获得尺寸,因为我没有首先将视频文件上传到本地服务器(我的web服务器正在运行)。我有什么选择?请建议。
由于您使用的是AMS SDK for PHP来创建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存储上blobs的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);
}