停止VlcMediaPlayer需要很长时间

时间:2019-10-04 08:33:17

标签: libvlc vlc.dotnet

我有一个简单的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)时,会出现问题。录制视频文件立即开始。但是,_videoRecorder.Stop()大约需要30秒– 1分钟。第二次按下按钮(停止录制视频)后,资源监视器显示网络使用率很高(一台计算机为90%,另一台计算机为100%)。录制的视频文件越长,停止VlcMediaPlayer所需的时间就越多。

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

0 个答案:

没有答案