
Ich versuche, einige Daten von einer USB-Webcam in eine Datei auf einem BeagleBone Black-basierten Gerät zu streamen. Ich versuche nur, die USB-Verbindung zu testen, daher ist mir das Ausgabeformat egal und ich möchte die Ausgabe nicht neu kodieren, da dies die CPU belasten würde. Das Gerät hat keine Grafikkarte, keinen Bildschirm, nur eine serielle Konsole und einen USB-Anschluss. Es läuft unter Debian Jessie (alt, ich weiß).
Ich habe es versucht ffmpeg -f v4l2 -i /dev/video0 -vcodec copy -t 60 -stats test.raw
, aber ffmpeg gibt zurück
[NULL @ 0x878c0] Unable to find a suitable output format for 'test.raw'
test.raw: Invalid argument
Bei der Webcam handelt es sich um eine Logitech V-U0015 und sie wird als /dev/video0 aufgelistet.
Bearbeiten, angeforderte Informationen:
~# 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
Antwort1
Ihre Kamera bietet zwei Formate:roh (yuyv422)Undmjpg.
Für Rohkost:
ffmpeg -f v4l2 -input_format yuyv422 -i /dev/video0 -c copy -t 60 output.yuv
Für mjpeg:
ffmpeg -f v4l2 -input_format mjpeg -i /dev/video0 -c copy -t 60 output.mjpeg
- Ich gehe davon aus, dass die Roheingabe standardmäßig ausgewählt ist (aber ich kann mich irren). Wenn Sie also faul sein wollen, können Sie dies weglassen,
-input_format yuyv422
wenn Sie das Rohformat möchten. -stats
ist standardmäßig aktiviert, Sie müssen diese Option also nicht einschließen.- Sehen Sie sich eine Liste der Muxer mit
ffmpeg -muxers
und Informationen zu einzelnen Muxern mitffmpeg -h muxer=rawvideo
und anffmpeg -h muxer=mjpeg
. - SehenFFmpeg video4linux2-Dokumentationfür mehr Details.