从 Blob 存储平滑流式传输视频

5
我有一个MVC 4应用程序,其中包含一个视图,用于显示仅为MP4格式的Azure blob存储中的“视频”。目前,我正在使用MediaElment.js(或任何典型的flash播放器)作为视频播放器。如何以平滑流式传输或渐进式下载(自适应流式传输)方法播放这些视频?我需要在Azure中设置哪些配置来支持流式传输?在上传MP4文件到blob存储之前,我是否需要做任何事情?
我已经查看了此链接http://msdn.microsoft.com/en-us/spazuretrainingcourse_spblobstorageazure.aspx,就我所理解的而言,Windows Azure Blob Uploader用于将视频文件上传到Azure,并使用Silverlight作为客户端。在我的情况下,视频是从另一个应用程序上传的,因此无法进行视频文件的操作。那么,有没有办法在不更改任何内容的情况下实现流式传输并在视频播放器中播放它,而不使用Silverlight?
如果我可以在上传时更改媒体文件,是否可以采取任何措施?
谢谢。

你是否好奇过Windows Azure Media Services?WAMES支持从Blob Storage进行自适应流媒体传输,甚至提供了一种将视频转换为平滑流媒体格式的方法,只需要付出一点努力即可。 - Rytmis
1个回答

4
我已经几乎完全按照这个方法操作了,除去自适应流媒体技术(我处理的视频文件大小只有25MB或更小)。我在Web页面的前端使用JWPlayer,并且视频文件存储在Azure Blob Storage中。
我使用预构建的Windows二进制文件ffmpeg.exe,将其上传到Azure(放置在Worker Role项目的根目录下),然后在WorkerRole中使用System.Diagnostics.Process对视频文件进行处理。您可以使用相同的方法创建所需的不同质量版本。
因此,当用户上传视频时,我的业务逻辑层会将消息放入Azure消息队列中,我的工作角色会接收到该消息,将视频复制到Azure LocalStorage(LocalStorage是您可以在Azure项目设置文件中配置的物理磁盘),运行ffmpeg.exe处理文件,然后将其放回Blob Storage中。

非常感谢。根据您的方法,在将视频文件上传到 Blob 存储时,您使用 ffmpeg 将媒体文件转换为流内容,并将此流内容存储在 Blob 中,对吗? - Dennis Jose
不完全正确。上传到 Blob 后,我将视频文件复制到一个临时文件夹,并使用 ffmpeg 更改编码(但是您可以使用 ffmpeg 做很多事情,我猜想您可以在 Azure 实例上的命令行服务器端使用它来代替 Expression Encoder 来完成您想要的操作)。然后,我将更改后的视频文件放回 Blob 存储中。 - hollystyles
谢谢。由于我对FFMPEG和视频流程不熟悉,您能告诉我像这样的命令的输出文件格式应该是什么吗:ffmpeg -i input.mp4-b:v 64k output.avi。将MP4文件编码为MP4输出是否有意义? - Dennis Jose
让我们去聊天室http://chat.stackoverflow.com/rooms/7/c 我也是FFMPEG的新手。 - hollystyles
如果您不介意的话,可以在答案中加入聊天记录的结论。我也在寻找完全相同的东西,认为您提供完整的答案会得到一些赞同票。 - Poul K. Sørensen
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接