2012-06-12 20 views
5

मेरे पास Microsoft.expression.encoder और फ्रेमवर्क 4.0 का उपयोग करके वीडियो प्रसारित करने के लिए एक WPF एप्लिकेशन है, लेकिन प्रसारण के दौरान मुझे 15 सेकंड की देरी हुई। क्या प्रसारण के दौरान देरी को कम करने के लिए कोई सुझाव है ।15sec देरी के साथ वीडियो प्रसारित करने के लिए wpf एप्लिकेशन

नीचे कोड

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

कभी इस का हल मिल गया? –

+0

केविन क्लोकेट: नहीं, अभी तक नहीं .. –

उत्तर

2

पर दुर्भाग्य से कोई समाधान (कम से कम जनवरी 2011 तक) नहीं है। माइक्रोसॉफ्ट के मुताबिक:

"हम एन्कोडिंग के दौरान कुछ सेकंड देरी जोड़ते हैं, फिर सर्वर स्तर पर कैशिंग चल रहा है जो 5-20 सेकेंड जोड़ सकता है और आखिरकार सिल्वरलाइट कुछ अन्य विलंब के लिए भी कैश करता है।"

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

0

आप एक MediaElement के बजाय एक PreviewWindow का उपयोग कर, क्लाइंट में यह प्रदर्शित करने से पहले धारा सांकेतिक शब्दों में बदलना करने की आवश्यकता को दरकिनार करके ग्राहक में कुछ देरी को समाप्त कर सकते हैं। 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);