簡體   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