Expression Encoder 4 SDK выдает ошибку DCOM во время прямой трансляции

Я пытаюсь транслировать аудио и видео в прямом эфире с моего компьютера на точку публикации размещенного сервиса. Я написал весь код, который, я думаю, должен иметь (на данный момент это всего лишь тестовый код в небольшом консольном приложении). Сам код не выдает ошибку, он работает просто отлично, видео извлекается из моей веб-камеры, однако при попытке отправить поток на точку публикации я получаю сообщение об ошибке DCOM в журналах системных событий "DCOM не смог связаться с компьютером streamwebtown.com, используя любой из настроенных протоколов." Я попытался сделать то же самое, используя настоящее клиентское приложение Expression Encoder 4, которое поставляется с SDK, и видео / аудио канал прекрасно работает на одной и той же точке публикации. Я искал в интернете повсюду, чтобы увидеть, сталкивался ли кто-то еще с этой проблемой, но оказался пустым. Спрашивать сообщество, есть ли у них какие-либо идеи?

Код из приложения:


static void Main(string[] args)
{
    EncoderDevice video = EncoderDevices.FindDevices(EncoderDeviceType.Video).Count > 0 ? EncoderDevices.FindDevices(EncoderDeviceType.Video)[0] : null;
    EncoderDevice audio = EncoderDevices.FindDevices(EncoderDeviceType.Audio).Count > 0 ? EncoderDevices.FindDevices(EncoderDeviceType.Audio)[0] : null;
    LiveJob job = new LiveJob();
    if (video != null && audio != null)
    {
        LiveDeviceSource source = job.AddDeviceSource(video, audio);
        job.ActivateSource(source);
        PushBroadcastPublishFormat publishingPoint = new PushBroadcastPublishFormat();
        publishingPoint.PublishingPoint = new Uri("http://streamwebtown.com/abc");
        publishingPoint.UserName = "user";
        publishingPoint.Password = PullPW("Stream");
        job.ApplyPreset(LivePresets.VC1Broadband16x9);
        job.PublishFormats.Add(publishingPoint);
        job.StartEncoding();

        Console.ReadKey();
        job.StopEncoding();
    }
}

private static SecureString PullPW(string pw)
{
    SecureString s = new SecureString();
    foreach (char c in pw) s.AppendChar(c);
    return s;
}

1 ответ

Решение

Я нашел ответ, он вообще не был аутентифицирован на сервере. Поэтому я изменил свой код на следующий, и он неожиданно сработал.


 static void Main(string[] args)
        {
EncoderDevice video = EncoderDevices.FindDevices(EncoderDeviceType.Video).Count > 0 ? EncoderDevices.FindDevices(EncoderDeviceType.Video)[0] : null; EncoderDevice audio = EncoderDevices.FindDevices(EncoderDeviceType.Audio).Count > 0 ? EncoderDevices.FindDevices(EncoderDeviceType.Audio)[0] : null; LiveJob job = new LiveJob(); job.AcquireCredentials += new EventHandler(job_AcquireCredentials); if (video != null && audio != null) { LiveDeviceSource source = job.AddDeviceSource(video, audio); job.ActivateSource(source); PushBroadcastPublishFormat publishingPoint = new PushBroadcastPublishFormat(); publishingPoint.PublishingPoint = new Uri("http://streamwebtown.com/abc");

            WindowsMediaOutputFormat wmof = new WindowsMediaOutputFormat();
            VideoProfile vProfile = new AdvancedVC1VideoProfile();
            AudioProfile aProfile = new WmaAudioProfile();
            wmof.VideoProfile = vProfile;
            wmof.AudioProfile = aProfile;

            job.ApplyPreset(LivePresets.VC1Broadband16x9);
            job.PublishFormats.Add(publishingPoint);
            job.OutputFormat = wmof;
            job.PreConnectPublishingPoint();
            job.StartEncoding();
            //After finished encoding dispose of all objects.
            Console.ReadKey();
            job.StopEncoding();
            job.Dispose();
            video.Dispose();
            audio.Dispose();
            source.Dispose();
        }
    }

    static void job_AcquireCredentials(object sender, AcquireCredentialsEventArgs e)
    {
        e.UserName = "user";
        e.Password = PullPW("Stream");
        e.Modes = AcquireCredentialModes.None;
    }

    private static SecureString PullPW(string pw)
    {
        SecureString s = new SecureString();
        foreach (char c in pw) s.AppendChar(c);
        return s;
    }

Другие вопросы по тегам