ขั้นตอนการพัฒนา:
1. ดาวน์โหลด FMS http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx ติดตั้งและกำหนดค่า
2. ใช้แฟลชเพื่อสร้างการควบคุมสำหรับคอลเลกชันวิดีโอ FMS
3. หน้า aspx จะฝังตัวควบคุมคอลเลกชัน FMS เรียกใช้ข้อมูลคอลเลกชันเพื่ออัปโหลดไปยังเซิร์ฟเวอร์ FMS และแก้ไขที่อยู่การจัดเก็บไฟล์วิดีโอของฐานข้อมูล
4. หน้านี้ฝังการควบคุมการเล่น Flash และเพิ่มโค้ดสตรีมการประมวลผล FLV:
1using System;
2ใช้ระบบ.IO;
3ใช้ระบบ.เว็บ;
4
5
6/***//// <สรุป>
7/// คำอธิบายโดยย่อสำหรับ FLVStreaming
8/// </สรุป>
9FLVStreaming ระดับสาธารณะ: IHttpHandler
10{
11 ไบต์แบบอ่านอย่างเดียวแบบคงที่ส่วนตัว [] _flvheader = HexToByte("464C5601010000000900000009"); // "FLVx1x1 x9 x9"
12
13 FLVStreaming สาธารณะ ()
14 {
15}
16
17 ProcessRequest โมฆะสาธารณะ (บริบท HttpContext)
18 {
19 พยายาม
20 {
21 ตำแหน่งภายใน;
ความยาว 22 นิ้ว;
ยี่สิบสาม
24 // ตรวจสอบพารามิเตอร์เริ่มต้นถ้ามี
ชื่อไฟล์สตริง 25 = Path.GetFileName(context.Request.FilePath);
26
27 โดยใช้ (FileStream fs = new FileStream(context.Server.MapPath(ชื่อไฟล์), FileMode.Open, FileAccess.Read, FileShare.Read))
28 {
29 สตริง qs = context.Request.Params["start"];
30
31 ถ้า (string.IsNullOrEmpty(qs))
32 {
33 ตำแหน่ง = 0;
34 ความยาว = Convert.ToInt32(fs.Length);
35}
36 อื่น ๆ
37 {
38 ตำแหน่ง = Convert.ToInt32(qs);
39 ความยาว = Convert.ToInt32(fs.Length - pos) + _flvheader.Length;
40}
41
42 // เพิ่มเนื้อหาส่วนหัว HTTP: แคช ประเภทเนื้อหา และความยาว
43 บริบท Response.Cache.SetCacheability (HttpCacheability.Public);
44 บริบท Response.Cache.SetLastModified (DateTime.Now);
45
46 context.Response.AppendHeader("ประเภทเนื้อหา", "วิดีโอ/x-flv");
47 context.Response.AppendHeader("ความยาวเนื้อหา", length.ToString());
48
49 // ผนวกส่วนหัว FLV เมื่อส่งไฟล์บางส่วน
50 ถ้า (pos > 0)
51 {
52 บริบท.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length);
53 fs.ตำแหน่ง = pos;
54 }
55
56 // อ่านบัฟเฟอร์และเขียนสตรีมไปยังสตรีมตอบกลับ
57 const int ขนาดบัฟเฟอร์ = 16384;
บัฟเฟอร์ 58 ไบต์ [] = ไบต์ใหม่ [ขนาดบัฟเฟอร์];
59
60 int count = fs.Read(บัฟเฟอร์, 0, ขนาดบัฟเฟอร์);
61 ในขณะที่ (นับ > 0)
62 {
63 ถ้า (context.Response.IsClientConnected)
64 {
65 context.Response.OutputStream.Write (บัฟเฟอร์, 0, นับ);
66 จำนวน = fs.Read (บัฟเฟอร์, 0, ขนาดบัฟเฟอร์);
67 }
68 อื่น ๆ
69 {
70 จำนวน = -1;
71 }
72 }
73}
74}
75 catch (ยกเว้นตัวอย่าง)
76 {
77 System.Diagnostics.Debug.WriteLine (เช่น ToString ());
78 }
79 }
80
81 บูลสาธารณะสามารถนำกลับมาใช้ใหม่ได้
82 {
83 รับ { ส่งคืนจริง;
84}
85
86 ไบต์ส่วนตัวแบบคงที่ [] HexToByte (สตริง hexString)
87 {
88 ไบต์ [] returnBytes = ไบต์ใหม่ [hexString.Length / 2];
89 สำหรับ (int i = 0; i < returnBytes.Length; i++)
90 returnBytes[i] = แปลง ToByte(hexString.Substring(i * 2, 2), 16);
91 กลับ returnBytes;
92 }
93
94}
95 แก้ไขไฟล์กำหนดค่าและเรียกใช้เพจเพื่อเรียกวิดีโอ ความเร็วในการเล่นดีมาก แม้ว่าจะเป็นการกล่าวเกินจริง แต่ก็มีการให้แนวคิดในการใช้ Asp.net เพื่อพัฒนาเว็บไซต์วิดีโอ หากสนใจโปรดติดต่อฉัน
http://www.cnblogs.com/xiucai/archive/2007/06/13/782001.html