0

我有一个简单的 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 需要这么多时间?这个问题能以某种方式解决吗?

4

0 回答 0