我正在开发处理媒体文件(音频/视频)的服务 . 这些服务负责上传并随后流式传输客户端上传的媒体文件(IOS,Android,但不限于这些设备/平台) .
我们使用node.js和mongodb作为数据库 . 在不久的将来,我们的服务将成为Azure的一部分 . (我们后端的部分已经存在于Azure中)
在那种情况下,我遇到了Azure媒体服务 . 我知道它没有任何sdk可以用于Node.js所以我唯一的选择是使用Azure Media Services的REST服务 .
我的问题是:
1)已经处理此场景的开发人员在这种情况下采用了正确的方法 . 我对这里的方法/实践持开放态度,并改变我目前计划做的事情 .
2)如果我使用Azure Media Services . 我的客户端如何调用我的服务(node.js),该服务充当调用Azure Media Services的REST服务的代理 . 这将如何正常工作,我有我的代理中的文件重新上传 . 或者我将在内部指导我的服务,以便在内部上传到媒体服务 .
3)如何在媒体服务中上传这些媒体文件与MongoDB中的记录相关 . 就像一条记录可以有多个媒体文件 .
我感谢这里的任何指示/解释 .
谢谢,
2 回答
为了正确回答你的问题,很少有问题需要回答 .
1.您将在azure媒体服务上提供什么功能 . 从您的问题来看,似乎主要目标是让用户上传资产,并使他们能够流式传输上传的内容 .
为此,您需要在节点js中实现以下步骤 .
通过调用REST API在Azure Media Service(WAMS)中创建资产和资产文件记录 . http://msdn.microsoft.com/en-us/library/windowsazure/hh973617.aspx
创建访问策略和定位器,它将为需要上载文件的blob存储提供URI . WAMS REST API
使用node.js上传文件到blob存储http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/blob-storage/
创建编码作业,将您输入到多比特率mp4 . WAMS REST API
将多比特率mp4打包为平滑或HLS格式或在WAM中使用dinamic打包功能 . http://channel9.msdn.com/Series/Windows-Azure-Media-Services-Tutorials/Introduction-to-dynamic-packaging
准备好流式传输内容后,您需要为用户客户端播放URL指向源服务器 . 为此,您必须调用WAMS REST API并创建原始定位器
资产公开ID和AlternativeID属性,您可以使用这些属性将有关内容的元数据映射到WAMS资产,并实现任何其他内容管理逻辑 .
如果您有一些基于用户的身份验证,并且不希望将单独的azure媒体帐户专用于一个用户,则需要充当代理 . WAMS为资产摄取,编码,打包,按需交付以及最近的实时流媒体提供基本模块 .
它可以用作cms系统的基础,也可以通过添加其他身份验证授权层来执行SSAS提供程序 . 目前,您可以使用第三方产品http://www.ezdrm.com/进行播放DRM保护,或使用您自己的许可证服务器http://msdn.microsoft.com/en-us/library/windowsazure/dn223278.aspx .
我有一个小的解决方案,但我认为它需要你的一些工作,也许你不会那么喜欢,如何使用Windows Azure移动服务 . 它现在支持添加NPM,我告诉您使用Windows Azure Mobile服务的原因是它将帮助您连接到您的客户端,无论使用何种应用程序平台 .
http://weblogs.asp.net/scottgu/archive/2013/06/14/windows-azure-major-updates-for-mobile-backend-development.aspx
要集成.Net和Node Js,你可以先使用Edge JS或signalR开始 . http://www.infoq.com/articles/the_edge_of_net_and_node http://www.asp.net/signalr
我只想提出一个可能有助于解决Node Js中缺少媒体服务支持的想法,就是你使用Blob存储进行流媒体传输 . 毕竟媒体服务是基于我认为的Blob存储 . 这是一个链接,将指导您使用blob存储 .
http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/blob-storage/
这里也是一个关于如何使用Node JS从blob存储流传输的问题,我希望你发现它有益 .
How to stream a Windows Azure Blob to the client using Node.js? Getting contents of a streaming Blob to be sent to a Node.js Server
这里还有另一个链接,可以帮助你这样做"Geo-Protection for Video Blobs Using a Node.js Media Proxy" http://msdn.microsoft.com/en-us/magazine/dn198240.aspx
只是想确保您拥有Windows Azure Node Js SDK,您可能会找到一些可以帮助您开发应用程序的解决方案 . https://github.com/WindowsAzure/azure-sdk-for-node
我希望我的回答可以帮助你告诉我你是否需要其他任何东西 .