Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Opnemen van v4l2-input (camera, EasyCap...) naar bestand met FFmpeg  (gelezen 810 keer)

Offline xinuzimi

  • Lid
[Vertaling van mijn Engelstalige Ubuntu forums post]

Hallo,

Installeer vooreerst een degelijke FFmpeg versie.

Deze bijvoorbeeld, momenteel:

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install ffmpeg

1. VOORBEREIDING

1.1 STEL GELUIDINVOER IN

Stel analoge geluidsinvoer usb hub TV enz (wanneer het bijv. om tv naar usb invoer gaat) in onder 'Invoer' van je geluidsinstellingen.

1.2 CHECK VIDEO AND AUDIO INVOER - VERSCHEIDENE MOGELIJKHEDEN

'sudo apt-get install v4l-utils' gebruik het commando 'v4l2-ctl --list-devices' om de video invoer te verifiëren,

en/of:

VLC, Media opnemen, selecteer video (bijv. /dev/video0) en geluid (bijv. hw:1,0) onder 'Video Camera' i.v.m het correcte TV systeem (bijv. PAL) en test/speel het resultaat.

en/of:

Check de audio met het commando 'arecord -l' (meest belangrijk).

2. OPNEMEN

Dit zijn enkele codes die voor mij werken op verscheidene systemen (oud en nieuw) en dit na meerdere probeersels.

Invoer: EasyCap stick (tv/recorder-scart-OUT-composite-EasyCap-lange-usb-of-composite-of-s-video-kabel-naar-usb-poort-laptop / PAL TV).

Plak de gegeven codelijn in je terminal.
Onderbreek/bewaar met 'q'.
Voer opnieuw in met 'Pijl Omhoog'.
Verander eventueel het bestandsnummer of de naam in geval van nieuw bestand.

De eerste opname zal dikwijls een '0 fps' bericht in je terminal weergeven. Dit verdwijnt vanaf de tweede opname.
Geen beeld of geen geluid betekent dikwijls dat je niet het juiste video4linux- of alsanummer gebruikt (Zie: VOORBEREIDING).

2.1 MPEG4-PART10 (H264, X264)

ffmpeg -f v4l2 -standard PAL -thread_queue_size 512 -i /dev/video0 -f alsa -thread_queue_size 512 -i hw:0,0 -vcodec libx264 -preset superfast -crf 25 -s 640x480 -r 25 -aspect 16:9 -acodec libmp3lame -b:a 128k -channels 2 -ar 48000 uit_0001.mkv

De v4l2 'standard' is belangrijk voor juiste afbeeldingsschaling. Meestal: PAL (Europa) of NTSC (V.S. = v4l Default) of SECAM (Frankrijk).

mp4-uitvoercontainer kan natuurlijk ook (Al is mkv flexibeler).
Beste preset: 'superfast' blijkt in de meeste gevallen te werken. Anders: 'veryfast'. In geval van slechte, haperende ontvangst: 'ultrafast' (maar, mindere kwaliteit/minder compressie).
Alle mogelijkheden: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo.

Ik heb mp3lame gebruikt nadat aac begon te stotteren. Meest gebruikte waarden: 44100 of 48000 hz. Ik probeer de originele hz audio frequentie van de input zoveel mogelijk te behouden. Vanzelfsprekend kan de originele audio invoer ook gekopieerd met '-acodec copy'. Alleen de audio nadien hercoderen neemt niet teveel tijd in beslag.

'-thread_queue_size n': wanneer tweemaal geplaatst, achter 'v4l2' en achter 'alsa' (welke de gebruikte codec ook), overkomt het het repetitieve bericht 'ALSA buffer x-run' en slechte geluidsopname. Na deze instelling, verscheen bewust bericht 1x aan het begin, en dat op een ouder systeem, en verliep de geluidsopname verder vlekkeloos. Gebruikelijke instellingen: 512, 1024, 2048.

'-crf': beste kwaliteits-bestandsgrootteresultaten tussen 20 and 28.

2.2 MPEG4-PART2 (H263, XVID)

Ik prefereer deze codec (sorry! - wat 'ze' ook beweren) omdat nadien verknippen van de video met ffmpeg, of gemakkelijker met avidemux, vlotter gaat dan met mpeg4-part10.
'mpeg4' of 'mpeg4 -vtag xvid' of 'libxvid' (deze laatste geeft soms een foutbericht i.v.m. niet aanwezige bibliotheek. Gewoon 'mpeg4' is waarschijnlijk het veiligst.).

2.2.1 Constante bitrate

ffmpeg -f v4l2 -standard PAL -thread_queue_size 512 -i /dev/video0 -f alsa -thread_queue_size 512 -i hw:0,0 -vcodec mpeg4 -b:v 1800k -s 640x480 -r 25 -aspect 16:9 -acodec libmp3lame -b:a 128k -channels 2 -ar 48000 uit_0001.mkv

2.2.2 Variabele bitrate

ffmpeg -f v4l2 -standard PAL -thread_queue_size 512 -i /dev/video0 -f alsa -thread_queue_size 512 -i hw:0,0 -vcodec mpeg4 -q:v 4 -s 640x480 -r 25 -aspect 16:9 -acodec libmp3lame -q:a 7 -channels 2 uit_0001.mkv

Bitrate of qscale = persoonlijke keuze (zie documentatie). Variabele bitrate zou lichtjes betere kwaliteit moeten geven maar 'fluctueert' ('bitrate springt') soms danig dat je een onzekere bestandsgrootte en -kwaliteit bekomt.
Andere instellingen: zie FFmpeg Documentatie (Engels).

Geen video - audio syncproblemen met hogerstaande codes.

Het kan een uitdaging zijn om plotse zwarte beelden te vermijden. Zeker tijdens langere opnames.
Dit hangt sterk af van de toestand van de hardware tijdens opname.
« Laatst bewerkt op: 2017/05/03, 04:19:30 door xinuzimi »

Offline xinuzimi

  • Lid
Re: Opnemen van v4l2-input (camera, EasyCap...) naar bestand met FFmpeg
« Reactie #1 Gepost op: 2017/03/13, 23:34:44 »
(Volg eventuele updates in het originele bericht).
« Laatst bewerkt op: 2017/04/20, 08:31:24 door xinuzimi »

Offline xinuzimi

  • Lid
Re: Opnemen van v4l2-input (camera, EasyCap...) naar bestand met FFmpeg
« Reactie #2 Gepost op: 2017/04/20, 08:39:25 »
Enkele belangrijke updates aan de gebruikte codes.

Hopelijk blijft het hierbij ;-)

Offline xinuzimi

  • Lid
Re: Opnemen van v4l2-input (camera, EasyCap...) naar bestand met FFmpeg
« Reactie #3 Gepost op: 2017/05/03, 03:23:17 »
[Update]

'pix_fmt yuv420p -vf yadif' weggelaten.

en dat voor alle toegepaste codecs.

Het vertraagt live opnames tezeer.