Development steps:
1. Download FMS http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx , install and configure.
2. Use flash to create controls for FMS video collection.
3. The aspx page embeds the FMS collection control, runs the collection data to upload to the FMS server, and modifies the video file storage address of the database.
4. The page embeds Flash playback control and adds FLV processing stream code:
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"); //"FLVx1x1 x9 x9"
12
13 public FLVStreaming()
14 {
15}
16
17 public void ProcessRequest(HttpContext context)
18 {
19 try
20 {
21 int pos;
22 int length;
twenty three
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 boolIsReusable
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 Modify the configuration file and run the page to call up the video. The playback speed is very good. Although it is an understatement, the idea of using Asp.net to develop a video website has been given. If interested please contact me.
http://www.cnblogs.com/xiucai/archive/2007/06/13/782001.html