从C#NET流媒体时从HTML5视频获取导航功能

从C#NET流媒体时从HTML5视频获取导航功能,c#,html,video-streaming,C#,Html,Video Streaming,我试图为使用HTML5标签显示的视频提供少量内容保护 我试图通过使用一次性令牌从我的C#.NET应用程序提供视频来实现这一点 我已经成功地交付了视频(它播放),但我无法使用播放器的导航栏。也就是说,我不能点击进度条来改变玩家的当前位置。位置指示器只是回扣到原始位置并恢复。此外,视频播放后,如果不重新加载页面,则无法再次播放 我已禁用令牌的“仅一次”部分。所以问题不在于一次性使用。这与我提供文件的方式有关。我已经尝试返回C#File对象和FileStream对象作为结果,效果相同 任何建议都会有帮

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

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

我已经成功地交付了视频(它播放),但我无法使用播放器的导航栏。也就是说,我不能点击进度条来改变玩家的当前位置。位置指示器只是回扣到原始位置并恢复。此外,视频播放后,如果不重新加载页面,则无法再次播放

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

任何建议都会有帮助

//这里是风景

@{ Guid aGuid

string Guidstr;

aGuid = Guid.NewGuid();

Guidstr = aGuid.ToString();

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

///这是控制器代码

    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中的MVCResumingActions库解决了这个问题(http://mvcresumingactions.codeplex.com/)

视频播放器似乎希望能够对视频进行特定范围的请求(以便在资源完全加载之前进行搜索)。如果您的回答没有正确地表明您支持该功能,那么所有导航基本上都是烤面包

所以我开始沿着这条路走,找到了一些关于这个话题的好资源

http://www.devx.com/dotnet/Article/22533/1954?pf=true

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

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

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

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

PM>安装程序包MVC。恢复操作结果

3) 在控制器中,添加此using子句

using VikingErik.Mvc.ResumingActionResults;
4) 然后定义您的操作方法

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

这是我的测试操作,位于我自己的“StreamController.cs”文件中。为了纪念埃里克,我把它命名为“维京人”

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;

}
以下是我在视图文件中放置的内容:

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

瞧,它就像一个符咒