首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#上播放VLC中的RTSP

如何在C#上播放VLC中的RTSP
EN

Stack Overflow用户
提问于 2019-03-15 09:49:35
回答 2查看 10K关注 0票数 4

我刚开始在C# winforms上使用VLC。我使用vlcControl在C#项目中安装或添加了一个Vlc.DotNet.Forms.dll。下面是关于如何在我的项目上安装vlcControl的指南:

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

我也测试了我的RTSP视频在我安装的VLC播放器和它是工作的,我有RTSP链接。

我想知道如何在我添加的vlcControl上播放RTSP?我的RTSP也有身份验证。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-19 09:08:39

  1. 开放VLC媒体播放器
  2. 打开调试日志
  3. 播放你的溪流
  4. 输入凭据
  5. 写下显示在日志窗口中的VLC使用的URL (类似于"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. 利润。
票数 1
EN

Stack Overflow用户

发布于 2019-04-03 13:56:04

你提到的维基链接已经过时了。此链接提供更多“最新”信息: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之后的新方法是使用libvlc对话框API。对于Vlc.DotNet,您可以通过实现IVlcDialogManager来使用它。您可以在这里看到一个示例实现(对于WPF,但同样的逻辑适用于所有平台):https://github.com/ZeBobo5/Vlc.DotNet/blob/develop/src/Samples/Samples.Wpf.Dialogs/MetroDialogManager.cs

例如,您可以这样做:

代码语言:javascript
复制
    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);
        }
    }

像这样使用它:

代码语言:javascript
复制
mediaPlayer.Dialogs.UseDialogManager(new MyDialogManager(this));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55179767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档