首页 > 解决方案 > 如何使用 UWP LibVlc 停止录制视频,而不是关闭应用程序?

问题描述

我使用 UWP 项目(目标 1903,最小 1809)。安装的 nugets:VideoLAN.LibVLC.UWP (3.3.0) LibVLCSharp (3.4.8)

目标:当我使用 mediaPlayer.Stop() 或 mediaPlayer.Dispose() 时,我尝试使用 RTSP 录制视频 N 分钟持续时间,然后收到错误“在...中发生未处理的 win32 异常”构造 try..catch 没有抓住。

如果我像下面这样使用,我没有例外,但不是所有文件都记录下来。我的意思是,例如:

创建了 10 个文件。但是当我关闭应用程序时,只记录了 8 个文件。如果应用程序已打开,则不可见正在记录哪些文件。

     mediaPlayer = null;
     mediaPlayer?.Dispose();
     LibVLC = null;
     LibVLC?.Dispose();

完整示例:

    while(true)
    {
        var name = $"{DateTime.Now.ToString("HH\\:mm\\:ss").Replace(":", ".")}.ts";
        var storageFileVideo = await storageFolderDate.CreateFileAsync(name);

        var LibVLC = new LibVLC();
        var mediaPlayer = new MediaPlayer(LibVLC);

        using (var media = new Media(LibVLC, new Uri("RTSP address")))
        {
            media.AddOption($":sout=#file{{dst={storageFileVideo.Path}}}");
            media.AddOption(":sout-keep");
            mediaPlayer.Play(media);
          
          
          // await Task.Delay(5000);
            //mediaPlayer = null;
            //mediaPlayer?.Dispose();
            //LibVLC = null;
            //LibVLC?.Dispose();
        }
    }
    

我也试过如下:

ThreadPool.QueueUserWorkItem(_ => { /*play and stop or dispose*/ });

我该如何解决?谢谢你。

标签: c#uwprtsplibvlc

解决方案


停止播放将停止录制。


推荐阅读