ffmpeg bleibt beim Versuch, Videos mit höheren Auflösungen aufzunehmen, hängen

ffmpeg bleibt beim Versuch, Videos mit höheren Auflösungen aufzunehmen, hängen

Ich versuche, mit einer USB-Kamera einige Videos aufzunehmen, habe aber bei der Verwendung einige Probleme ffmpeg.

Wenn ich ausführe ffmpeg -f video4linux2 -t 00:00:10 -i /dev/video0 out.mpg, versucht das Programm, mit einer Auflösung von 640 x 480 aufzunehmen und ffmpeghängt sich auf.

Wenn ich jedoch die -sOption hinzufüge ffmpegund mit einer niedrigeren Auflösung als 640 x 480 (z. B. 320 x 240) aufnehme, wird das Video erfolgreich aufgenommen.

Wenn ich nach einem Hängenbleiben drücke CTRL+C, wird ffmpeg fortgesetzt und gibt eine Datei mit einer Größe von 0 kB zurück. Mit stracekann ich sehen, dass ein ioctlAufruf des Geräts immer wieder zurückgibt -EINVALund anschließend ioctls zurückgibt -EAGAIN.

ioctl(3, VIDIOC_G_STD, 0xbe84dfb0)      = -1 EINVAL (Invalid argument)
ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EAGAIN (Resource temporarily unavailable)

Irgendwelche Ideen, warum das passiert?

Ich verwende ffmpegVersion 2.8.7, erstellt bis busybox1.25. Die Hostarchitektur ist ein ARM-Prozessor mit Kernel 3.2.

Ich habe auch versucht, die neueste Version aus dem Quellcode zu kompilieren, aber das Problem besteht weiterhin ...

Antwort1

Grund herausgefunden: Transkodierung und Rohdatenvolumen.

Mithilfe der in meiner Frage erwähnten Befehlszeile las ich aus einem Rohformat (yuv422) und transkodierte es in MPEG-1, was die Standardkodierung für meine Version von war ffmpeg. Die von der Kamera gestreamte Datenmenge war einfach zu groß für den Prozessor, was zum Hängen führte. Die von mir verwendete Kamera konnte auch in einem komprimierten Format (mjpeg) streamen. Durch das Umschalten auf dieses Format ffmpeghing es nicht mehr und konnte mit 15 fps aufnehmen.

Es gab jedoch einen Transcodierungsschritt von MJPEG nach MPEG-1. Ich konnte eine höhere FPS-Zahl erreichen, indem ich ffmpegden Stream anwies, ihn zu kopieren und den letzten Transcodierungsschritt entfernte.

verwandte Informationen