【问题标题】:avconv / ffmpeg webcam capture while using minimum CPU processingavconv / ffmpeg 网络摄像头捕获,同时使用最少的 CPU 处理
【发布时间】:2015-09-10 04:17:38
【问题描述】:

我对 avconv(或 ffmpeg)的使用有疑问。

我的目标是从网络摄像头捕获视频并将其保存到文件中。 另外,我不想使用过多的 CPU 处理。 (我不希望 avconv 缩放或重新编码流)

所以,我正在考虑使用来自网络摄像头的压缩 mjpeg 视频流并将其直接保存到文件中。

我的网络摄像头是 Microsoft LifeCam HD 3000,它的功能是:

ffmpeg -f v4l2 -list_formats all -i /dev/video0

Raw: yuyv422 : YUV 4:2:2 (YUYV) : 640x480 1280x720 960x544 800x448 640x360 424x240 352x288 320x240 800x600 176x144 160x120 1280x800

Compressed: mjpeg : MJPEG : 640x480 1280x720 960x544 800x448 640x360 800x600 416x240 352x288 176x144 320x240 160x120

什么是 avconv 命令可以直接保存压缩流而无需 avconv 进行缩放或重新编码。

目前,我正在使用这个命令:

avconv -f video4linux2 -r 30 -s 320x240 -i /dev/video0 test.avi

我不确定这个命令的 CPU 效率,因为我没有告诉任何地方使用网络摄像头的 mjpeg 压缩功能。

avconv 是否在开始录制文件之前负责网络摄像头设置的配置?它总是在原始流上工作并对原始流进行缩放和编码吗?

感谢您的回答

【问题讨论】:

标签: ffmpeg video-capture libav avconv webcam-capture


【解决方案1】:

阅读actual documentation™ 是您在现实生活中获得的最接近魔法的东西:

video4linux2, v4l2

输入格式

设置首选像素格式(用于原始视频)或编解码器名称。当有多种输入格式可用时,此选项允许一个人选择输入格式。

video_size

设置视频帧大小。参数必须是 WIDTHxHEIGHT 形式的字符串或有效的大小缩写。

该命令使用-c:v copy 仅复制接收到的编码而不触及它,从而实现最低的资源使用:

ffmpeg -f video4linux2 -input_format mjpeg -video_size 640x480 -i /dev/video0 -c:v copy <output>

【讨论】:

  • 我尝试了 ffmpeg 和 avconv 并且有一条警告消息:输出流 0:0 中的非单调 DTS;上一个:166010,当前:16998;更改为 166011。这可能会导致输出文件中的时间戳不正确。这是否意味着我的计算机无法正确处理流?
  • 您使用的是latest ffmpeg 还是您的发行版附带的任何东西?您是否注意到输出有任何问题?
  • 我使用的是发行版提供的 ffmpeg 或 avconv 版本。视频输出有一些滞后/跳跃......我认为这与警告“非单调 DTS 消息”有关。我的 Microsoft HD3000 网络摄像头似乎比其他网络摄像头更经常发生这种情况。我将尝试使用最新版本...(我想这意味着我必须从源代码构建工具?)
  • @user3585723 ffmpeg.org/download.html也有静态构建和包。
猜你喜欢
  • 2011-02-28
  • 2018-01-11
  • 1970-01-01
  • 2013-07-12
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多