我正在尝试将一些数据从 USB 网络摄像头传输到基于 BeagleBone Black 的设备上的文件。我只是想测试 USB 连接,所以我不关心输出格式,也不想重新编码输出,因为这会加载 CPU。该设备没有视频卡,没有屏幕,只有串行控制台和 USB 端口。它运行的是 Debian Jessie(我知道它很古老)。
我试过了ffmpeg -f v4l2 -i /dev/video0 -vcodec copy -t 60 -stats test.raw
,但 ffmpeg 返回
[NULL @ 0x878c0] Unable to find a suitable output format for 'test.raw'
test.raw: Invalid argument
网络摄像头是罗技 V-U0015,它枚举为 /dev/video0。
编辑,请求的信息:
~# ffmpeg -f v4l2 -list_formats all -i /dev/video0
ffmpeg version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10+deb8u1)
configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --ex
tra-ldflags='-Wl,-z,relro' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enab
le-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --
enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stri
pping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpe
g --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo
-amrwbenc --enable-libaacplus --libdir=/usr/lib/arm-linux-gnueabihf --disable-vda --enable-libbluray --enable-libcdio
--enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpuls
e --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample
--disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 -
-enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/arm-linux-gnueabihf
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
[video4linux2,v4l2 @ 0x7cec0] Raw : yuyv422 : YUYV 4:2:2 : 640x480 160x120 176x144 320x176 320x240 3
52x288 432x240 544x288 640x360 752x416 800x448 800x600 864x480 960x544 960x720 1024x576 1184x656 1280x720 1280x960
[video4linux2,v4l2 @ 0x7cec0] Compressed: mjpeg : Motion-JPEG : 640x480 160x120 176x144 320x176 320x240 3
52x288 432x240 544x288 640x360 752x416 800x448 800x600 864x480 960x544 960x720 1024x576 1184x656 1280x720 1280x960
/dev/video0: Immediate exit requested
答案1
您的相机提供两种格式:原始 (yuyv422)和图像格式。
对于原始数据:
ffmpeg -f v4l2 -input_format yuyv422 -i /dev/video0 -c copy -t 60 output.yuv
对于 mjpeg:
ffmpeg -f v4l2 -input_format mjpeg -i /dev/video0 -c copy -t 60 output.mjpeg
- 我猜测默认情况下会选择原始输入(但我可能错了)所以如果你想偷懒你可以省略
-input_format yuyv422
你想要的原始格式。 -stats
默认处于开启状态,因此您不需要包含此选项。- 查看带有 的多路复用器列表
ffmpeg -muxers
以及带有ffmpeg -h muxer=rawvideo
和的单个多路复用器的信息ffmpeg -h muxer=mjpeg
。 - 看FFmpeg video4linux2 文档更多细节。