Приложение wpf для трансляции видео с задержкой 15 секунд

У меня есть приложение WPF для трансляции видео с использованием Microsoft.expression.encoder и framework 4.0, но во время трансляции я получил задержку в 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)
            {
            }

person Anoop Mohan    schedule 12.06.2012    source источник
comment
Вы когда-нибудь находили решение этой проблемы?   -  person Kevin Cloet    schedule 19.09.2012


Ответы (2)


К сожалению, решения нет (по крайней мере, на январь 2011 г.). Согласно Майкрософт:

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

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

person AngryAngryHippos    schedule 06.11.2012

Вы можете устранить некоторую задержку в клиенте, используя 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);
person Dan Garant    schedule 07.06.2013