Aide sur le SDK Expression Encoder
-
06-07-2019 - |
Question
J'expérimente actuellement avec le SDK Expression Encoder, mais je trouve très difficile à utiliser en ce qui concerne la diffusion 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 à partir de mon ordinateur tout en injectant des commandes de script. J'ai parcouru le SDK, mais je ne trouve rien concernant les flux en direct ou les webcams. Quelques exemples de code indiquent comment utiliser la classe Job
pour coder, mais tout ce que j'ai trouvé concerne le codage local des fichiers.
La solution
Havent a déjà essayé, mais il existe une classe appelée Microsoft.Expression.Encoder.Live.LiveJob qui est supposée prendre en charge la diffusion en continu. J'ai essayé l'échantillon et il a diffusé un fichier en streaming à partir de mon disque dur. Je suppose que cela devrait également prendre en charge le codage 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();
}