问题标签 [video-capture]

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 投票
8 回答
23173 浏览

linux - Linux 上的视频捕获?

我们需要在 Linux 上轻松捕获实时视频并显示。我们需要具有简单 API 的廉价卡或 USB 设备。有人想分享一些经验吗?

0 投票
7 回答
9190 浏览

flash - 如何获得基于硬件的屏幕截图?

过去,我的一些项目要求我创建全屏 Flash 应用程序的电影版本。最简单的方法是获取屏幕截图。但是,捕获超过 1024x768 的任何内容都会导致视频断断续续,这是不可接受的。我知道有用于捕获全屏视频的基于硬件的解决方案,但我无法找出这些是什么。我的输出需要可缩放到 1920x1080,并生成一个没有断断续续的未压缩 AVI 文件。

0 投票
6 回答
54258 浏览

java - 从实时视频设备捕获图像以供基于 Java 的应用程序使用的最佳方法是什么?

我正在研究用于对某些场景进行半实时检测的图像处理问题。我的目标是让实时视频以某种方式在我的 Java 代码中以 Motion JPEG 帧的形式出现。

我熟悉Java 媒体框架,遗憾的是,我认为我们可以认为这是一个有效的死 API。我也熟悉Axis 盒子,虽然我真的很喜欢他们的解决方案,但如果我对我的特定兴趣点提出任何批评性反馈,我将不胜感激。

出于本次讨论的目的,这就是我定义“最佳”的方式:

  • 延迟 - 如果我使用此视频流控制相机,我希望尽可能将往返延迟保持在 100 毫秒以下。这是从我的控制输入到我看到可见变化之间的时间来衡量的。稍后编辑:要记住的另一件事是相机控制可能是手动和自动(事件触发器)的组合。即使高质量的提要单独存档,我们也需要立即查看这些图片。
  • 成本免费/开源总比不免费好。
  • 可调整的编解码器参数 - 我需要能够针对某些情况调整编解码器。有时,高速低分辨率流实际上更容易处理。
  • 与 Java 的“集成”——将这个解决方案与我的代码挂钩有多麻烦?我是否通过套接字发送数据包?点击网址?安装 Direct3D / JNI 组合?
  • Windows/Linux/两者?- 我更喜欢与操作系统无关的解决方案,因为我必须提供多种操作系统,但可能有一种解决方案对其中一种而言是最佳的,而对另一种则不是。

注意:我知道其他图像/视频捕获编解码器,这不是这个问题的重点。由于帧精度的损失,我对流 API(例如 MPEG4)特别不感兴趣。但是,如果我的问题有一个解决方案可以提供另一个帧精确的数据流,请加入。

跟进这个问题:在这一点上,我强烈倾向于购买Axis 视频编码器等设备,而不是尝试在软件中或直接在 PC 上捕获视频。但是,如果有人有其他选择,我很乐意听到他们的声音。

0 投票
4 回答
10436 浏览

c++ - 在 Windows 中从 OpenGL 窗口中捕获视频

我应该为我的用户提供一种非常简单的方法来从我的 OpenGL 应用程序的主窗口中捕获视频剪辑。我正在考虑添加按钮和/或键盘快捷键来开始和停止捕获;开始时,我可以要求提供文件名和其他选项(如果有)。它必须在 Windows (XP/Vista) 中运行,但我也不想关闭我迄今为止能够保持打开的 Linux 门。

该应用程序使用 OpenGL 片段和着色器程序,这些效果是我在最终视频中绝对需要的。

在我看来,甚至可能有几种不同的方法可以满足我的要求(但我真的不知道应该从哪里开始):

  • 具有 startRecording(filename)、stopRecording 和 captureFrame 等函数的编码库。我可以在渲染每一帧(或每第二/第三/任何)之后调用 captureFrame() 。如果这样做会使我的程序运行得更慢,那这不是问题。

  • 可以从我的应用程序以编程方式控制的独立外部程序。毕竟,一个无法控制的独立程序几乎可以满足我的需求......但正如所说,用户操作应该非常简单,我也希望无缝; 我的应用程序通常全屏运行。此外,它应该可以作为我目前使用 NSIS 准备的应用程序安装包的一部分进行分发。

  • 使用 Windows API 逐帧捕获屏幕截图,然后使用(例如)此处提到的库之一。似乎很容易找到如何在 Windows 中捕获屏幕截图的示例;但是,我希望有一个解决方案,它不会真正强迫我在 WinAPI 级别上弄得超级脏。

  • 使用 OpenGL 渲染到屏幕外目标,然后使用库来生成视频。我不知道这是否可能,而且恐怕无论如何这可能不是最痛苦的道路。特别是,我不希望实际渲染根据是否捕获视频而采用不同的执行路径。此外,我会避免在正常、非捕获模式下可能降低帧速率的任何事情。

如果解决方案在任何一个意义上都是免费的,那将是很好的,但这并不是一个绝对的要求。一般来说,膨胀越少越好。另一方面,由于这个问题之外的原因,不幸的是,我无法链接任何仅 GPL 的代码。

关于文件格式,我不能指望我的用户开始搜索任何编解码器,但只要显示视频对于基本级别的 Windows 用户来说足够容易,我并不关心格式是什么。但是,如果可以控制输出的压缩质量,那就太好了。

