C#学习教程:如何将流媒体上传到Azure媒体服务我想使用Azure媒体服务作为后端。在遵循Azure的教程时,我遇到的问题是Azure媒体服务SDK似乎不允许原始流上传。相反,我能找到的唯一上传方法使用路径字符串参数。我想避免将文件保存到磁盘(默认情况下它已经流式传输到磁盘),并且能够将请求发布的文件直接流式传输到Azure。到目前为止,这是我的代码:publicvoidSaveMedia(stringfileName,System.IO.Streamstream){CloudMediaContextmediaCloud=newCloudMediaContext("account","key");AssetCreationOptionsassetOptions=newAssetCreationOptions();varasset=mediaCloud.Assets.Create(fileName,assetOptions);varassetFile=asset.AssetFiles.Create(文件名);varaccessPolicy=mediaCloud.AccessPolicies.Create(fileName,TimeSpan.FromDays(3),AccessPermissions.Write|AccessPermissions.List);varlocator=mediaCloud.Locators.CreateLocator(LocatorType.Sas,asset,accessPolicy);assetFile.Upload("????????????");定位器.Delete();accessPolicy.Delete();如何做到这一点?这会与使用ASP.NETMVC4和Azure媒体服务处理上传的任何“最佳实践”发生冲突吗?您应该在不使用Azure媒体服务的情况下上传,它不是为入站流式传输到azure-storage-blob而设计的,这就是您所描述的。直接使用Azure存储SDK(使用v1.7以避免重新绑定问题)。StorageSDK允许流式写入blob。为此,您需要首先获取SAS写入定位器(看起来您在那里),然后使用locator.Path.Segments找到资产容器。然后使用它直接使用StorageSDK中的CloudBlobClient上传-它在某处提供流写入功能。请注意上面的代码:您没有指定AssetCreationOptions.None,因此它会假设存储中的文件将被加密存储(默认传输机制是安全的,而不是不安全的)。我认为您不会在上传前存储加密的文件流,因此您最好将其设置为AssetCreationOptions.None。就个人而言,我不会走这条路。阅读我关于“创建自己的YouTube”的博文:http://blog-ndrouin.azurewebsites.net/?id=1p=1471其中有一个完整的客户端上传示例,使用SASURL提供的服务器-端(使用您的帐户凭据,您可能不想在客户端四处游荡!)。但是,客户端必须能够使用该SASURLPUT到商店。就我而言,我使用了C#命令行应用程序。除非您的页面与目标存储帐户位于同一域中,否则您将无法在HTML5中执行此操作。如果您的网页(或管理上传的I-Frame)与您的存储帐户不在同一个域中,这将触发HTML5中的CORS“OPTIONS”调用到尚不支持CORS的Azure存储REST层。存储帐户中托管的HTML5I-Frame的替代方案是:Silverlight或Flash上传垫片,使用存储帐户$root中的跨源文件(或者可能是存储帐户中托管的插件对象以避免跨源文件请求).我不鼓励在POST中将流式文件上传到服务器。这使您的Web服务成为所有入站文件的瓶颈;长POST不是特别稳定:您的应用程序池可能会在上传过程中被回收,您就完蛋了。附言。我们团队(WindowsAzureMediaServices)主要关注这个论坛:http://social.msdn.microsoft.com/Forums/en-US/MediaServices/threads以上是C#学习教程:HowtouploadStreamtoAzureMediaServices对于分享,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
