Libvlc 停止VlcMediaPlayer需要很长时间

Libvlc 停止VlcMediaPlayer需要很长时间,libvlc,vlc.dotnet,Libvlc,Vlc.dotnet,我有一个简单的WPF应用程序。应用程序将RTSP流记录到文件中。为此,使用Vlc.DotNet库 我用两台计算机测试了这个应用程序,结果是相同的 下面给出了应用程序代码 public partial class MainWindow : Window { private IPath _pathWrapper; private IDirectoryInfo _vlcLibDirectory; private VlcMediaPlayer _videoRecorder;

我有一个简单的WPF应用程序。应用程序将RTSP流记录到文件中。为此,使用Vlc.DotNet库

我用两台计算机测试了这个应用程序,结果是相同的

下面给出了应用程序代码

public partial class MainWindow : Window
{
    private IPath _pathWrapper;
    private IDirectoryInfo _vlcLibDirectory;
    private VlcMediaPlayer _videoRecorder;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void OnButtonClick(object sender, RoutedEventArgs e)
    {
        if (_videoRecorder != null && _videoRecorder.IsPlaying())
        {
            _videoRecorder.Stop();
            Button.Background = Brushes.Blue;
            _videoRecorder = null;
            return;
        }

        string currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
        _pathWrapper = new PathWrap();
        _vlcLibDirectory = new DirectoryInfoWrap(_pathWrapper.Combine(currentDirectory, "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));
        var options = new string[]
        {
            "--file-logging",
            "--logfile=OnvifVideoRecording.log",
            "-vvv"
        };
        _videoRecorder = new VlcMediaPlayer(_vlcLibDirectory.DirectoryInfo, options);

        //string fileDestination = "\\\\\\BuildSrv\\Videos\\A, A, 1\\test.mp4";
        string fileDestination = @"D:\Media\Video\A, A, 1\test.mp4";

        if (File.Exists(fileDestination))
        {
            File.Delete(fileDestination);
        }

        string[] mediaOptions =
        {
            ":sout=#file{dst='" + fileDestination + "'}",
            ":sout-keep"
        };

        _videoRecorder.SetMedia("rtsp://192.168.1.110:5504/channel=0,stream=0", mediaOptions);
        _videoRecorder.Play();
        Button.Background = Brushes.Red;
    }
}
应用程序有一个窗口。这个窗口有一个按钮。第一次按下此按钮时,开始录制视频文件,按钮变为红色。我通常录制10分钟的视频文件。第二次按下按钮时,停止录制视频文件,按钮变为蓝色

如果我将文件录制到本地目标(到运行程序的同一台计算机,例如D:\Media\Video\a,a,1\test.mp4),则一切正常。录制视频文件可以快速启动和停止,几乎可以立即启动和停止


当我尝试将文件录制到远程计算机(例如,\BuildSrv\Videos\a,a,1\test.mp4)时会出现问题。录制视频文件立即开始。但是,\ u videoRecorder.Stop()大约需要30秒–1分钟。第二次按下按钮(停止录制视频)后,资源监视器显示非常高的网络使用率(一台计算机为90%,另一台计算机为100%)。录制的视频文件越长,停止VlcMediaPlayer所需的时间就越多


为什么在将RTSP流记录到远程计算机的情况下,停止VlcMediaPlayer会花费这么多时间?这个问题能以某种方式解决吗?

将本地录制的视频复制到远程位置需要多长时间?大约30秒–1分钟