ssi*_*fod 1 ffmpeg video-capture libav avconv webcam-capture
我有一个关于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
Run Code Online (Sandbox Code Playgroud)
什么是avconv命令直接保存压缩流而不使用avconv进行缩放或重新编码.
现在,我正在使用此命令:
avconv -f video4linux2 -r 30 -s 320x240 -i /dev/video0 test.avi
Run Code Online (Sandbox Code Playgroud)
我不确定这个命令是否具有CPU效率,因为我没有告诉任何地方使用网络摄像头的mjpeg压缩功能.
在开始记录文件之前,avconv是否负责配置网络摄像头设置?它始终是原始流的工作,并在原始流上进行缩放和enconding吗?
感谢您的回答
阅读实际文档 ™是您在现实生活中最接近魔术的东西:
video4linux2,v4l2
input_format
设置首选像素格式(对于原始视频)或编解码器名称.此选项允许用户在有多个输入格式可用时选择输入格式.
video_size
设置视频帧大小.参数必须是WIDTHxHEIGHT形式的字符串或有效大小的缩写.
该命令用于-c:v copy
复制接收的编码而不触及它,因此实现了最低的资源使用:
ffmpeg -f video4linux2 -input_format mjpeg -video_size 640x480 -i /dev/video0 -c:v copy <output>
Run Code Online (Sandbox Code Playgroud)