【问题标题】:Giving JW Player a movie file from a database从数据库中给 JW Player 一个电影文件
【发布时间】:2012-11-12 00:03:26
【问题描述】:

我想做的是在 JW Player 中播放一个 .mp4 文件,该文件由数据库以字节为单位提供。

这是我的 JW Player 脚本:

<script type="text/javascript"> 
    jwplayer("contvideo").setup({ 
    flashplayer:"jwplayer/player.swf", 
    file: "downloadvideo.aspx", 
    provider: "video", 
    height: 140, 
    width: 188, 
    skin: "jwplayer/slim.zip", 
    modes: [{type:'flash',src:'jwplayer/player.swf'},{type:'html5'},{type:'download'}] }); 
</script>

脚本从网页服务 downloadvideo.aspx 接收其电影文件。

downloadvideo.aspx的代码是:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim bytes() As Byte = System.IO.File.ReadAllBytes("C:\websites\videospecialty\wdo.mp4")

    Response.Clear()
    Response.AddHeader("Content-Disposition", "attachment;filename=wdo.mp4")
    Response.ContentType = "video/mp4"
    Response.Flush()

    Response.OutputStream.Write(bytes, 0, bytes.Length)
    Response.OutputStream.Flush()

    Response.End()

End Sub

但是当我尝试这个 JW Player 错误并说找不到他们的视频时。

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net .net web-services mp4 jwplayer


    【解决方案1】:

    JW Player 似乎根据file 选项中的文件扩展名确定要播放的文件类型。因为您是通过 ASPX 页面从磁盘流式传输这些内容,所以您没有。

    以下是我如何使用 JW Player 6(使用 mp3 - 我手边没有任何 mp4):

    jwplayer("player1").setup({
        flashplayer: "/jwplayer/jwplayer.flash.swf",
        file: '/Streamer.ashx',
        height: 340,
        width: 388,
        type: 'mp3'
    });
    

    关键是使用type 来指示另一端的文件类型。我可以为此提供的唯一参考是 here:它可以追溯到 2007 年,但我似乎在文档中找不到提到 type

    灵感来自: How do I stream .flv files from SQL database,我实现了一个 HTTP 处理程序来进行流式传输:

    public class Streamer : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            string filePath = "my file path";
            byte[] buffer = File.ReadAllBytes(filePath);
    
            context.Response.Clear();
            context.Response.Cache.SetCacheability(HttpCacheability.Public);
            context.Response.Cache.SetLastModified(DateTime.Now);
            context.Response.AppendHeader("Content-Type", "audio/mpeg3");
            context.Response.AddHeader("Content-Disposition", "attachment;filename=file.mp3");
            context.Response.AppendHeader("Content-Length", buffer.Length.ToString());
    
            context.Response.BinaryWrite(buffer);
        }
    
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
    

    请注意,ASPX 页面可能也可以正常工作,尽管处理程序更适合此类任务(并且应该更有效,因为它们没有页面循环)。

    将整个文件读入内存并不理想,但足以证明这个概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 2019-12-05
      相关资源
      最近更新 更多