c# - 如何使用 UWP LibVlc 停止录制视频,而不是关闭应用程序?
问题描述
我使用 UWP 项目(目标 1903,最小 1809)。安装的 nugets:VideoLAN.LibVLC.UWP (3.3.0) LibVLCSharp (3.4.8)
目标:当我使用 mediaPlayer.Stop() 或 mediaPlayer.Dispose() 时,我尝试使用 RTSP 录制视频 N 分钟持续时间,然后收到错误“在...中发生未处理的 win32 异常”构造 try..catch 没有抓住。
如果我像下面这样使用,我没有例外,但不是所有文件都记录下来。我的意思是,例如:
创建了 10 个文件。但是当我关闭应用程序时,只记录了 8 个文件。如果应用程序已打开,则不可见正在记录哪些文件。
mediaPlayer = null;
mediaPlayer?.Dispose();
LibVLC = null;
LibVLC?.Dispose();
完整示例:
while(true)
{
var name = $"{DateTime.Now.ToString("HH\\:mm\\:ss").Replace(":", ".")}.ts";
var storageFileVideo = await storageFolderDate.CreateFileAsync(name);
var LibVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(LibVLC);
using (var media = new Media(LibVLC, new Uri("RTSP address")))
{
media.AddOption($":sout=#file{{dst={storageFileVideo.Path}}}");
media.AddOption(":sout-keep");
mediaPlayer.Play(media);
// await Task.Delay(5000);
//mediaPlayer = null;
//mediaPlayer?.Dispose();
//LibVLC = null;
//LibVLC?.Dispose();
}
}
我也试过如下:
ThreadPool.QueueUserWorkItem(_ => { /*play and stop or dispose*/ });
我该如何解决?谢谢你。
解决方案
停止播放将停止录制。
推荐阅读
- python - 使用 Pandas 在 Python 中删除的第一行
- arrays - 是否有可能将普通 vlookup 公式更改为数组公式
- java - 有没有办法在 Rabbitmq 中处理发送的数千条消息而不会丢失任何消息
- django - Django Celery Beat 和任务结果
- laravel - ajax 成功后 owl-carousel css 和 js 文件不能应用于我的代码
- git - 有没有办法制作不尝试合并的大型 git 对象二进制文件?
- r - 在R中添加向量的前k个分量
- r - As.Date 应用于列时返回错误
- android - 如何将字符串数组转换为房间实体对象,即 kolin 中的 DAO?
- postgresql - psql:错误:无法连接到服务器:致命:连接到 dockerized postgres 映像时用户的密码验证失败