Как играть в RTSP из VLC на C # - PullRequest
0 голосов
/ 15 марта 2019

Я новичок в использовании VLC на C # winforms.Я установил или добавил vlcControl в свой проект C #, используя Vlc.DotNet.Forms.dll.Ниже приведено руководство по установке vlcControl в моем проекте:

https://github.com/ZeBobo5/Vlc.DotNet/wiki/Using-Vlc.DotNet-in-WinForms

Я также протестировал видео RTSP на установленном плеере VLC, и оно работает, и у меня есть ссылка RTSP.

Я хотел бы знать, как я могу играть в RTSP на моем добавленном vlcControl?Также мой RTSP имеет аутентификацию.

Ответы [ 2 ]

1 голос
/ 19 марта 2019
  1. Открыть VLC Media Player
  2. Включить ведение журнала отладки
  3. Воспроизвести свой поток
  4. Введите учетные данные
  5. Запишите URL-адрес, используемый VLC, который отображается в окне регистрации (что-то вроде "rtsp://192.168.1.62:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif&user=admin&password=xxx").
  6. Дайте этот URL медиаплееру Vlc.DotNet и вызовите Play.
  7. Profit.
0 голосов
/ 03 апреля 2019

Ссылка на вики, которую вы упомянули, устарела.Эта ссылка предоставляет более актуальную информацию: https://github.com/ZeBobo5/Vlc.DotNet/wiki/Getting-started#vlcdotnetforms

Вы также можете посмотреть на этот пример, чтобы увидеть, как он работает: https://github.com/ZeBobo5/Vlc.DotNet/tree/develop/src/Samples/Samples.WinForms.Minimal

Что касается аутентификации, вы можете использоватьучетные данные в URL-адресе, такие как rtsp://user:pass@.../, но это считается плохой практикой и приведет к предупреждению.

Новый способ, начиная с VLC 3.0, заключается в использовании диалогового API libvlc.С Vlc.DotNet вы используете это путем реализации IVlcDialogManager.Вы можете увидеть пример реализации здесь (для WPF, но та же логика применяется ко всем платформам): https://github.com/ZeBobo5/Vlc.DotNet/blob/develop/src/Samples/Samples.Wpf.Dialogs/MetroDialogManager.cs

Например, вы можете сделать что-то вроде:

    public class MyDialogManager : IVlcDialogManager
    {
        public async Task<LoginResult> DisplayLoginAsync(IntPtr userdata, IntPtr dialogId, string title, string text, string username, bool askstore,
            CancellationToken cancellationToken)
        {
            return new LoginResult
            {
                Username = "username",
                Password = "password",
                StoreCredentials = false
            };
        }

        public Task DisplayErrorAsync(IntPtr userdata, string title, string text)
        {
            // You could log errors here, or show them to the user
            return Task.CompletedTask;
        }

        public async Task DisplayProgressAsync(IntPtr userdata, IntPtr dialogId, string title, string text, bool indeterminate, float position,
            string cancelButton, CancellationToken cancellationToken)
        {
            return Task.CompletedTask;
        }

        public void UpdateProgress(IntPtr userdata, IntPtr dialogId, float position, string text)
        {
        }

        public async Task<QuestionAction?> DisplayQuestionAsync(IntPtr userdata, IntPtr dialogId, string title, string text, DialogQuestionType questionType,
            string cancelButton, string action1Button, string action2Button, CancellationToken cancellationToken)
        {
            return Task.FromResult<QuestionAction?>(null);
        }
    }

Использовать егокак это:

mediaPlayer.Dialogs.UseDialogManager(new MyDialogManager(this));
...