2012-06-12 24 views
5

Tengo una aplicación WPF para transmitir video usando Microsoft.expression.encoder y framework 4.0, pero recibí un retraso de 15 segundos mientras transmitía. Si hay alguna sugerencia para reducir el retraso mientras se transmite .aplicación wpf para transmitir video con retraso de 15 segundos

a continuación es el Código

using Microsoft.Expression.Encoder.Live; 
using Microsoft.Expression.Encoder; 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     EncoderDevice video = null; 
     EncoderDevice audio = null; 
     GetSelectedVideoAndAudioDevices(out video, out audio); 
     StopJob(); 

     if (video == null) 
     { 
      return; 
     } 

     StopJob(); 
     _job = new LiveJob(); 

     if (video != null && audio != null) 
     { 
      //StopJob(); 
      _deviceSource = null; 
      _deviceSource = _job.AddDeviceSource(video, audio); 
      _job.ActivateSource(_deviceSource); 

      // Finds and applys a smooth streaming preset   
      //_job.ApplyPreset(LivePresets.VC1HighSpeedBroadband4x3); 

      // Creates the publishing format for the job 
      PullBroadcastPublishFormat format = new PullBroadcastPublishFormat(); 
      format.BroadcastPort = 9090; 
      format.MaximumNumberOfConnections = 50; 

      // Adds the publishing format to the job 
      _job.PublishFormats.Add(format); 

      // Starts encoding 
      _job.StartEncoding(); 
     } 
     //webCamCtrl.StartCapture(); 
    } 
    catch (Exception ex) 
    { 
     WriteLogFile(this.GetType().Name, "button1_Click", ex.Message.ToString()); 
    } 

} 

estoy usando MediaElement para mostrar la cámara web, tanto en mis sistemas de servidor y cliente.

el lado del cliente

try 
      { 

       theMainWindow.getServerIPAddress(); 
       IP = theMainWindow.machineIP; 
       MediaElement1.Source = new Uri("http://" + IP + ":9090/"); 
      } 
      catch (Exception ex) 
      { 
      } 
+0

que se ha encontrado la solución a esto? –

+0

KevinCloet: No, todavía no ... –

Respuesta

0

puede eliminar algo de retraso en el cliente mediante el uso de un PreviewWindow en lugar de un MediaElement, pasando por alto la necesidad de codificar el flujo antes de mostrarla en el cliente. PreviewWindow es un control WinForms, por lo que esto solo funcionará en WPF.

En XAML:

<WindowsFormsHost> 
    <wf:Panel x:Name="PreviewPanel" /> 
</WindowsFormsHost> 

Código atrás:

var previewWindow = new PreviewWindow(new HandleRef(this.PreviewPanel, this.PreviewPanel.Handle)); 
_deviceSource.PreviewWindow = previewWindow; 
// .. 
_job.ActivateSource(_deviceSource); 
Cuestiones relacionadas