2

私がやろうとしているのは、データベースによってバイト単位で指定された 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>

スクリプトは、Web ページ サービス 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 エラーを試してみると、ビデオが見つからなかったと表示されます。

これに関するヘルプは非常に高く評価されます。

4

1 に答える 1

5

JW Player はfileオプションのファイル拡張子から、再生するファイルの種類を割り出しているようです。これらは ASPX ページを介してディスクからストリーミングしているため、1 つもありません。

以下は、これを JW Player 6 で動作させる方法です (mp3 を使用 - 手元に mp4 がありませんでした)。

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

鍵はtype、相手側にあるファイルの種類を示すために を使用することでした。これについて私が提供できる唯一の参考文献はここにあります:それは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 ページもおそらく問題なく動作することに注意してください。ただし、ハンドラーはこの種のタスクにより適しています (ページ サイクルがないため、より効率的であるはずです)。

ファイル全体をメモリに読み込むのは理想的ではありませんが、概念を証明するには十分です。

于 2012-11-12T04:11:56.673 に答える