ffmpeg-Videoaufzeichnung friert nach "Ungültige Daten beim Verarbeiten der Eingabe"

3391
Vassilis Kotaras

Ich versuche, meine alten VHS-Bänder mit einem USB-Videoaufnahmegerät und dem folgenden Befehl aufzunehmen:

ffmpeg -f alsa -ac 2 -i default -f v4l2 -standard pal -i /dev/video0 -c:v libx264 -qp 0 -preset fast -strict -2 zzz.mp4 

Manchmal jedoch stoppt ffmpeg unerwartet während der Aufnahme die Videoaufnahme und verbleibt im letzten Frame (das Audio wird weiterhin aufgenommen). Die Fehlermeldung sieht so aus:

[video4linux2,v4l2 @ 0x23e51a0] Dequeued v4l2 buffer contains 414720 bytes, but 829440 were expected. Flags: 0x00002005.  /dev/video0: Invalid data found when processing input 

Ich habe im Internet fast keine Informationen darüber gefunden. Ich habe das Problem hier als Funktionsanforderung beschrieben: https://trac.ffmpeg.org/ticket/4795

Ich hatte auch einige Probleme mit einer Warnmeldung vor diesem Fehler, die nicht in Zusammenhang zu stehen scheint und die Videoaufzeichnung nicht zu beeinträchtigen scheint, aber ich frage mich auch, was dies bedeutet:

[video4linux2,v4l2 @ 0x23e51a0] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8) [alsa @ 0x23cc360] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8) 

Bei Verwendung von Versuch und Irrtum scheinen die Warnungen verschwunden zu sein, wenn ich -f v4l2 -thread_queue_size 32und setze -f alsa -thread_queue_size 2048. Ich weiß nicht warum. Wenn ich die Thread-Warteschlangengröße für die Videoeingabe beispielsweise auf 512 anwende, habe ich keine Warnung, aber ich habe Frames verloren.

Ich wünschte, ich kann ffmpeg für meine Aufnahmen verwenden. VLC hat kein Problem mit der Aufnahme, aber ich habe auch Probleme mit den Parametern, ich habe sie noch nicht genug studiert. Wenn jemand einen alternativen Befehl für vlc vorschlagen kann, um verlustfrei aufzunehmen, wechsle ich zu vlc ...

Die vollständige Ausgabe von ffmpeg ist:

