程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.net FMS開發視頻網站

Asp.net FMS開發視頻網站

編輯:關於ASP.NET

開發步驟:

1。下載FMS http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx,安裝配置。

2。使用flash制作FMS視頻采集的控件。

3。aspx頁面嵌入FMS采集控件,運行采集數據上傳到FMS服務器,修改數據庫的視頻文件存放地址。

4。頁面嵌入Flash播放控件,加入FLV處理流代碼:

1using System;
2using System.IO;
3using System.Web;
4
5
6/**//// <summary>
7/// Summary description for FLVStreaming
8/// </summary>
9public class FLVStreaming : IHttpHandler
10{
11  private static readonly byte[] _flvheader = HexToByte("464C5601010000000900000009"); //"FLV\x1\x1\0\0\0\x9\0\0\0\x9"
12
13  public FLVStreaming()
14  {
15  }
16
17  public void ProcessRequest(HttpContext context)
18  {
19    try
20    {
21      int pos;
22      int length;
23
24      // Check start parameter if present
25      string filename = Path.GetFileName(context.Request.FilePath);
26
27      using (FileStream fs = new FileStream(context.Server.MapPath(filename), FileMode.Open, FileAccess.Read, FileShare.Read))
28      {
29        string qs = context.Request.Params["start"];
30
31        if (string.IsNullOrEmpty(qs))
32        {
33          pos = 0;
34          length = Convert.ToInt32(fs.Length);
35        }
36        else
37        {
38          pos = Convert.ToInt32(qs);
39          length = Convert.ToInt32(fs.Length - pos) + _flvheader.Length;
40        }
41
42        // Add HTTP header stuff: cache, content type and length
43        context.Response.Cache.SetCacheability(HttpCacheability.Public);
44        context.Response.Cache.SetLastModified(DateTime.Now);
45
46        context.Response.AppendHeader("Content-Type", "video/x-flv");
47        context.Response.AppendHeader("Content-Length", length.ToString());
48
49        // Append FLV header when sending partial file
50        if (pos > 0)
51        {
52          context.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length);
53          fs.Position = pos;
54        }
55
56        // Read buffer and write stream to the response stream
57        const int buffersize = 16384;
58        byte[] buffer = new byte[buffersize];
59        
60        int count = fs.Read(buffer, 0, buffersize);
61        while (count > 0)
62        {
63          if (context.Response.IsClientConnected)
64          {
65            context.Response.OutputStream.Write(buffer, 0, count);
66            count = fs.Read(buffer, 0, buffersize);
67          }
68          else
69          {
70            count = -1;
71          }
72        }
73      }
74    }
75    catch (Exception ex)
76    {
77      System.Diagnostics.Debug.WriteLine(ex.ToString());
78    }
79  }
80
81  public bool IsReusable
82  {
83    get { return true; }
84  }
85
86  private static byte[] HexToByte(string hexString)
87  {
88    byte[] returnBytes = new byte[hexString.Length / 2];
89    for (int i = 0; i < returnBytes.Length; i++)
90      returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
91    return returnBytes;
92  }
93
94}
95

修改配置文件,運行頁面即可調出視頻,播放速度很不錯。雖說輕描淡寫但已經給出應用Asp.net開發視頻網站的思路。如果有興趣可以聯系我。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved