问题标签 [mediacapture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
80 浏览

ionic-framework - 我正在研究 Ionic 中的媒体捕获模块。如何在 Ionic 中设计自定义视频录像机?

我正在研究 Ionic 中的媒体捕获模块。如何在 Ionic 中设计自定义视频录像机?我正在使用 Ionic 5.2.8(最新)版本。我打算在 Ionic 中构建一个录像机,并遇到了这个问题。

0 投票
1 回答
677 浏览

uwp - 当捕获设备被另一个应用程序使用时如何捕获 UWP MediaCapture 异常?

我正在向 UWP 应用程序添加一个简单的网络摄像头预览。使预览启动并运行正常,因此我正在正确处理由引发的异常,InitializeAsync()并且StartPreviewAsync()无法正确捕获第二个异常。

我的代码基于显示相机预览,它说如果应用程序没有被授予对捕获设备的访问权限,它将UnauthorizedAccessException在调用InitializeAsync(). 对于 C++/WinRT,似乎可以捕获如下所示的hresult_error代码。E_ACCESSDENIED我已经通过在应用程序选项中关闭对网络摄像头的访问来对此进行了测试,并且 try/catch 块的工作方式与您期望的一样,弹出内容对话框并向用户解释问题。

该参考资料还说,如果另一个应用程序对捕获设备具有独占控制权,则StartPreviewAsync()应该抛出FileLoadException. 首先,我无法弄清楚该异常的 C++/WinRT 等价物是什么。其次,我似乎根本无法捕捉到任何异常。我尝试使用与我使用的相同类型的 catch 块,InitializeAsync()因为这是捕获异常中描述的内容,但是当它不起作用时,我尝试使用下面的块来捕获任何东西。文档说您可以在捕获异常时注册CaptureDeviceExclusiveControlStatusChanged事件,但是由于我无法捕获异常,因此我不确定在哪里进行该操作的合适位置,或者如果我的应用程序在另一个应用程序之后启动,该事件是否会触发已经控制了捕获设备。我从来没有看到任何文字OutputDebugString()在 catch 块中,但我在调试输出窗口中确实收到以下消息(两次):

在 DBRacing.exe 中的 0x00007FFC7114A839 (KernelBase.dll) 处引发异常:WinRT 发起错误 - 0xC00D3704:“由于缺乏硬件资源,硬件 MFT 无法开始流式传输。”。

似乎正在生成异常,由于某种原因我似乎无法捕捉到它。

在下面的代码中,与我的 ViewModel() 一起使用的方法只是提供对本地设置的访问,我存储上次使用的设备 ID 并且当我的应用程序拥有网络摄像头的独占控制权时一切正常。

所以,我的问题是:如何正确识别另一个应用程序何时对捕获设备具有独占控制权?

我有一个用于 MediaCapture 对象的私有页面类变量:

导航到页面时,相机预览开始:

StartPreviewAsync() 定义如下:

0 投票
0 回答
61 浏览

c# - UWP:MediaCapture 音频流中断/恢复状态

我正在开发 UWP 简单的录音应用程序。MediaCapture实例成功初始化,我成功尝试捕获音频流。

现在,有一项任务是支持麦克风的不同状态。

在移动平台上可能会有来电,我们通过系统通知监控此类事件: audioSessionInterruptionStartedaudioSessionInterruptionEnded(iOS示例)

如何实现类似的行为UWP?根据文档,有MediaCapture.FocusChanged 事件发送MediaCaptureFocusState具有不同状态的枚举:

  • 失败的
  • 专注
  • 丢失的
  • 搜索
  • 未初始化

谁能详细解释一下这些状态的含义,我可以用它来监控音频流中断状态吗?

0 投票
1 回答
154 浏览

c# - 如何停止需要麦克风权限的 UWP 相机

所以我MediaCapture在我的 Surface Pro 设备上的 UWP 应用程序中初始化一个元素,如下所示:

InitializeAsync应用程序要求摄像头和麦克风功能的线路上。

现在我不需要麦克风功能,因为我只拍摄照片,而且我的许多用户拒绝访问麦克风说“为什么你需要麦克风访问权限才能拍照”

我使用内置的“相机”应用程序进行了测试,并拒绝在 Windows 上使用麦克风,这非常有效。

我查看了文档,它说:

InitializeAsync 将启动同意提示以获取用户对应用程序访问麦克风或摄像头的权限

那么是否可以停止应用程序请求麦克风权限?

0 投票
1 回答
619 浏览

c# - 在 UWP C# 中从没有 MediaComposition 的 SoftwareBitmap 或 Direct3DSurface 创建视频文件

我正在尝试在使用 MediaFrameReader 时录制相机视频。对于我的应用程序,我需要 MediaFrameReader 实例来单独处理每个帧。我曾尝试另外应用 LowLagMediaRecording 来简单地将相机流保存到文件中,但似乎您不能同时使用这两种方法。这意味着我只能在可以访问 Frame_Arrived 方法中的每个帧的地方使用 MediaFrameReader。

我尝试了几种方法,并找到了两个使用 MediaComposition 类创建 MediaClip 对象的工作解决方案。您可以将每一帧保存为 JPEG 文件,然后将所有图像最终渲染为视频文件。这个过程非常缓慢,因为您经常需要访问硬盘驱动器。或者,您可以从帧的 Direct3DSurface 创建 MediaStreamSample 对象。通过这种方式,您可以将数据保存在 RAM 中(首先保存在 GPU RAM 中,如果已满,则保存在 RAM 中)而不是理论上更快的硬盘驱动器。问题是调用 MediaComposition 类的 RenderToFileAsync 方法需要所有 MediaClip 都已添加到内部列表中。这会导致在已经很短的录制时间之后超出 RAM。在收集了大约 5 分钟的数据后,

我还尝试了第三方库 OpenCvSharp 将处理后的帧保存为视频。我以前在 python 中做过,没有任何问题。但是,在 UWP 中,如果没有 StorageFile 对象,我将无法与文件系统进行交互。因此,当我尝试将渲染的视频保存到文件系统时,我从 OpenCvSharp 得到的只是 UnauthorizedAccessException。

因此,总结一下:我需要一种在数据仍在进入时将相机帧的数据渲染为视频的方法,这样我就可以在处理完每一帧后处理每一帧,就像 python OpenCV 实现一样. 我非常感谢每一个提示。以下是我的部分代码,可以更好地理解上下文:

0 投票
0 回答
89 浏览

wpf - WPF XAML 岛 - 使用 MediaCapture 和 VideoEffectDefinition

尝试使用 UWP MediaCapture 和自定义 VideoEffect 创建 WPF 应用程序。

VideoEffect 在 Windows 运行时组件中定义。

将效果添加到 MediaCapture 时,应用程序崩溃并显示“找不到指定的模块。无法激活视频效果”

在一个新的空 UWP 应用中,视频效果使用相同的代码可以正常工作。

0 投票
1 回答
850 浏览

android - 如何解决此科尔多瓦媒体捕获错误?

我正在尝试通过科尔多瓦插件媒体捕获在我的应用程序中注册视频。根据文档,这是我的代码:

我尝试编译代码,但收到以下错误:

出了什么问题?

0 投票
0 回答
319 浏览

c# - UWP MediaFrameReader - System.ArgumentException:“值不在预期范围内。”

我正在尝试创建一个 UWP 应用程序,该应用程序使用笔记本电脑的网络摄像头来处理我想使用 Microsoft Azure Face API 搜索人脸的媒体帧。

我创建了一个运行良好的 MediaCapture 和一个 MediaFrameReader,它会引发问题标题中提到的异常。

你可以在这里看到我的代码:

顺便说一下,这段代码是根据微软文档编写的,可以在这里找到: https ://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/process-media-frames-with -mediaframereader

我唯一更改的是 MediaEncodingSubtype,因为它不适用于 Argb32,所以我使用 Rgb24(我检查了我计算机中所有支持的格式)。而且我认为问题源于这个属性。当我使用子类型 Argb32 初始化 MediaFrameReader 对象时(如您在文档示例中所见),我没有得到任何异常,尽管 SoftwareBitmap 将为空。另一方面,如果我使用 Rgb24(因为 PreferredFormat 有这个子类型)我会得到异常。

我可以显示异常的一些细节:

0 投票
1 回答
95 浏览

c# - 在 UWP 应用程序中播放内置网络摄像头源后停止工作?

MediaElement我正在尝试在 UWP 应用程序中播放内置的网络摄像头提要。它适用于少数用户,但大多数用户都没有播放提要,我不知道可能是什么问题。

网络摄像头无法播放时的一些观察结果:

  • 代码执行没有任何异常
  • 显示请求用户访问相机权限的对话框
  • 指示网络摄像头正在使用的 LED 指示灯在执行后立即亮起,但没有馈送。
  • Skype 和相机应用程序运行良好。
  • 该应用程序一直按预期工作,直到一周前。同时发生的一些可能产生影响的事情是
    • 安装卡巴斯基
    • 一堆windows更新
    • 卸载VS2017专业版和VS2019社区版,安装VS2019专业版

可能需要一些额外信息来缩小原因。

  • 在应用程序的包清单中启用了网络摄像头
  • 应用目标版本:18362
  • 应用最低版本:18362
  • 视窗操作系统版本:18362

对此的任何帮助将不胜感激。提前非常感谢!

这是用于播放 VideoStreamer 是MediaElement.

0 投票
1 回答
191 浏览

c# - 如何使用 mediaCapture.InitializeAsync() 选择要初始化的视频设备?

我正在尝试在 Visual Studio 2019 中使用 C# 制作一个简单的图像捕获应用程序。

我想使用外部 USB 网络摄像头来捕获图像,但是当我尝试初始化设备时,我意识到我必须将 USB 网络摄像头与笔记本电脑上的内置网络摄像头区分开来。

在其他一些帖子中,他们使用面板方向来区分它

但就我而言,我使用的是 USB 网络摄像头,所以我认为没有任何方向。有什么建议么?谢谢!