Aiuto con Expression Encoder SDK
-
06-07-2019 - |
Domanda
Attualmente sto sperimentando Expression Encoder SDK, ma trovo molto confuso l'uso quando si tratta di streaming live. Sto provando a catturare un flusso video da una webcam, codificare con il mio programma e quindi pubblicarlo come flusso dal vivo dal mio computer iniettando anche comandi di script. Ho esaminato l'SDK ma non riesco a trovare nulla di pertinente a streaming live o webcam. Alcuni esempi di codice menzionano come utilizzare la classe Job
per codificare, ma tutto quello che ho trovato riguarda la codifica dei file localmente.
Soluzione
Non l'ho ancora provato ma esiste una classe chiamata Microsoft.Expression.Encoder.Live.LiveJob che dovrebbe supportare lo streaming. Ho provato l'esempio e ha trasmesso in streaming un file dal mio disco fisso. Immagino che dovrebbe supportare anche la codifica dei flussi video. Ecco il codice di esempio (per 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();
}