【问题标题】:VLC ActiveX Plugin freezeVLC ActiveX 插件冻结
【发布时间】:2017-11-11 21:52:00
【问题描述】:

我想了解我的问题出在哪里。在将 第三个 视频加载到 VLC 后,我的应用程序总是崩溃。我没有收到任何错误消息或任何它只是冻结。

这是我播放文件的代码:

private void launchVLC (string url, string title)
    {
        // Si le lecteur est déjà entrain de jouer on stop
        if (isPlaying)
        {
            vlcPlayer.playlist.stop();
            vlcPlayer.playlist.items.clear();
            isPlaying = false;
        }

        try
        {
            // Requête GET vers videos.php pour obtenir le lien direct vers la vidéo
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "GET";
            req.AllowAutoRedirect = true;

            // On récupère le lien
            HttpWebResponse myResp = (HttpWebResponse)req.GetResponse();
            mediaUrl = myResp.ResponseUri.ToString();

            // On récupére le titre de la vidéo
            Uri uri = new Uri(mediaUrl);
            tabPlayer.Text = System.IO.Path.GetFileName(uri.LocalPath);

            // Switch sur la tab ou ce trouve vlc
            tabBrowser.Hide();
            tabControl1.SelectedIndex = 1;
            tabPlayer.Show();

            // Lancement de la vidéo
            vlcPlayer.playlist.add(mediaUrl, title, null);
            vlcPlayer.playlist.play();

            isPlaying = true;
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
    }

注意:每次都是不同的视频,所以它不可能是损坏的文件,或者可能因为文件而发生 w/e。

我用的是VS2017,下载了最新的VLC。

【问题讨论】:

  • 我尝试从 OpenWRT 服务器重现崩溃的流媒体视频,并在第 8 个视频加载正常后停止尝试。但是,在切换之前,我没有让视频播放到最后。请您提供有关视频如何流式传输以及流式传输的格式的更多详细信息。如果可能的话,您能否提供一些示例网址来测试您的代码。为了找到问题,需要消除代码之外的许多潜在问题。
  • 我从直接链接获取视频,通常是使用 x264 编解码器编码的 mkv 文件。不幸的是,这就是我能提供的所有细节.. 没什么特别的,我只是通过直接链接播放视频,我尝试在暂停前后切换视频,但在第三个视频时它总是冻结,内存使用正常,cpu 使用相同..真的不知道发生了什么
  • 您是否在视频之间切换控件的可见性? ActiveX 很可怕,因为它无法分辨正在发生的事情。也许在事件查看器中查看是否出现任何错误?
  • 我唯一要做的就是停止播放视频,然后从播放列表中删除项目。我一直在寻找事件查看器,与 VS 或我的可执行文件无关。有任何想法吗 ?编辑:所以我删除了 isPlaying 条件,现在我使用 next() 而不是 play(),它一直在第三个视频崩溃,但第二个视频的声音仍在后台播放,我的表单仍然冻结。
  • 正如我所提到的,ActiveX 使用起来很痛苦,不妨试试github.com/ZeBobo5/Vlc.DotNet,它是 libvlc 的一个点网包装器?它有一个可用的 WinForms 控件。

标签: c# activex vlc


【解决方案1】:

我有同样的问题。 然后我检查了任务栏中的内存使用情况,它正在增加。当内存达到它的 peek 时,应用程序不会引起您的注意。 您需要运行一个线程来检查您正在运行的进程的内存。 处理完播放器后运行GC.collect()

【讨论】:

    【解决方案2】:

    我有一个类似的问题,(我只有一个 el)但我是这样解决的:

           this.axVLCPlugin21.playlist.stop();
            this.axVLCPlugin21.playlist.items.clear();
    
            this.axVLCPlugin21.playlist.add(m_MRL, "live", ms_options);
            this.axVLCPlugin21.playlist.play();
    

    【讨论】:

    • 欢迎来到 Stackoverflow。请解释您的答案、解决的原因以及问题所在。
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多