【问题标题】:Stream video content through Web API 2通过 Web API 2 流式传输视频内容
【发布时间】:2015-10-24 08:09:45
【问题描述】:

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

我有一堆闭路电视录像文件(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,而只能使用闪存。

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

【问题讨论】:

  • 您能否在

标签: c# asp.net-web-api ffmpeg video-streaming html5-video


【解决方案1】:

两件事:

  1. 在您的 HTML 中使用 video element(适用于浏览器和 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;
}

【讨论】:

    【解决方案2】:

    将静态视频文件放在网络服务器上并在视频播放器中引用它们。您可以使用 HTML 的标准播放器 (

    要确保视频文件在开始播放之前不必完全下载,只需预先通过qt-faststart 运行它们。

    【讨论】:

    • 你应该阅读问题标题,他没有按照你的建议将文件复制到服务器
    猜你喜欢
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多