ffmpeg Befehl zum kopieren von video Eingang

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
matze12
Beiträge: 11
Registriert: 02.08.2017 16:07:01

ffmpeg Befehl zum kopieren von video Eingang

Beitrag von matze12 » 04.02.2021 07:49:29

Hallo liebes Forum, ich möchte ein eingehendes Video /dev/video2 und deren Sound über hw:2,0 1:1 in eine Datei speichern wollen.
Bisher habe ich diesen Befehl versucht:

Code: Alles auswählen

ffmpeg -f alsa -i hw:2,0  -f video4linux2  -i /dev/video2  -vcodec h264 /home/user/mein.mp4
Das Bild funktioniert aber kein Ton.
Vielleicht hat ja jemand schon Erfahrung damit und könnte noch einen Tipp geben.
Eventuell auch Verbesserungsvorschläge.
Gruß

matze12
Beiträge: 11
Registriert: 02.08.2017 16:07:01

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von matze12 » 17.02.2021 16:58:29

Hat keiner eine Idee?

Benutzeravatar
smutbert
Moderator
Beiträge: 8315
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von smutbert » 17.02.2021 17:27:31

Beim ffmpeg-Teil kenne ich mich nicht wirklich aus – sollte da nicht auch ein Audiocodec im Befehl vorkommen, etwa so etwas?

Code: Alles auswählen

ffmpeg -f alsa -ac 2 -i hw:2,0 -f video4linux2 -i /dev/video2 -acodec ac3 -vcodec h264 Videoaufnahme.mp4
(-ac 2 für die Zahl der Audiokanäle)

Sollte es an etwas anderem liegen, kann ich eher helfen. Ist hw:2,0 sicher das richtige Gerät?
Ist das eine reale Soundkarte? Hast du die Aufnahmelautstärkeregler überprüft?
Hast du auch eine Aufnahme mit einem möglichst simplen Programm getestet, zB (ich hoffe ich bau jetzt in den Befehl keinen Fehler ein)

Code: Alles auswählen

arecord -f cd -t wav -D plughw:2,0 Testaufnahme.wav
ein paar Sekunden laufen lassen, mit <Strg>+<c> abbrechen und hinterher die Testaufnahme ansehen/abspielen oder gegebenenfalls die Fehlermeldungen hier posten.

Die Ausgabe von

Code: Alles auswählen

arecord -l
ist auch immer praktisch, weil man dann hier im Forum einen Überblich darüber bekommt was Alsa so an Aufnahmegeräten zu bieten hat.

Benutzeravatar
Livingston
Beiträge: 1364
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von Livingston » 17.02.2021 18:37:14

ffmpeg ist manchmal auch bei den Parametern etwas heikel. Setz mal den Input (-i hw:2,0) ganz nach vorne, so dass alles, was sich auf den Audioanteil bezieht, dahinter kommt.
Und der Hinweis auf den Codec ist sicherlich auch nicht ohne.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

matze12
Beiträge: 11
Registriert: 02.08.2017 16:07:01

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von matze12 » 18.02.2021 07:54:54

smutbert hat geschrieben: ↑ zum Beitrag ↑
17.02.2021 17:27:31

Code: Alles auswählen

arecord -f cd -t wav -D plughw:2,0 Testaufnahme.wav
Hat funktioniert, wenn ich allerdings "-i hw:2,0" nach vorne setze gibt er mir

Code: Alles auswählen

hw:2,0: Protocol not found
Did you mean file:hw:2,0?
aus.

Wenn ich das Video im VLC Player mit PAL starte läuft alles super mit Ton.
Nur ich wollte mit einen Terminal Befehl das ganze aufnehmen.
Input ist ein Audio/Videograpper von cinch auf USB.

Benutzeravatar
smutbert
Moderator
Beiträge: 8315
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von smutbert » 18.02.2021 10:43:04

und mein Vorschlag hat dich auch nicht weitergebracht? also das

Code: Alles auswählen

ffmpeg -f alsa -ac 2 -i hw:2,0 -f video4linux2 -i /dev/video2 -acodec ac3 -vcodec h264 Videoaufnahme.mp4
testweise könntest du auch bei ffmpeg hw durch plughw ersetzen, damit es nicht an einem nicht unterstützten Format (Samplerate, -tiefe und Zahl der Kanäle) scheitert:

Code: Alles auswählen

ffmpeg -f alsa -ac 2 -i plughw:2,0 -f video4linux2 -i /dev/video2 -acodec ac3 -vcodec h264 Videoaufnahme.mp4

matze12
Beiträge: 11
Registriert: 02.08.2017 16:07:01

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von matze12 » 18.02.2021 11:55:37

Nein leider alle beide Befehle ohne Ton.
Da werde ich es doch mittels vlc machen.
Oder hat jemand eine bessere Idee als ffmpeg und vlc?

Benutzeravatar
smutbert
Moderator
Beiträge: 8315
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von smutbert » 19.02.2021 00:10:40