$ ffmpeg -f alsa -ac 2 -i default -f v4l2 -standard pal -i /dev/video0 -c:v libx264 -qp 0 -preset fast -strict -2 zzz.mp4 ffmpeg version 2.7.6-0ubuntu0.15.10.1 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.2.1 (Ubuntu 5.2.1-22ubuntu2) 20151010 configuration: --prefix=/usr --extra-version=0ubuntu0.15.10.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-frei0r --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-openal --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libxvid --enable-libzvbi --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-libssh --enable-libsoxr --enable-libx264 --enable-libopencv --enable-libx265 libavutil 54. 27.100 / 54. 27.100 libavcodec 56. 41.100 / 56. 41.100 libavformat 56. 36.100 / 56. 36.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.101 / 5. 16.101 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.100 / 1. 2.100 libpostproc 53. 3.100 / 53. 3.100 Guessed Channel Layout for Input Stream #0.0 : stereo Input #0, alsa, from 'default': Duration: N/A, start: 1457422230.571465, bitrate: 1536 kb/s Stream #0:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s Input #1, video4linux2,v4l2, from '/dev/video0': Duration: N/A, start: 4454.267377, bitrate: 165888 kb/s Stream #1:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x576, 165888 kb/s, 25 fps, 25 tbr, 1000k tbn, 1000k tbc File 'zzz.mp4' already exists. Overwrite ? [y/N] y No pixel format specified, yuv422p for H.264 encoding chosen. Use -pix_fmt yuv420p for compatibility with outdated media players.  [libx264 @ 0x231cd00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 LZCNT [libx264 @ 0x231cd00] profile High 4:4:4 Predictive, level 3.0, 4:2:2 8-bit [libx264 @ 0x231cd00] 264 - core 146 r2555 0c21480 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=6 psy=0 mixed_ref=1 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=0 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc=cqp mbtree=0 qp=0 Output #0, mp4, to 'zzz.mp4': Metadata: encoder : Lavf56.36.100 Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 720x576, q=-1--1, 25 fps, 12800 tbn, 25 tbc Metadata: encoder : Lavc56.41.100 libx264 Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s Metadata: encoder : Lavc56.41.100 aac Stream mapping: Stream #1:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native)) Press [q] to stop, [?] for help [video4linux2,v4l2 @ 0x231a180] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8) [alsa @ 0x2301360] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8) [video4linux2,v4l2 @ 0x231a180] Dequeued v4l2 buffer contains 414720 bytes, but 829440 were expected. Flags: 0x00002005. /dev/video0: Invalid data found when processing input frame= 1962 fps= 17 q=-1.0 Lsize= 409086kB time=00:01:53.53 bitrate=29516.7kbits/s  video:407234kB audio:1777kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.018333% [libx264 @ 0x231cd00] frame I:346 Avg QP: 0.00 size:186290 [libx264 @ 0x231cd00] frame P:1616 Avg QP: 0.00 size:218162 [libx264 @ 0x231cd00] mb I I16..4: 92.3% 0.0% 7.7% [libx264 @ 0x231cd00] mb P I16..4: 76.1% 0.0% 22.8% P16..4: 0.2% 0.5% 0.4% 0.0% 0.0% skip: 0.0% [libx264 @ 0x231cd00] 8x8 transform intra:0.0% inter:76.8% [libx264 @ 0x231cd00] coded y,uvDC,uvAC intra: 100.0% 100.0% 100.0% inter: 100.0% 100.0% 100.0% [libx264 @ 0x231cd00] i16 v,h,dc,p: 0% 100% 0% 0% [libx264 @ 0x231cd00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 78% 3% 1% 2% 3% 1% 3% 1% [libx264 @ 0x231cd00] i8c dc,h,v,p: 1% 98% 0% 0% [libx264 @ 0x231cd00] Weighted P-Frames: Y:31.7% UV:20.6% [libx264 @ 0x231cd00] ref P L0: 52.8% 47.2% [libx264 @ 0x231cd00] kb/s:42508.35 
4
Die vollständige Konsole-Ausgabe Ihres Befehls ist erforderlich. LordNeckbeard vor 8 Jahren 0
Ich habe die Ausgabe in die ursprüngliche Nachricht eingefügt Vassilis Kotaras vor 8 Jahren 0
Ich bin erstaunt, dass fast niemand ein ähnliches Problem zu haben scheint. Bin ist oder sind? Ich habe fast keine Informationen darüber gefunden und keine Lösung :( Vassilis Kotaras vor 8 Jahren 0
Ich gebe zu, ich habe mich nicht wirklich mit Ihrer Frage beschäftigt, aber da die Entwicklung von FFmpeg so aktiv ist, müssen Sie zunächst einen neuen `ffmpeg` aus dem aktuellen Git Master-Zweig testen. [Herunterladen] (http://johnvansickle.com/ffmpeg/). LordNeckbeard vor 8 Jahren 0
Ich habe die neuesten ffmpeg-Codecs installiert und folge den Anweisungen hier: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu. Die ffmpeg-Version heißt jetzt N-79065-g7d9e064 (warum diese seltsame Nummer?). Zuvor war die Version 2.7.6 (von Ubuntu-Repositories). Wie auch immer, ich bekomme genau den gleichen Fehler: "Der v4l2-Puffer in der Warteschlange enthält 414720 Bytes usw.". Ich vermute, dass dies passiert, wenn das Videosignal von der VHS-Kassette schlecht ist und das Bild instabil ist, aber ich kann nichts dagegen tun. Vassilis Kotaras vor 8 Jahren 0

2 Antworten auf die Frage

3
Vassilis Kotaras

Ich konnte keine Lösung für dieses ffmpeg-Problem finden und fand kürzlich in diesem Artikel Folgendes:

Wie es scheint, sendet das stk1160-Gerät diese defekten Frames an das v4l2-Gerät. Sobald sie ffmpeg erreichen, verschluckt und meldet sie ungültige Frames. Obwohl dies ein Teil der „ehrlichen“ Qualität von ffmpeg ist, halte ich es für einen Fehler, da es den Transcodierungsprozess beendet und ffmpeg für die anstehende Aufgabe ungeeignet macht.

Also fing ich an, Mencoder zu verwenden. Dieser Blog hat mir geholfen, mencoder zu verwenden: http://easycap.blogspot.com/p/command-line-tv.html

Ich habe MPlayer (der Mencoder enthält) mit dem unter http://www.mplayerhq.hu angegebenen Quellcode kompiliert

Versuchen Sie, ffmpeg mit diesem Befehl: ffmpeg -f alsa -ac 2 -i default -f v4l2 -standardpal -err_detect ignore_err -i / dev / video0 -c: v libx264 -qp 0 -preset fast -strict -2 zzz.mp4 ` Gyan vor 8 Jahren 0
Ich habe es versucht. Gleiches passiert :( Vassilis Kotaras vor 8 Jahren 0
0
phiresky

Dies ist immer noch ein Fehler in ffmpeg 3.3. Obwohl sich ffplay nach diesem Fehler (der für mich bei Szenenwechsel / schnellem Vorlauf auftritt) korrekt wiederhergestellt hat, stoppt ffmpeg einfach die Verarbeitung von Frames. Ich hatte das gleiche Problem mit diesem Gerät, und ich konnte mencoder nicht dazu bringen, die genauen Parameter zu verwenden (va in Bezug auf Deinterlacing), also wollte ich eine Kombination aus mencoder (raw AVI bis stdout) und ffmpeg (yadif deinterlace, map) verwenden Audio, x264 und Mux zu mkv), was großartig funktioniert.

Sie können die rohen AVI-Daten natürlich direkt speichern, aber mit ~ 70 GByte / h hatte ich nicht genügend Speicherplatz dafür.

(Teilweise von hier übernommen )

mencoder -endpos 1:40:00 tv:// -tv device=/dev/video0:input=4:norm=PAL:width=720:height=576:alsa:adevice=hw.3:forceaudio:buffersize=128 -oac pcm -ovc copy -o - -really-quiet | ffmpeg -i - -vf yadif=mode=send_field:parity=tff -map_channel 0.1.1 -c:a flac -c:v libx264 -preset veryfast -crf 16 011.mkv