ffmpeg-Videoaufzeichnung friert nach "Ungültige Daten bei der Verarbeitung der Eingabe gefunden" ein

4

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 friert ffmpeg jedoch unerwartet während der Aufnahme die Videoaufnahme ein und verbleibt im letzten Bild (Audio wird weiterhin aufgenommen). Die Fehlermeldung sieht ungefähr 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. Das Problem wurde hier als Funktionsanforderung beschrieben: https://trac.ffmpeg.org/ticket/4795

Außerdem hatte ich vor diesem Fehler ein Problem mit einer Warnmeldung, die nicht verwandt zu sein 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 der Verwendung von Versuch und Irrtum scheinen die Warnungen zu verschwinden, wenn ich -f v4l2 -thread_queue_size 32und einstelle -f alsa -thread_queue_size 2048. Ich weiß nicht warum. Wenn ich die Thread-Warteschlangengröße für den Videoeingang beispielsweise auf 512 erhöhe, wird keine Warnung angezeigt, aber ich habe Frames gelöscht.

Ich wünschte, ich könnte ffmpeg für meine Aufnahmen verwenden. VLC hat keine Probleme 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, werde ich zu vlc wechseln ...

Die volle 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
Vassilis Kotaras
quelle
Die vollständige Konsolenausgabe Ihres Befehls ist erforderlich.
Logan
Ich habe die Ausgabe in die ursprüngliche Nachricht
eingefügt
Ich bin erstaunt, dass fast niemand ein ähnliches Problem zu haben scheint. Bin ist oder sind? Ich fand fast keine Informationen über diese und keine Lösung :(
Vassilis Kotaras
Ich gebe zu, ich habe mich nicht wirklich mit Ihrer Frage befasst, aber da die FFmpeg-Entwicklung so aktiv ist, besteht der erste Schritt darin, einen neuen ffmpegaus dem aktuellen Git-Master-Zweig zu testen . Herunterladen .
Logan
Ich habe das neueste ffmpeg und die neuesten Codecs gemäß den Anweisungen hier installiert : trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu. Die ffmpeg-Version ist jetzt N-79065-g7d9e064 (warum diese seltsame Nummer?). Vorher hatte ich die Version 2.7.6 (aus Ubuntu-Repositories). Wie auch immer, ich erhalte genau den gleichen Fehler: "Der aus der Warteschlange genommene v4l2-Puffer enthält 414720 Bytes usw.". Ich vermute, dass dies passiert, wenn das Videosignal vom VHS-Band schlecht und das Bild instabil ist, aber ich kann nichts dagegen tun.
Vassilis Kotaras

Antworten:

3

Ich konnte keine Lösung für dieses ffmpeg-Problem finden und habe kürzlich den folgenden Artikel gefunden :

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

Also fing ich an, stattdessen 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

Vassilis Kotaras
quelle
Versuchen Sie ffmpeg mit diesem Befehl:ffmpeg -f alsa -ac 2 -i default -f v4l2 -standard pal -err_detect ignore_err -i /dev/video0 -c:v libx264 -qp 0 -preset fast -strict -2 zzz.mp4
Gyan
Ich habe es versucht. Das Gleiche passiert :(
Vassilis Kotaras
1

Dies ist immer noch ein Fehler in ffmpeg 3.3. Obwohl sich ffplay nach diesem Fehler korrekt erholt (was für mich bei Szenenwechseln / schnellem Vorlauf der Fall ist), stoppt ffmpeg nur die Verarbeitung von Frames. Ich hatte das gleiche Problem mit diesem Gerät und konnte den Mencoder nicht dazu bringen, die genauen Parameter zu verwenden (insbesondere in Bezug auf Deinterlacing), die ich wollte. Deshalb habe ich eine Kombination aus Mencoder (RAW-AVI zu STDOUT) und FFMPEG (YADIF DEINTERLACE, MAP) verwendet Audio, encodiere x264 und mux zu mkv) was super funktioniert.

Sie könnten natürlich die AVI-Rohdaten direkt speichern, aber mit ~ 70 GByte / h hatte ich nicht genug Platz dafür.

(Teilweise von hier genommen )

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

Phiresky
quelle