개발 단계:
1. FMS http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx 를 다운로드하고 설치 및 구성하십시오.
2. 플래시를 사용하여 FMS 비디오 컬렉션에 대한 컨트롤을 만듭니다.
3. aspx 페이지에는 FMS 컬렉션 컨트롤이 포함되어 있고 컬렉션 데이터를 실행하여 FMS 서버에 업로드하며 데이터베이스의 비디오 파일 저장 주소를 수정합니다.
4. 이 페이지에는 Flash 재생 컨트롤이 포함되어 있고 FLV 처리 스트림 코드가 추가되어 있습니다.
1using System;
2System.IO 사용;
3System.Web 사용;
4
5
6/**//// <요약>
7/// FLVStreaming에 대한 요약 설명
8/// </summary>
9공개 클래스 FLVStreaming: IHttpHandler
10{
11 개인 정적 읽기 전용 바이트[] _flvheader = HexToByte("464C5601010000000900000009") //"FLVx1x1 x9 x9"
12
13 공개 FLV스트리밍()
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(filename), FileMode.Open, FileAccess.Read, FileShare.Read))
28 {
29 문자열 qs = context.Request.Params["start"];
30
31 if (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 헤더 추가
(pos > 0)인 경우 50
51 {
52 context.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length);
53 fs.위치 = 위치;
54 }
55
56 // 버퍼를 읽고 스트림을 응답 스트림에 씁니다.
57 const int 버퍼 크기 = 16384;
58 바이트[] 버퍼 = 새 바이트[버퍼 크기];
59
60 int count = fs.Read(buffer, 0, buffersize);
61 동안(개수 > 0)
62 {
63 if (context.Response.IsClientConnected)
64 {
65 context.Response.OutputStream.Write(버퍼, 0, 개수);
66 count = fs.Read(buffer, 0, buffersize);
67 }
그 외 68개
69 {
70개 = -1;
71 }
72 }
73}
74}
75 캐치 (예외예외)
76 {
77 System.Diagnostics.Debug.WriteLine(ex.ToString());
78 }
79 }
80
81 공개 bool은 재사용 가능
82 {
83 get { true를 반환함 }
84}
85
86 개인 정적 바이트[] HexToByte(문자열 hexString)
87 {
88바이트[] returnBytes = 새 바이트[hexString.Length / 2];
89 for (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