如何在 WPF C# 中播放和录制 UDP URL 视频?

问题描述 投票:0回答:1

我必须在我的 WPF 应用程序中播放和录制 UDP Url 视频,为此我目前正在使用 vlc.dotnet.wpf

在 Xaml 端我有 Assembly

xmlns:wpf="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"

控制播放视频

<wpf:VlcControl BorderBrush="White" BorderThickness="1" x:Name="vlcControl1" Grid.Column="0" Background="#FF023602" />

背后的代码:

DirectoryInfo vlcLibDirectory = new DirectoryInfo(System.IO.Path.Combine(currentDirectory, "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));
            this.vlcControl1.SourceProvider.CreatePlayer(this.vlcLibDirectory);
            vlcControl1.SourceProvider.MediaPlayer.Play(new Uri(@"udp://@127.0.0.1:5000"));

由此我成功播放了 UDP 视频,现在我想将此视频录制到我 PC 中的特定目录,请指导我必须在我的代码中进一步添加什么以实现此目的,请向我推荐任何其他工具/库等,如果使用 vlc 插件并不容易。谢谢你很多

c# wpf udp libvlcsharp vlc.dotnet
1个回答
0
投票

录制VLC控件正在播放的UDP视频,可以使用Vlc.DotNet.Core包提供的LibVLC库。以下是如何修改代码以录制视频的示例:

首先,将 Vlc.DotNet.Core 包添加到您的项目中。您可以通过 Visual Studio 中的 NuGet 包管理器执行此操作。

接下来,在您的代码中初始化一个新的 LibVLC 实例:

var options = new string[]
{
    // Set options for recording the video
    ":sout=#transcode{vcodec=h264,acodec=none}:std{access=file,mux=mp4,dst=C:\\recorded-video.mp4}",
    ":sout-keep"
};
var libVlc = new LibVLC(options);

在选项字符串数组中,我们正在设置 sout 选项以将视频转码为 H.264 并禁用音频(acodec=none),并将其保存到指定目的地的文件(dst=C: 录制视频.mp4)。我们还设置了 sout-keep 以保持转码和记录处于活动状态。

现在,我们将使用刚刚创建的 LibVLC 实例创建一个新的 MediaPlayer 实例,而不是直接使用 VlcControl 播放视频:

var mediaPlayer = new MediaPlayer(libVlc);
mediaPlayer.SetMedia(new Media(libVlc, new Uri("udp://@127.0.0.1:5000")));
mediaPlayer.Play();

这将使用 LibVLC 实例通过 MediaPlayer 实例播放 UDP 视频。

要停止录制视频,只需调用 mediaPlayer.Stop() 即可。

请注意,您需要对保存录制视频的目录具有写入权限。

如果你更喜欢使用不同的库,你也可以查看 FFmpeg 库,它提供了类似的录制视频的功能。

© www.soinside.com 2019 - 2024. All rights reserved.