Этапы разработки:
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;
2использование System.IO;
3использование System.Web;
4
5
6/**//// <сводка>
7/// Краткое описание FLVStreaming
8/// </сводка>
9. Публичный класс FLVStreaming: IHttpHandler.
10{
11 приватный статический байт только для чтения[] _flvheader = HexToByte("464C5601010000000900000009" //"FLVx1x1 x9 x9");
12
13 общедоступных потоков FLV()
14 {
15}
16
17 public void ProcessRequest (контекст HttpContext)
18 {
19 попробовать
20 {
21 внутренняя позиция;
длина 22 целых;
двадцать три
24 // Проверка стартового параметра, если он присутствует
25-строчное имя файла = Path.GetFileName(context.Request.FilePath);
26
27 с использованием (FileStream fs = новый 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 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 //Добавляем заголовок FLV при отправке части файла
50, если (поз > 0)
51 {
52 context.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length);
53 фс.Позиция = поз;
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 count = fs.Read(буфер, 0, размер буфера);
67 }
еще 68
69 {
70 отсчет = -1;
71 }
72 }
73}
74}
75 уловов (исключение ex)
76 {
77 System.Diagnostics.Debug.WriteLine(ex.ToString());
78 }
79 }
80
81 общедоступный boolIsReusable
82 {
83 получить {вернуть истину}
84}
85
86 частных статических байтов[] HexToByte(строка hexString)
87 {
88 байт[] returnBytes = новый байт[hexString.Length/2];
89 для (int i = 0; i < returnBytes.Length; i++)
90 returnBytes[i] = Convert.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