Gibt es denn in der Ausgabe von ffmpeg keine Hinweise woran die Audioaufnahme scheitert?

Denn eigentlich sollte es so funktionieren.

um die Fehlerursache einzugrenzen wäre es vielleicht auch interessant wie die Videodatei aussieht, die der Befehl erstellt: gibt es darin gar keine Tonspur oder gibt es eine stille Tonspur?

Code: Alles auswählen

ffmpeg -i Videodatei.mp4
Das ,0 von hw:2,0 könntest du auch noch testweise weglassen – ich glaube zwar nicht, dass es eine Fehlerquelle ist, aber hw:2 bzw. plughw:2 läuft auf dasselbe hinaus.

matze12
Beiträge: 11
Registriert: 02.08.2017 16:07:01

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von matze12 » 19.02.2021 07:44:44

Ich habe jetzt mal ein Terminal Auszug kopiert vielleicht hilft das weiter:

Code: Alles auswählen

Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, alsa, from 'plughw:2,0':
  Duration: N/A, start: 1613716780.333022, bitrate: 1536 kb/s
    Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Input #1, video4linux2,v4l2, from '/dev/video2':
  Duration: N/A, start: 29.289557, bitrate: 165722 kb/s
    Stream #1:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x480, 165722 kb/s, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #1:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #0:0 -> #0:1 (pcm_s16le (native) -> ac3 (native))
Press [q] to stop, [?] for help
[libx264 @ 0x5618c00528c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
[libx264 @ 0x5618c00528c0] profile High 4:2:2, level 3.0, 4:2:2 8-bit
[libx264 @ 0x5618c00528c0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[alsa @ 0x5618c0035960] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
Output #0, mp4, to 'Videoaufnahme.mp4':
  Metadata:
    encoder         : Lavf57.83.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv422p(progressive), 720x480, q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc
    Metadata:
      encoder         : Lavc57.107.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      encoder         : Lavc57.107.100 ac3
frame=   15 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=2 droframe=   31 fps= 31 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=5 droframe=   47 fps= 31 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=8 dro[alsa @ 0x5618c0035960] ALSA buffer xrun.
frame=   56 fps= 27 q=29.0 size=       0kB time=00:00:01.87 bitrate=   0.2kbits/[video4linux2,v4l2 @ 0x5618c00469c0] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
frame=   66 fps= 25 q=29.0 size=     256kB time=00:00:01.87 bitrate=1119.5kbits/frame=   77 fps= 24 q=29.0 size=     512kB time=00:00:01.87 bitrate=2238.8kbits/frame=   87 fps= 23 q=29.0 size=[alsa @ 0x5618c0035960] ALSA buffer xrun.B time=00:00:01.87 bitrate=4477.3kbits/s dup=17 drop=0 speed=0.385x    ate=3358.0kbits/s dup=16 drop=0 speed=0.43x    
[alsa @ 0x5618c0035960] ALSA buffer xrun.B time=00:00:05.33 bitrate=4321.1kbits/s dup=60 drop=0 speed=0.534x    
frame=  305 fps= 20 q=-1.0 Lsize=    4958kB time=00:00:10.19 bitrate=3985.7kbits/s dup=122 drop=0 speed=0.654x    
video:4949kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.100667%


Bei dem Befehl "ffmpeg -i Videodatei.mp4" findet er kein video und bricht ab.

MaGe
Beiträge: 1708
Registriert: 01.06.2014 17:12:16

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von MaGe » 19.02.2021 08:31:04

matze12 hat geschrieben:
Bei dem Befehl "ffmpeg -i Videodatei.mp4" findet er kein video und bricht ab.
Vielleicht so.
Videoaufnahme.mp4


gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

matze12
Beiträge: 11
Registriert: 02.08.2017 16:07:01

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von matze12 » 19.02.2021 08:43:50

Jetzt habe ich es:

Code: Alles auswählen

.
.
.
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/matze/Videoaufnahme.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:00:10.08, start: 0.000000, bitrate: 1742 kb/s
    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p, 720x480, 1877 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 192 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Side data:
      audio service type: main
At least one output file must be specified


MaGe
Beiträge: 1708
Registriert: 01.06.2014 17:12:16

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von MaGe » 19.02.2021 11:24:07

matze12 hat geschrieben: [...] Input ist ein Audio/Videograpper von cinch auf USB.
( Audio/Videograpper ) damit kenne ich mich gar nicht aus aber
Video:
Stream #0:0(und): Video: h264 (High 4:2:2) (avc1

und Audio:
Stream #0:1(und): Audio: ac3 (ac-3

Sollten vorhanden sein



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

matze12
Beiträge: 11
Registriert: 02.08.2017 16:07:01

Re: ffmpeg Befehl zum kopieren von video Eingang

Beitrag von matze12 » 27.02.2021 10:39:58

Aber egal mit welchen Player ich dann das Video abspiele, kein Ton.

Antworten