我有一个我一直在研究的想法,但在继续之前,我很想了解一些技术细节。
据我了解,Linux 通过 /dev/ 与底层硬件进行通信。我正在搞乱我的视频摄像头输入以进行缩放,我发现有人解释说我需要创建一个虚拟设备并将其安装到另一个名为 v4loop 的程序的输出。我的问题是
1- Zoom 如何检测可用于输入的网络摄像头。我的 /dev 目录有 2 个名为 video 的“文件”(/dev/video0 和 /dev/video1),但 zoom 只检测到一个网络摄像头。网络摄像头通信是否通过此视频文件完成?如果是,为什么简单地创建一个不会影响缩放输入选择。如果没有,缩放如何检测输入并读取网络摄像头提要?
2-我可以创建一个虚拟设备并为其编写一个内核模块,以提供来自本地文件的输入。我写了很多内核模块,我知道它们有读、写、释放方法。每当发出来自缩放的读取请求时,我都想解析视频。视频应该如何编码?它是 mp4 还是原始格式或其他格式?我应该以多快的速度发送输入(以千字节为单位)。我认为这是我的网络摄像头录制规格的功能。如果它是 1920x1080,每个像素是 3 字节 (RGB),并且以 20 fps 的速度录制,我可以简单地计算出每秒生成多少字节,但 Zoom 是如何期望输入输入的。假设它正在实时发送流,那么它应该每隔几毫秒读取一次输入。我如何访问这些信息?
先感谢您。这是一个学习实验,我只是想做一些我有动力去做的有趣的事情,同时学习更多关于 Linux 硬件通信的知识。我还是个初学者,所以请放轻松。