2009-06-23 7 views
2

Je suis actuellement en train d'expérimenter le SDK Expression Encoder, mais je trouve qu'il est très déroutant d'utiliser quand il s'agit de streaming en direct. J'essaie de capturer un flux vidéo à partir d'une webcam, de l'encoder avec mon programme puis de le publier en tant que flux en direct depuis mon ordinateur tout en injectant des commandes de script. J'ai regardé à travers le SDK mais je ne trouve rien concernant les flux en direct ou les webcams. Quelques exemples de code mentionnent comment utiliser la classe Job pour coder, mais tout ce que j'ai trouvé concerne l'encodage local des fichiers.Aide avec Expression Encoder SDK

Répondre

2

Havent l'a déjà essayé mais il existe une classe appelée Microsoft.Expression.Encoder.Live.LiveJob qui est censée prendre en charge le streaming. J'ai essayé l'échantillon et il a diffusé un fichier depuis mon disque dur. Je suppose que cela devrait également prendre en charge l'encodage des flux vidéo. Voici l'exemple de code (pour Encoder 3.0)

using (LiveJob job = new LiveJob()) 
      { 
       // Create a new file source from the file name we were passed in 
       LiveFileSource fileSource = job.AddFileSource(fileToEncode); 

       // Set this source to Loop when finished 
       fileSource.PlaybackMode = FileSourcePlaybackMode.Loop; 

       // Make this source the active one 
       job.ActivateSource(fileSource); 

       // Create a new windows media broadcast output format so we 
       // can broadcast this encoding on the current machine. 
       // We are going to use the default audio and video profiles 
       // that are created on this output format. 
       WindowsMediaBroadcastOutputFormat outputFormat = new WindowsMediaBroadcastOutputFormat(); 

       // Let's broadcast on the local machine on port 8080 
       outputFormat.BroadcastPort = 8080; 

       // Set the output format on the job 
       job.OutputFormat = outputFormat; 

       // Start encoding 
       Console.Out.Write("Press 'x' to stop encoding..."); 
       job.StartEncoding(); 

       // Let's listen for a keypress to know when to stop encoding 
       while (Console.ReadKey(true).Key != ConsoleKey.X) 
       { 
        // We are waiting for the 'x' key 
       } 

       // Stop our encoding 
       Console.Out.WriteLine("Encoding stopped."); 
       job.StopEncoding(); 
      } 
+0

J'ai regardé plus loin dans la classe LiveJob et il existe plusieurs options pour ajouter des périphériques vidéo et audio en direct. Donc, c'est certainement la classe que vous recherchez Pour plus de référence, regardez ce post: http: //social.expression.microsoft.com/Forums/en-US/encoder/thread/c575c5be-99dc-4473-bdc8 -25e59f1a91b3 – shake

+0

Oui, il y a une classe pour le streaming dans 3.0, mais quand j'ai posté ce 3.0 n'existait pas. Vous êtes un peu en retard, cependant, j'ai utilisé WME à la place. Ce n'est pas géré, mais ça a fait l'affaire. – Bevin

+0

Quoi qu'il en soit, c'est la bonne réponse, alors je vais le marquer comme tel. – Bevin