gpt4 book ai didi

c# - 通过 Web API 2 流式传输视频内容

转载 作者:可可西里 更新时间:2023-11-01 03:08:22 26 4
gpt4 key购买 nike

我正在研究执行以下操作的最佳方法:

我有一堆闭路电视录像文件(MP4 文件,大小从 4MB 到 50MB 不等),我想通过门户网站提供这些文件。我的第一个想法是通过 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 文件,这背后有相当多的技术细节,所以这里是主题:

Best approach to real time http streaming to HTML5 video client

似乎要使它起作用,我需要将我的 MP4 文件编码为 WebM 之类的格式,但这会花费太多时间。 Icecast ( http://icecast.org/ ),这是一个流媒体服务器,但我还没有尝试过,再次不确定这是否是我需要做的。

现在想起来,其实我不需要直播,我只需要让客户端通过浏览器播放视频文件,也许使用HTML5视频元素?问题是,我的应用程序也需要在 IOS 上运行,所以我认为这意味着我什至不能将我的 MP4 编码为 FLV 而只能使用 flash。

我真正需要的是将我所有的视频剪辑作为网页上的缩略图,如果客户点击其中一个,它就会尽快开始播放,而无需下载整个文件。想一想 imdb.com 上的“观看预告片”功能。只需播放一个视频文件,这就是我想要的。我不需要直播,我认为 WebM 的用途是什么?同样,不确定。

最佳答案

两件事:

  1. 使用 video element在您的 HTML 中(这适用于浏览器和 iOS):

    <video src="http://yoursite.com/api/Media/GetVideo?videoId=42" /> 
  2. 在您的 Web API 代码中支持 206 PARTIAL CONTENT 请求。这对于流式传输和 iOS 支持都至关重要,并且在您发布的帖子中提到了这一点。

只要按照这个例子:

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;
}

关于c# - 通过 Web API 2 流式传输视频内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31766623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com