通过从HTML5批量上传到Azure媒体服务来提取视频

我正在开发一个项目(web api, Angularjs, HTML5,CSS3),目前允许用户通过从web api调用获取定位器一次上传一个视频文件,并使用定位器通过分块上传视频块网址.

现在,我必须提供一个页面,用户可以将视频拖放到网页上的某个区域,并将所有视频文件大量上传到Azure媒体服务.似乎为每个要上传的文件生成一个定位器,并且一次执行一个定位器直到它们全部完成似乎不是最有效的.当需要通过html5拖放时,将所有视频文件大量上传到媒体服务的最佳选择是什么?

我找到了详细说明如何使用批量上传的示例,其中提供了一个要上传到此处的网址:https://azure.microsoft.com/en-us/documentation/articles/media-services-dotnet-upload-files/.问题是如何使用此网址从html5上传?我上传单个视频的当前方式是生成SAS URL并使用http方法put将块上传到该单个URL,而从批量上传返回的url似乎是您用于通过第三方工具上传的URL,按照上面发布的链接,而不是使用FileReader的html5.

我真的很困惑我应该在这个场景中使用哪种方法.关键项目是我必须使用html5,但允许用户在流程中的某个时刻将需要全部发布的任意数量的视频拖放到媒体服务.老实说,我目前的问题是我拥有所有这些选项,并且不确定从哪里开始.

最佳答案

It seems like generating a locator for each file to be uploaded and doing one at a time until they are all complete does not seem the most efficient. What is the best option for mass uploading all video files into media services when it needs to be done via html5 with drag and drop?

一次上传一个文件可能是最好的解决方案,因为典型用户的上传速度非常有限.单个上载将使带宽饱和,并且将产生最小的TCP开销(仅来自一个连接).

The problem with this is how would I use this url to upload from html5?

直接从JavaScript调用Azzure’s REST API(而不是您提供的链接中的.NET API)似乎是一个更好的选择,因为它消除了编写服务器端代码的需要.从angular调用REST API的最简单方法是使用$http service.您还可以使用$resource service在更高级别的抽象上运行.

点赞