You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

基于Vlc.DotNet.Wpf实现UDP视频录制

现有播放代码扩展实现录制

你可以通过两种方式在现有Vlc.DotNet基础上添加录制功能:

方法1:播放时同步录制

在创建媒体对象时添加VLC流媒体输出参数,实现播放同时将视频保存到指定文件:

DirectoryInfo vlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));
this.vlcControl1.SourceProvider.CreatePlayer(vlcLibDirectory);

// 确保录制目录存在
var recordDir = @"C:\YourRecordPath";
if (!Directory.Exists(recordDir))
{
    Directory.CreateDirectory(recordDir);
}
var recordFilePath = Path.Combine(recordDir, $"udp_video_{DateTime.Now:yyyyMMddHHmmss}.mp4");

// 构建VLC参数:同时输出到显示窗口和本地文件
var mediaOptions = new string[]
{
    $":sout=#duplicate{{dst=display,dst=std{{access=file,mux=mp4,dst='{recordFilePath.Replace("\\", "\\\\")}'}}}}"
};

// 创建带参数的媒体对象并播放
var media = new VlcMedia(vlcControl1.SourceProvider.MediaPlayer, new Uri(@"udp://@127.0.0.1:5000"), mediaOptions);
vlcControl1.SourceProvider.MediaPlayer.Play(media);

方法2:动态控制录制启停

先启动视频播放,再通过VlcMediaPlayer的API手动控制录制的开始与停止:

DirectoryInfo vlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));
this.vlcControl1.SourceProvider.CreatePlayer(vlcLibDirectory);

// 启动UDP视频播放
vlcControl1.SourceProvider.MediaPlayer.Play(new Uri(@"udp://@127.0.0.1:5000"));

// 开始录制(示例:按钮点击触发)
private void StartRecordingBtn_Click(object sender, RoutedEventArgs e)
{
    var recordDir = @"C:\YourRecordPath";
    if (!Directory.Exists(recordDir))
    {
        Directory.CreateDirectory(recordDir);
    }
    var recordFilePath = Path.Combine(recordDir, $"udp_video_{DateTime.Now:yyyyMMddHHmmss}.mp4");
    
    vlcControl1.SourceProvider.MediaPlayer.Record(recordFilePath);
}

// 停止录制(示例:按钮点击触发)
private void StopRecordingBtn_Click(object sender, RoutedEventArgs e)
{
    if (vlcControl1.SourceProvider.MediaPlayer.IsRecording)
    {
        vlcControl1.SourceProvider.MediaPlayer.StopRecording();
    }
}

替代工具/库推荐

如果VLC的录制配置存在兼容性问题,可考虑以下方案:

  • FFmpeg.AutoGen:基于FFmpeg的.NET底层绑定,支持UDP流的接收、解码播放、编码录制,灵活性强,但需自行处理WPF渲染逻辑。
  • MediaToolkit:封装FFmpeg的高层API,简化流捕获与录制操作,播放功能可结合WPF的MediaElement或第三方控件实现。
  • SharpDX.MediaFoundation:基于Windows Media Foundation框架,适配Windows平台,支持UDP流处理、播放与录制,与WPF集成友好。

内容的提问来源于stack exchange,提问作者Mr. Xek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:33:22