2013-01-04 28 views
2

我創建了一個基本的應用程序並上傳到Azure。我想嵌入視頻,以便用戶可以從列表中進行選擇並查看每個視頻的視頻;例如,選擇一部電影並觀看它的預告片。如何在Azure上的MVC應用程序中託管和嵌入視頻?

我在MVC解決方案中創建了兩個文件夾:'/ Posters'包含.jpg文件作爲每個視頻的背景,'/ Videos'包含.mp4文件作爲每個視頻的源文件。

的.cshtml片段是在這裏:

<video controls="controls" poster="@Model.PosterPath" width="640" height="360"> 
    <source src="@Model.VideoPath" type="video/mp4" /> 

     <object type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="640" height="360"> 
      <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" /> 
      <param name="allowFullScreen" value="true" /> 
      <param name="wmode" value="transparent" /> 
      <param name="flashVars" value="config={'playlist':['@Model.PosterUrl',{'url':'@Model.VideoUrl','autoPlay':false}]}" /> 
      <img alt="@Model.AltText" src="@Model.PosterPath" width="640" height="360" title="No video playback capabilities" /> 
     </object> 
</video> 

發佈後,視頻元素是存在的,而海報顯示正常,但是當我點擊播放按鈕,我得到一個「流未找到」錯誤。

我使用用於將videoPath和PosterPath值的相對路徑,如下所示:

../../Videos/myvideo.mp4 

的VideoUrl和PosterUrl值需要是絕對路徑,用「:」和「/」的值更換,所以「http://mywebsite.azurewebsites.net/Videos/myvideo.mp4」被示出如下:

http%3A%2F%2Fmywebsite.azurewebsites.net%2FVideos%2Fmyvideo.mp4 

有明顯的機會,所述路徑(相對和絕對)是不正確的;但由於海報顯示正確,我仍然想知道是否有其他原因。

我有什麼方法可以測試視頻是否已正確發佈?道歉,如果這是一個非常基本的問題,這是:-)

感謝

我的第一個Azure應用程序

回答

-1

有你的模型返回路徑,如「〜/影片/ myvideo.mp4」,然後在視圖中,使用@Url.Content(Model.VideoUrl)

就視頻部署而言,首先檢查您的解決方案,並檢查每個視頻的編譯屬性是否設置爲「內容」。這將確保它們隨包裝一起部署。要驗證,您應該能夠瀏覽到http://mywebsite.azurewebsites.net/Videos/myvideo.mp4。另外,如果這是一個Cloud Service,則可以啓用遠程訪問和RDP到實例中,以驗證已部署的文件。他們將位於\ sitesroot \ 0 \ videos下的E:或F:上。

5

將視頻放入Azure Blob Storage可能會更好。您將遇到的一個問題是,每當有人流式傳輸視頻時,它都會計入您的Azure網站的傳出流量,即limited to 165MB a day

如果您將視頻存儲在Azure Blob存儲中,它會更快並且更好地擴展,因爲您可以利用Azure CDN,而不會招致網站的所有流量。請注意,您仍然必須支付Azure Blob Storage costs,但它可能是更便宜的路線。

這也意味着您不必將巨大的媒體文件保存在您的項目中,我無法想象它對於源代碼控制或部署非常有用。

有教程如何做smooth streaming with Silverlight以及如何獲得HTML5 video to work。一個重要的注意事項是,確保在存儲文件時設置了內容類型,否則它們將只下載並不流式傳輸。

例使用HTML5 VideoJS(這應該也是您的Flash播放工作上面):

  1. 創建在Azure門戶
  2. 一個Blob存儲帳戶上傳視頻。無論是通過代碼,還是使用Azure Storage Explorer。請確保您設置的文件「視頻/ MP4」
  3. 的內容類型添加VideoJS CSS和腳本文件,並創建一個<video>元素指向您的Blob存儲文件

代碼:

<link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet"> 
<script src="http://vjs.zencdn.net/c/video.js"></script> 
<video class="video-js vjs-default-skin" controls 
     preload="auto" width="640" height="480" 
     data-setup="{}"> 
    <source src="http://storageaccount.blob.core.windows.net/yourvideo.mp4" type='video/mp4'> 
</video> 

使用Blob存儲的其他優點之一是使用Shared Access Signatures。這些可讓您保持私密空間,然後生成僅在指定時間段內有效的簽名URL。這樣,應用程序的用戶就可以查看視頻,並且如果他們複製了URL以嘗試重新分配,它將會過期並且無用。這並不阻止他們下載和發佈,但它不是DRM的一種形式。

相關問題