gpt4 book ai didi

c# - 从 C# .NET 流式传输时从 HTML5 视频获取导航功能

转载 作者:可可西里 更新时间:2023-11-01 13:15:14 25 4
gpt4 key购买 nike

我正在尝试为使用 HTML5 标签显示的视频提供少量的内容保护。

我尝试通过使用一次性 token 从我的 C# .NET 应用程序提供视频来实现这一点。

我已成功传送视频(播放),但我无法使用播放器的导航栏。也就是我无法通过点击进度条来改变玩家的当前位置。位置指示器只是快速回到原来的位置并恢复。此外,一旦视频播放完毕,就无法在不重新加载页面的情况下再次播放。

我已禁用 token 的“一次性”部分。所以问题不在于一次性使用。这与我提供文件的方式有关。我尝试返回 C# File 对象和 FileStream 对象作为结果,效果相同。

任何建议都会有所帮助。

//这是风景

@{ Guid aGuid;

string Guidstr;

aGuid = Guid.NewGuid();

Guidstr = aGuid.ToString();

Session[Guidstr] =@"Chrome_ImF.mp4" ;

}

///这是 Controller 代码

    public FileResult File(string id)
{
string moviename;
moviename = (Session[id] as string);
moviename = @"C:\dev\asp\hercules\hercules\Content\samples\" + moviename;
//Session.Remove(id);

return File(moviename, "video/mp4");
}



public FileStreamResult Stream(string id)
{
string moviename;
moviename = Session[ id ] as string;
// Session.Remove(id);

FileStream fs = new FileStream(moviename, FileMode.Open, FileAccess.Read);
fs.Seek(0, SeekOrigin.Begin);
return File(fs,"video/mp4");


}

最佳答案

我最终使用 Codeplex (http://mvcresumingactions.codeplex.com/) 的 MVCResumingActions 库解决了这个问题。

视频播放器似乎希望能够对视频发出特定范围的请求(以便在资源完全加载之前提前搜索)。如果您的响应没有正确表明您支持该功能,那么所有导航基本上都已完成。

所以我开始了这条路,并找到了一些关于该主题的好资源。

http://dotnetslackers.com/articles/aspnet/Range-Specific-Requests-in-ASP-NET.aspxhttp://www.devx.com/dotnet/Article/22533/1954?pf=true

但是 MVCResumingActions 项目提供了最快最简单的路径。

项目本身没有文档,所以这是我做的

1) 如果您的 IDE 中没有安装 NuGet,请安装它。

2) 从包管理控制台安装包

PM> 安装包 MVC.ResumingActionResults

3) 在您的 Controller 中,添加此 using 子句

using VikingErik.Mvc.ResumingActionResults;

4) 然后定义你的 Action 方法。

将其声明为 ResumingActionResults 提供的类型之一。我不知道如何使用提供的所有类型,但就我而言,我想流式传输视频,所以我选择了“ResumingFileStreamResult”

这是我的测试操作,位于我自己的“StreamController.cs”文件中。我将它命名为“Viking”以纪念 Erik

public ResumingFileStreamResult Viking (string file)

{

moviename = Server.MapPath("~/Content/samples/" + file);

FileStream fs = new FileStream(moviename, FileMode.Open, FileAccess.Read);

ResumingFileStreamResult fsr = new ResumingFileStreamResult(fs,"video/mp4");

return fsr;

}

以下是我放入 View 文件的内容:

<script src="http://api.html5media.info/1.1.5/html5media.min.js"></script>
<video controls preload>
<source src="/Stream/Viking?file=Chrome_ImF.mp4" />
</video>

瞧,它就像一个魅力。

关于c# - 从 C# .NET 流式传输时从 HTML5 视频获取导航功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11285688/

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