gpt4 book ai didi

iOS 和字节范围视频流不工作

转载 作者:行者123 更新时间:2023-11-29 00:30:09 27 4
gpt4 key购买 nike

目前有一种情况,iOS (10.2.1) 不想在 HTML 视频元素中请求具有字节范围的视频 - 它想在开始播放之前下载整个视频。对于大型视频文件和 4G 连接来说,这自然是荒谬的 - 有人遇到过这个问题吗?

使用 Web API 2 流式传输内容 -

            string mapped = HostingEnvironment.MapPath(vmApplication.Instance.VideoPath);
string filename = Path.Combine(mapped, name);
string ext = System.IO.Path.GetExtension(filename)?.ToLower().Trim('.');
string contentType = MimeMapping.GetMimeMapping(filename);
switch (ext)
{
case "webm": contentType = "video/webm"; break;
case "mp4": contentType = "video/mp4"; break;
case "ogg": contentType = "video/ogg"; break;
}
MediaTypeHeaderValue _mediaType = MediaTypeHeaderValue.Parse(contentType);


FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
if (Request.Headers.Range == null)
{
Request.Headers.Range = new RangeHeaderValue(0, null);
}
try
{

HttpResponseMessage partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent);
ByteRangeStreamContent content = new ByteRangeStreamContent(fs, Request.Headers.Range, _mediaType, VIDEOBUFFER);
partialResponse.Content = content;
return partialResponse;
}
catch (InvalidByteRangeException invalidByteRangeException)
{
return Request.CreateErrorResponse(invalidByteRangeException);
}

HTML 元素非常基础,使用 videojs

    <video id="video-1" controls preload="none" data-setup='{ "fluid": true }' poster="@Url.Content("~/Content/images/poster/video-1.jpeg")" class="video-js vjs-default-skin vjs-big-play-centered">
<source src="@Url.RouteUrl("DefaultApi",new {httproute = "", id = "File", controller = "Video", name = "video-1.webm" })" type='video/webm' />
<source src="@Url.RouteUrl("DefaultApi",new {httproute = "", id = "File", controller = "Video", name = "video-1.mp4" })" type='video/mp4' />
<source src="@Url.RouteUrl("DefaultApi",new {httproute = "", id = "File", controller = "Video", name = "video-1.ogg" })" type='video/ogg' />
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a web browser that
<a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
</p>
</video>

一点运气都没有,任何帮助将不胜感激

最佳答案

FFmpeg 有一个选项 (-movflags +faststart) 可以预渲染视频文件并在加载时播放。检查您的转换器是否有类似的选项。

你可以尝试 preload="auto"或 preload="metadata"

此外,检查 http 请求和响应 header 是否包含 Range 参数。如果请求有但响应没有,则表示 IIS 的字节范围设置错误。

希望对您有所帮助。

关于iOS 和字节范围视频流不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105907/

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