Étapes de développement :
1. Téléchargez FMS http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx , installez et configurez.
2. Utilisez Flash pour créer des contrôles pour la collection de vidéos FMS.
3. La page aspx intègre le contrôle de collecte FMS, exécute les données de collecte à télécharger sur le serveur FMS et modifie l'adresse de stockage des fichiers vidéo de la base de données.
4. La page intègre le contrôle de lecture Flash et ajoute le code de flux de traitement FLV :
1 à l'aide du système ;
2en utilisant System.IO ;
3en utilisant System.Web ;
4
5
6/**//// <résumé>
7/// Description récapitulative de FLVStreaming
8/// </summary>
9classe publique FLVStreaming : IHttpHandler
10{
11 octets statiques privés en lecture seule[] _flvheader = HexToByte("464C5601010000000900000009"); //"FLVx1x1 x9 x9"
12
13 FLVStreaming public()
14 {
15}
16
17 public void ProcessRequest (contexte HttpContext)
18 {
19 essayer
20 {
21 position intérieure;
22 pouces de longueur ;
vingt-trois
24 // Vérifier le paramètre de démarrage s'il est présent
25 chaînes nom de fichier = Path.GetFileName(context.Request.FilePath);
26
27 en utilisant (FileStream fs = new FileStream(context.Server.MapPath(filename), FileMode.Open, FileAccess.Read, FileShare.Read))
28 {
29 chaîne qs = context.Request.Params["start"];
30
31 si (string.IsNullOrEmpty(qs))
32 {
33 positions = 0 ;
34 longueur = Convert.ToInt32(fs.Length);
35}
36 autres
37 {
38 pos = Convert.ToInt32(qs);
39 longueur = Convert.ToInt32(fs.Length - pos) + _flvheader.Length;
40}
41
42 // Ajouter des éléments d'en-tête HTTP : cache, type de contenu et longueur
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 //Ajouter l'en-tête FLV lors de l'envoi d'un fichier partiel
50 si (pos > 0)
51 {
52 context.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length);
53 fs.Position = pos;
54 }
55
56 // Lire le tampon et écrire le flux dans le flux de réponse
57 const int taille du tampon = 16384 ;
58 octets[] tampon = nouvel octet[taille du tampon] ;
59
60 nombre int = fs.Read(buffer, 0, buffersize);
61 pendant (compte > 0)
62 {
63 si (context.Response.IsClientConnected)
64 {
65 context.Response.OutputStream.Write(buffer, 0, count);
66 nombre = fs.Read(buffer, 0, buffersize);
67 }
68 autres
69 {
70 points = -1 ;
71 }
72 }
73}
74}
75 prises (Exception ex)
76 {
77 System.Diagnostics.Debug.WriteLine(ex.ToString());
78 }
79 }
80
81 public boolIsReusable
82 {
83 obtenir { retourner vrai }
84}
85
86 octets statiques privés[] HexToByte(string hexString)
87 {
88 octets[] returnBytes = nouvel octet[hexString.Length / 2];
89 pour (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 Modifiez le fichier de configuration et exécutez la page pour appeler la vidéo. La vitesse de lecture est très bonne. Bien que ce soit un euphémisme, l'idée d'utiliser Asp.net pour développer un site Web de vidéos a été donnée. Si vous êtes intéressé, contactez-moi.
http://www.cnblogs.com/xiucai/archive/2007/06/13/782001.html