我正在尝试使用 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
与 Logitech C920 兼容性的问题吗?我知道这不是硬件功率不足的问题,因为我的台式机有一个 6 核 AMD CPU,我的笔记本电脑有一个四核第三代 i7。
答案1
我弄清楚了如何使它工作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。