澄清一下:我不需要从摄像机等外部设备捕获视频,我也对鼠标移动不感兴趣,即使获取它们也不会造成伤害。对音频没有要求;该应用程序不会发出任何噪音。

我使用 Visual Studio 2008 编写 C++,因为这个应用程序也利用了 GLUT 和 GLUI。我对 C++ 和库中的链接之类的东西有扎实的了解,但另一方面,OpenGL 对我来说还是很新的:到目前为止,我真的只学到了实际完成工作所需的一些知识。

我不需要非常紧急的解决方案,所以请慢慢来:)

0 投票
1 回答
1441 浏览

c# - 在 C# 中处理视频源的资源

我开始进入一个副项目,我希望从几个小型 IP 摄像机中提取帧,也许做一些运动检测并以带有警报的形式重新显示它们。

有没有人有一些好的资源或类似的项目可以用来熟悉来龙去脉?我在 VS2008 中使用带有 SP1 的 C# 3.5

0 投票
1 回答
6638 浏览

winapi - 如何拦截来自网络摄像头的视频或图像流并对其进行修改?

是否可以进行通用 API 调用来获取来自网络摄像头的图像或视频源的句柄,并将其替换为我自己的图像或视频,以便应用程序连接到摄像头(例如 MSN/Skype/Yahoo IM)会看到我的图像而不是相机正在捕捉的图像吗?

理想情况下,我试图以一种独立于设备供应商或接口的通用方式解决这个问题(通过所有这些应用程序使用的标准网络摄像头堆栈,如果存在这样的事情)。

它适用于需要能够禁用客户端上的网络摄像头而不是出于特定目的的安全应用程序。我可以通过代码停止和启动图像捕获设备,但理想情况下,我更愿意让设备保持启用状态,并用一个图形替换捕获的图像,告诉用户他们当前无法使用他们的摄像头的原因。

0 投票
4 回答
389 浏览

java - 将图像从 C 程序移动到 Java 并显示在屏幕上的最有效方法是什么?

背景

我正在使用 video4linux 2 规范捕获视频。它是使用 C 程序实时捕获的。我还有一个可以在本地和远程运行的 Java 前端。远程端很简单,我只需将图像压缩为 JPEG,然后通过 mini-http 服务器将它们发送到客户端,客户端将它们解压缩并显示在屏幕上。

当我们在本地运行时,我希望通过某种方式 IPC 直接连接到该内存并从 Java 访问图像。然后,使用尽可能少的 CPU 资源将它们粘贴到屏幕上。这是一个“监视”类型的系统,所以我可以同时运行 8-16 个摄像机源。

问题

将图像数据(YUV420P)从 v4l2 mmap 缓冲区移动到我的 Java 应用程序以在屏幕上显示的最有效方法是什么?如果有可用的,请显示代码或指向一些 api/specs。

回答

考虑到时间,我决定只使用普通的套接字并以 RGB 格式发送数据。当 Java 客户端在同一台机器上运行时,我能够显着提高性能。如果客户端远程运行,我仍然会通过网络发送 JPEG。接下来,我需要找到一个优化的 JPEG 解码器。

顺便说一句,这不是 2 个客户端,只是我的 CameraStream 小部件读取并解析这两种类型。

0 投票
1 回答
1796 浏览

c++ - 使用 IAMCameraControl::Set() 在 Windows Mobile 设备上设置缩放

我正在开发一个视频捕捉应用程序,我想实现缩放功能。

使用 DirectShow 我遇到了 IAMCameraControlInterface。它有一个方法::Set(),应该用于设置几个相机参数。

但是我玩了,我什么也做不了。然后我尝试调用 ::GetRange() 方法,该方法应该返回可能的参数值的范围,但它没有返回任何内容。

该设备真的有可能不支持任何选项吗?看起来很奇怪,因为原生相机应用程序支持缩放,但我真的不知道这种奇怪结果的主要问题在哪里。

有没有人有类似应用的经验?有谁知道这里可能出了什么问题或如何有效地使用IAMCameraControlInterface函数?

0 投票
3 回答
2763 浏览

.net - .NET 应用程序中可预测帧捕获的选项

我在 C# 中工作,需要捕获视频文件的各个帧。尽可能快(比实时更快),我希望寻找特定的帧号并将每第 n 帧捕获为图形文件格式,例如 BMP 或 JPEG。非常希望捕获的帧是可预测和可重复的,即不丢帧。

我对 DirectShow 有一些经验,但不知道这种技术是否最适合在现代 Windows .NET 环境中解决这个问题。理想情况下,我想找到一个 .NET 或基于 COM 的库来尽可能地抽象出来。我不需要在屏幕上实际显示视频文件,实际上我更希望没有用于视频播放的 Windows 用户界面。

有人对要研究的技术或特定产品有建议吗?它们需要与基于 MPEG-2 和 MPEG-4 的视频文件兼容,包括 DivX。QuickTime 支持将是一个不错的奖励。

0 投票
5 回答
51623 浏览

c# - 使用 .NET 技术录制屏幕视频

有没有办法使用 .NET 技术记录屏幕,无论是桌面还是窗口。

我的目标是免费的。我喜欢小型、低 cpu 使用率和简单的想法,但如果他们创造出更好的最终产品,我会考虑其他选择。

简而言之,我知道如何在 C# 中截取屏幕截图,但是如何将屏幕或屏幕区域录制为视频?

非常感谢您的想法和时间!