2013-10-29 144 views
3

我在Azure blob存儲中存儲.mp4視頻時出現問題,以便在Azure上託管的網站上顯示。視頻類型設置爲video/mp4,存儲帳戶是不公開的,但它與網絡的作用,我已經更新了使用這段代碼的版本:從Azure blob存儲流式視頻

var credentials = new StorageCredentials("myaccountname", "mysecretkey"); 
var account = new CloudStorageAccount(credentials, true); 
var client = account.CreateCloudBlobClient(); 
var properties = client.GetServiceProperties(); 
properties.DefaultServiceVersion = "2012-02-12"; 
client.SetServiceProperties(properties); 
我不使用任何

視頻播放器,只是HTML5視頻標籤。我也不需要任何幻想,我只是想要播放視頻。

查看Chrome開發工具中的網絡選項卡,獲取視頻的GET請求有兩個條目。第一個狀態爲(pending),下一個爲(canceled)

我也給了它鏈接到網站的內容文件夾中的視頻。這一個也開始爲pending,但解決與204 Partial Content和視頻播放就好了。

我沒有什麼東西可以看,並且任何幫助和指針都會被讚賞。

+0

您的容器是否包含視頻文件專用?你能解釋爲什麼你要執行上面的代碼嗎?該代碼與視頻流無關。 –

+0

@GauravMantri該容器是私人的,但我不知何故預計它的工作,因爲存儲帳戶鏈接到webrole。將其設置爲公開可解決流式傳輸問題,但我不希望它公開。 代碼與更新API有關,因此它將允許在完全加載的情況下跳過視頻。 – Pinetree

回答

5

根據以上的意見,你需要是一個Shared Access Signature。使用下面的代碼在你的mp4文件上創建一個共享訪問簽名。

 var credentials = new StorageCredentials("myaccountname", "mysecretkey"); 
     var account = new CloudStorageAccount(credentials, true); 
     var container = account.CreateCloudBlobClient().GetContainerReference("yourcontainername"); 
     var blob = container.GetBlockBlobReference("yourmp4filename"); 
     var sas = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy() 
     { 
      Permissions = SharedAccessBlobPermissions.Read, 
      SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),//Set this date/time according to your requirements 
     }); 
     var urlToBePlayed = string.Format("{0}{1}", blob.Uri, sas);//This is the URI which should be embedded in your video player.