我有一个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)
            {
            }

最佳答案

您可以适当地使用IIS平滑流以较低比特率的素材开始播放,并在客户端缓冲区填满时逐渐增加它。 Silverlight内置了对“平滑流”的支持,并且可以在WPF中手动实现(至少在理论上是这样)。

有什么特别的事情阻止您在客户端上使用SL?

10-05 18:10
查看更多