2013-01-04 27 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的一种形式。

相关问题