Linux Audio en Video

Op deze pagina:

Youtube filmpjes downloaden via de commandline

Stel je wilt een filmpje van youtube of een andere website downlaoden, bijvoorbeeld: http://youtu.be/blabla123 (vervang dit in de onderstaande voorbeelden door de url van de gewenste video)

installeren:


sudo apt-get install youtube-dl

lijst met ondersteunde websites:


youtube-dl --list-extractors

lijst met beschikbare formaten/bestandssoorten:


youtube-dl --list-formats http://youtu.be/blabla123

downloaden met formaat 22 (1280x720):


youtube-dl --f 22 http://youtu.be/blabla123

als je alleen het geluid wilt hebben:


youtube-dl --f 18 --extract-audio http://youtu.be/blabla123

Geluid van een video opslaan als mp3

Met behulp van de commandline en het programma ffmpeg kun je geluid rippen van een video.

Het spreekt voor zich dat je ffmpeg geinstalleerd moet hebben.

Dit is wat je moet intypen als de video filmpje.mp4 heet en het geluid naar geluid.mp3 moet:


ffmpeg -i filmpje.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 geluid.mp3

Dit is de betekenis van de parameters:

  • -ab : Audio bitrate
  • -ar : Audio samplerate

Dit kan ook met een flash-video:


ffmpeg -i flash-video.flv -vn -ar 44100 -ac 2 -ab 192 -f mp3 geluid-van-flash-video.mp3

Flashfilmpjes (.flv) omzetten naar .mpg-filmpjes

Met behulp van de commandline en het programma ffmpeg kun je flash-(.flv)-filmpjes omzetten naar .mpg-filmpjes.

Stel je filmpje heet filmpje.flv, dan is de eenvoudigste methode om het filmpje om te zetten deze opdracht:


ffmpeg -i filmpje.flv filmpje.mpg

Het spreekt voor zich dat je ffmpeg geinstalleerd moet hebben.

Een iets uitgebreidere methode waar je wat meer controle over de omzetting hebt is:


ffmpeg -i filmpje.flv -ab 64 -ar 44100 -b 2000 -s 160x128 filmpje.mpg

Dit is de betekenis van de parameters:

  • -ab : Audio bitrate
  • -ar : Audio samplerate
  • -b : Video bitrate
  • -s : Size

Geluid herstarten

Na het bezoeken van een website kan opeens geluid verstoord zijn. Na ongeveer een uur komt het vanzelf weer goed, maar daar wil je meestal niet op wachten. De computer herstarten lost het ook op, maar dat is nogal drastisch. Een snellere methode is het hestarten van het geluid:


pulseaudio -k && sudo alsa force-reload

Een alias hiervoor kan ook in ~/bashrc gezet kan worden zodat je alleen maar geluid hoeft in te typen:


#geluid herstarten
alias geluid='pulseaudio -k && sudo alsa force-reload'

Video's samenvoegen

Een map met video's van hetzelfde type, bijvoorbeeld .avi, kan je samenvoegen tot één video bestand met ffmpeg. Eerst de namen van de samen te voegen video's in een .txt bestand plaatsen:


printf "file '%s'\n" ./*.avi > mijnvideolijst.txt

Dan de filmpjes uit het .txt bestand samenvoegen:


ffmpeg -f concat -safe 0 -i mijnvideolijst.txt -c copy samengevoegd.avi

Als je een ander type bestand hebt, bijvoorbeeld .mp4, dan moet je in het bovenstande .avi (2x) vervangen door .mp4.

DVD .vob bestanden samenvoegen en omzetten naar een .mkv bestand

Je kunt alle .vob bestanden in een directory eenvoudig samenvoegen met cat:


cat *.VOB > dvdfilm.vob

Als je zelf wil bepalen welke .vob bestanden in welke volgorde moeten worden samengevoegd dan kun je de .vob bestanden opgeven gescheiden door spaties:


cat VTS_04_1.VOB VTS_04_2.VOB > dvdfilm.vob

Eerst kijken wat er in het .vob bestand zit:


ffmpeg -i dvdfilm.vob

# voorbeeld van uitvoer:
Input #0, mpeg, from 'dvdfilm.vob':
  Duration: 01:32:58.98, start: 0.280000, bitrate: 9435 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x86]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s - russisch?
    Stream #0:2[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:3[0x88]: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s
    Stream #0:4[0x82]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:5[0x83]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:6[0x85]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:7[0x84]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s

Er zijn verschillende geluidskanalen in dit voorbeeld, soms is het even uitproberen welk geluidskanaal de juiste taal is. Via -map geef je aan welke er mee moeten naar het .mkv bestand.


ffmpeg -i dvdfilm.vob -map 0:0 -map 0:2 -codec:v libx264 -crf 21 -codec:a libmp3lame -qscale:a 2 -codec:s copy film.mkv

Met -i wordt het invoerbestand (dvdfilm.vob) opgegeven, de laatste naam (film.mkv) is het uitvoerbestand.

Een X11 schermopname maken met ffmpeg

Een schermopname maken kan met:


ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg

0.0 is display.screen nummer van je X11 server, gelijk aan de DISPLAY environment variabele.

Een filmpje maken van een map met plaatjes

Als je een map hebt met daarin .png- of .jpg-bestanden van gelijke grootte, dan kun je daar een filmpje van maken met memcoder:


mencoder "mf://*.png" -mf fps=15 -ovc lavc -o ./output.avi

voor png-bestanden (in dit voorbeeld: 15 plaatjes per seconde) of


mencoder "mf://*.jpg" -mf fps=1 -ovc lavc -o ./output.avi

voor jpg-bestanden (in dit voorbeeld: 1 plaatje per seconde).

Het getal bij fps= geeft aan hoeveel plaatjes er per seconde getoond moeten worden.

Als mencoder nog niet geinstalleerd is, dan moet je die eerst installeren.

Je kunt ook een filmpje maken van plaatjes met ffmpeg:


ffmpeg -f image2 -framerate 12 -i foto*.jpeg -s 1920x1080 film.avi

In dit voorbeeld is het formaat image2, de framereate is hier 12, alle bestanden die beginnen met foto en eindigen op .jpeg worden meegenomen en de resolutie wordt 1920 bij 1080 pixels. Het uiteindelijk filpje heet film.avi.

Automatisch screenshots maken van een video

Als je van een video elke 5 seconden een frame wil opslaan als .jpg-afbeelding kun je dat met mplayer als volgt doen:


mplayer -vo jpeg -sstep 5 -endpos 6900 film.mp4

bij -sstep het aantal seconden dat gewacht moet worden voordat het volgende screenshot genomen wordt.

bij -endpos het aantal seconden dat er afgespeeld moet worden voordat er gestopt moet worden. Als dit aantal meer is als de video lang is, dan komt het programma in een loop terecht waar je uit moeten breaken met Ctrl-C, anders blijft het steeds het laatste frame herhalen.

Je kunt dit ook met ffmpeg doen:


ffmpeg -i film.avi -r 1 -s 800x600 -f image2 film-%03d.jpeg

Dit zal één video frame per seconde uit film.avi schalen naar 800 bij 600 pixels en opslaan als plaatje met als naam film-001.jpeg, film-002.jpeg, etc.

Als je slechts een beperkt aantal video frames als plaatje wil, dan kun je bevenstaande opdracht aanvullen met de "-frames:v" of "-t" optie, of je kunt deze in combinatie met -ss gebruiken om te starten vanaf een bepaald punt in de tijd.

 

Verwante artikelen