我正在研究执行以下操作的最佳方法:
我有一堆闭路电视录像文件(MP4 文件,大小从 4MB-50MB 不等),我想通过门户网站提供这些文件。我的第一个想法是通过 Web API 流式传输文件,所以我找到了下面的链接:
http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/ http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/
实现示例项目后,我意识到该示例基于 Web API 1,而不是我正在使用的 Web API 2.1。经过更多研究后,我得到了使用 WebAPI 2.1 进行编译的代码。然后我意识到,如果我想做流媒体,我不能使用 MP4 文件,这背后有大量的技术细节,所以这里是线程:
实时 http 流传输到 HTML5 视频客户端的最佳方法 https://stackoverflow.com/questions/21921790/best-approach-to-real-time-http-streaming-to-html5-video-client
看来要实现这一点,我需要将我的 MP4 文件编码为 WebM 之类的东西,但这会花费太多时间。冰铸(http://icecast.org/ http://icecast.org/),这是一个流媒体服务器,但我还没有尝试过,再次不确定这是否是我需要做的。
现在我想起来了,我其实不需要直播,我只需要让客户端通过浏览器播放视频文件,也许使用HTML5视频元素?问题是,我的应用程序也需要在 IOS 上运行,所以我认为这意味着我什至无法将 MP4 编码为 FLV,而只能使用闪存。
我真正需要的只是将所有视频剪辑作为缩略图显示在网页上,如果客户端单击其中一个,它就会立即开始播放,而无需下载整个文件。想想 imdb.com 上的“观看预告片”功能。只需播放视频文件,这就是我想要的。我不需要实时流媒体,我认为这就是 WebM 的用途?再说一遍,不确定。
两件事情:
-
Use a 视频元素 http://www.w3schools.com/tags/tag_video.asp在你的 HTML 中(这适用于浏览器和 iOS):
<video src="http://yoursite.com/api/Media/GetVideo?videoId=42" />
Support 206 PARTIAL CONTENT
您的 Web API 代码中的请求。这是crucial对于流媒体和 iOS 支持,并在您发布的线程中提到。
只需按照这个例子:
https://devblogs.microsoft.com/aspnet/asp-net-web-api-and-http-byte-range-support/ https://devblogs.microsoft.com/aspnet/asp-net-web-api-and-http-byte-range-support/
简而言之:
if (Request.Headers.Range != null)
{
// Return part of the video
HttpResponseMessage partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent);
partialResponse.Content = new ByteRangeStreamContent(stream, Request.Headers.Range, mediaType);
return partialResponse;
}
else
{
// Return complete video
HttpResponseMessage fullResponse = Request.CreateResponse(HttpStatusCode.OK);
fullResponse.Content = new StreamContent(stream);
fullResponse.Content.Headers.ContentType = mediaType;
return fullResponse;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)