当前位置:编程学习 > C#/ASP.NET >>

如何利用Asp.net FMS开发视频网站

开发步骤:

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"); //"FLVx1x1x9x9"
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开发视频网站的思路。如果有兴趣可以联系我。

www.zzzyk.com 电脑知识网 打造全国最大的电脑知识学习基地

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,