我正在尝试从 Logitech C920 网络摄像头录制 1080 @ 30FPS 视频。很简单,对吧?好吧,显然不是。
首先,我在运行 16.04 的桌面上尝试使用 Ubuntu 的内置 Cheese 应用程序。预览流在 30FPS 时非常好,但是一旦我开始录制,帧速率就会急剧下降到大约 15FPS 左右(我不知道确切,因为 Cheese 不提供 FPS 计)。
接下来,我在运行 16.04 的桌面上再次尝试使用guvcview
. 不幸的是,16.04 的默认存储库中的版本2.02
存在一个错误,导致它将视频录制为单个静止帧。啊……然后我2.05
从一个非官方的 PPA 安装。然而,这解决了上述错误,当我去录制视频(使用相机硬件编码器中的 H.264)时,第一秒左右的视频完美录制,但随后帧速率下降到 3 到 5 FPS 之间。
最后,为了确保这不仅仅是我的台式机的问题,我在我的笔记本电脑上安装了运行 18.04 的guvcview
版本2.05
,但再次,当我去录制视频时(使用相机硬件编码器中的 H.264)第一秒或所以视频录制完美,但随后帧速率下降到 3 到 5 FPS 之间。
那么这里到底发生了什么?这是libuvc
与罗技 C920 的兼容性问题吗?我知道这不是硬件功率不足的问题,因为我的台式机中有一个 6 核 AMD CPU,而我的笔记本电脑中有一个四核 3rd gen i7。
我想出了如何使它与
guvcview
.我发现这篇文章提到问题是
guvcview
重新编码来自相机的流。考虑到我的 CPU 使用率极低,为什么会导致可怕的帧速率下降对我来说是个谜……无论如何,解决方法是告诉
guvcview
使用来自相机的原始流:请注意,您告诉程序重新编码(或不重新编码)的格式与您告诉它从相机流式传输的格式完全不同:
另外,另一方面,我似乎不知道如何调整大量的 H.264 参数
guvcview
,或者 Logitech C920 中的硬件 H.264 编码器真的不是那么好。我用 MJPEG 录制了一个 1080p30 剪辑(产生大约 60Mb/s 的数据),并在我的 Windows 机器上使用 Veags Pro 将其转码为 10Mb/s H.264,结果比直接从网络摄像头以 H. .264,同样为 10Mb/s。