2012-06-12 9 views
5

У меня есть приложение WPF для трансляции видео с использованием Microsoft.expression.encoder и framework 4.0, но во время трансляции я получил задержку в 15 секунд. Есть ли предложение уменьшить задержку во время трансляции ,приложение wpf для трансляции видео с задержкой 15 секунд

ниже Кодекс

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()); 
    } 

} 

Я использую MediaElement, чтобы показать веб-камеру как на моем сервере и клиентских систем.

на стороне клиента

try 
      { 

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

Ever нашел решение этой проблемы? –

+0

KevinCloet: Нет, еще нет .. –

ответ

2

Там нет, к сожалению никакого решения (по крайней мере, по состоянию на январь 2011 года). В соответствии с Microsoft:

«Мы добавляем несколько секунд задержки во время кодирования, затем происходит кеширование на уровне сервера, которое может добавить еще 5-20 секунд, и, наконец, Silverlight также кэширует еще несколько секунд задержки».

http://social.expression.microsoft.com/Forums/is/encoder/thread/898b2659-c0d5-4c84-8fba-225f58806f5d

0

Вы можете устранить некоторую задержку в клиенте с помощью PreviewWindow вместо MediaElement, минуя необходимость кодировать поток перед выводом его на клиенте. PreviewWindow - это элемент управления WinForms, поэтому это будет работать только в WPF.

В XAML: за

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

Код:

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