De complete gids voor het gebruik van ffmpeg in Linux

Brief: deze gedetailleerde gids laat zien hoe ffmpeg te installeren in Ubuntu en andere Linux-distributies. Het toont ook enkele nuttige ffmpeg-commando's voor praktisch gebruik.

ffmpeg is een CLI-hulpprogramma (op commandoregelbasis) voor het verwerken van mediabestanden. Het is een raamwerk met een groot aantal functies en vanwege de open source-licentie is het de basis voor vele wijdverspreide apps zoals VLC, YouTube, iTunes en nog veel meer. Een aantal Linux-videobewerkers gebruiken ffmpeg onder de GUI.

Wat ik nog meer leuk vind aan ffmpeg is dat het op zichzelf kan worden gebruikt om veel verwerkingstaken op een zeer eenvoudige manier uit te voeren (met een of twee opdrachten). Het is echter een zeer krachtig programma dat op meer complexe manieren kan worden gebruikt en zelfs een bewerkingsworkflow kan vervangen.

In deze ffmpeg-zelfstudie laat ik je zien hoe je ffmpeg installeert en ik zal de verschillende toepassingen ervan behandelen. Ik zal zelfs ingaan op enkele meer complexe functies.

Hier zijn de secties van deze gids:

  • Installeren van ffmpeg
  • Standaard gebruik van ffmpeg
  • Geavanceerd gebruik van ffmpeg
  • Filter basics

Ik zal alles in detail uitleggen, zodat je kunt begrijpen wat er aan de hand is, zelfs als je nieuw bent in de Linux-wereld.

Ik gebruik Ubuntu 18.04, maar deze opdrachten zouden ook voor andere distributies moeten werken.

Opmerking: hoewel ik ffmpeg grondig heb onderzocht en alles heb getest wat ik in dit artikel zal noemen, bewerk ik geen video's (of andere media) op een dagelijkse basis. Als je suggesties, tips of correcties hebt, laat het me weten in de reacties!

Laten we ervoor gaan!

Installeren van ffmpeg op Ubuntu en andere Linux

Het installeren van ffmpeg is een eenvoudig proces. Het is een populaire applicatie en is beschikbaar via de meeste van de Linux-distributie via de pakketbeheerder.

Installeer ffmpeg in Ubuntu

In Ubuntu is ffmpeg beschikbaar in de Universe-repository, dus zorg ervoor dat de universe-repository is ingeschakeld. en werk dan de pakkettenlijst bij en installeer ffmpeg. U kunt dit allemaal doen met de onderstaande opdrachten in een terminal:

 sudo add-apt-repository-universe

sudo apt update

sudo apt ffmpeg installeren

Dat zou het moeten zijn! U kunt de installatie verifiëren door simpelweg te typen:

 ffmpeg 

Dit zou tekst moeten weergeven die uw ffmpeg- configuratie beschrijft (inclusief versie ).

ffmpeg vversion

Zoals u kunt zien in de bovenstaande schermafbeelding, is de geïnstalleerde versie 3.4.4 . De laatste versie van ffmpeg op het moment van schrijven van dit artikel is echter 4.1 . Om een 4.x- versie te installeren, moet u de ffmpeg-ppa gebruiken . Klik om het volgende gedeelte uit te vouwen om de details van ffmpeg-installatie via PPA te bekijken.

Installeer de nieuwste ffmpeeg in Ubuntu-gebaseerde distributies met PPA

Er is een niet-officiële PPA die u kunt gebruiken om de nieuwste ffmpeg-release te installeren. Gebruik gewoon deze commando's:

 sudo add-apt-repository ppa: jonathonf / ffmpeg-4

sudo apt update

sudo apt ffmpeg -y installeren

Installeer ffmpeg in arch-gebaseerde distributies

Om ffmpeg te installeren in op Arch gebaseerde distributies, gebruikt u de volgende opdracht:

 sudo pacman -S ffmpeg 

Installeer ffmpeg in Fedora-gebaseerde distributies

Om ffmpeg te installeren in Fedora-gebaseerde Linux-distributies, kun je deze opdracht gebruiken:

 sudo dnf install ffmpeg 

Hoe ffmpeg te gebruiken: de basisprincipes

Met ffmpeg geïnstalleerd, ga ik over basisopdrachten om u op weg te helpen met het gebruik van deze krachtige tool.

0. ffmpeg-opdrachten

De basisvorm van een ffmpeg-opdracht is:

 ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ... 

U moet er rekening mee houden dat alle bestandsopties alleen van toepassing zijn op het bestand dat hen volgt (u zult ze opnieuw moeten schrijven voor het volgende bestand).

Elk bestand niet voorafgegaan door -i wordt beschouwd als een uitvoerbestand. Ffmpeg gebruikt zoveel inputs en outputs als u verstrekt. U kunt ook dezelfde naam gebruiken voor zowel een invoer- als een uitvoerbestand, maar u moet de tag -y toevoegen vóór de naam van het uitvoerbestand.

Notitie

Meng geen inputs en outputs; geef eerst invoerbestanden op en specificeer uitvoerbestanden.

1. Verkrijg informatie over mediabestanden

Het eerste gebruik van ffmpeg is informatie over een mediabestand weergeven. Dit kan gedaan worden door geen uitvoerbestanden in te voeren. Type gewoon:

 ffmpeg -i bestandsnaam 

Dit werkt voor zowel audio- als videobestanden:

 ffmpeg -i video_file.mp4

ffmpeg -i audio_file.mp3

Informatie weergeven over een mediabestand met ffmpeg

Hoewel dit nuttig is, geeft deze opdracht veel te veel informatie weer die niet relevant is voor uw bestand (informatie over ffmpeg). Voeg de vlag -hide_banner toe om dit weg te laten:

 ffmpeg -i video_file.mp4 -hide_banner

ffmpeg -i audio_file.mp3 -hide_banner

Informatie van een mediabestand weergeven met ffmpeg

Zoals u kunt zien, voert de opdracht nu alleen gegevens uit met betrekking tot het mediabestand dat u hebt opgegeven (coderingsprogramma, streams enz.).

2. Converteer mediabestanden

Een andere zeer handige manier om ffmpeg te gebruiken, is probleemloze conversie tussen verschillende media-indelingen. U hoeft alleen invoer- en uitvoerbestanden op te geven, omdat ffmpeg het vereiste formaat krijgt van de bestandsextensies. Dit werkt voor video-naar-video en audio-naar-audio conversies.

Hier zijn enkele voorbeelden:

 ffmpeg -i video_input.mp4 video_output.avi

ffmpeg -i video_input.webm video_output.flv

ffmpeg -i audio_input.mp3 audio_output.ogg

ffmpeg -i audio_input.wav audio_output.flac

U kunt zelfs meer uitvoerbestanden opgeven:

 ffmpeg -i audio_input.wav audio_output_1.mp3 audio_output_2.ogg 

Hiermee worden de invoerbestanden geconverteerd naar alle opgegeven indelingen.

Om een ​​lijst van alle ondersteunde formaten te zien, gebruik:

 ffmpeg -formaten 

Nogmaals, u kunt -hide_banner toevoegen om informatie over de app weg te laten.

U kunt de parameter -qscale 0 vóór het uitvoerbestand opgeven om de kwaliteit van een videobestand te behouden:

 ffmpeg -i video_input.wav -qscale 0 video_output.mp4 

Bovendien kunt u codecs opgeven die u wilt gebruiken, -c: a (voor audio ) en -c: v (voor video ) toevoegen, gevolgd door de naam van de codecs, of kopiëren als u dezelfde codecs als het origineel wilt gebruiken het dossier:

 ffmpeg -i video_input.mp4 -c: v kopie -c: a libvorbis video_output.avi 

Opmerking: dit kan de bestandsextensie nogal bedriegen, dus wees voorzichtig.

3. Audio uit video extraheren

Om audio uit een videobestand te extraheren, voert u een eenvoudige conversie uit en voegt u de vlag -vn toe :

 ffmpeg -i video.mp4 -vn audio.mp3 

Merk op dat deze opdracht de bitrate van het originele bestand gebruikt. Het is een goed idee om het zelf in te stellen; je kunt -ab (audio bitrate) gebruiken:

 ffmpeg -i video.mp4 -vn -ab 128k audio.mp3 

Enkele veel voorkomende bitsnelheden zijn 96k, 128k, 192k, 256k, 320k (hoogste bitsnelheid ondersteund door mp3).

Andere veel voorkomende opties zijn -ar ( audiofrequentie : 22050, 441000, 48000), -ac (aantal audiokanalen ), -f ( audioformaat, hoewel normaal automatisch gedetecteerd). -ab kan ook worden vervangen door -b: a . Bijvoorbeeld:

 ffmpeg -i video.mov -vn -ar 44100 -ac 2 -b: een 128k -f mp3 audio.mp3 

4. Audio in video dempen

Net als de laatste taak, om dit te bereiken, zullen we een eenvoudige tag toevoegen: -an (in plaats van -vn ).

 ffmpeg -i video_input.mp4 -an-video_output.mp4 

Opmerking: de -an- tag zal alle audio-opties voor dat uitvoerbestand onbruikbaar maken, omdat er geen audio in het resultaat van de bewerking zal zijn.

5. Extract Images from Video

Dit kan van pas komen voor veel mensen. U hebt bijvoorbeeld een reeks afbeeldingen (bijvoorbeeld een diavoorstelling) en u wilt alle afbeeldingen hiervan verwijderen. Voer gewoon in:

 ffmpeg -i video.mp4 -r 1 -f image2 image-% 3d.png 

Laten we dat even apart houden.

-r geeft de framesnelheid aan (hoeveel frames in één seconde in afbeeldingen worden geëxtraheerd, standaard : 25), -f geeft het uitvoerformaat aan ( image2 staat eigenlijk voor image2-reeks.

De laatste parameter (het uitvoerbestand) heeft een enigszins interessante naamgeving: het gebruikt % 3d aan het einde. Hiermee worden uw afbeeldingen eenvoudig geteld met 3 cijfers (000, 001, etc.). Je kunt ook % 2d (2-cijferig formaat) of zelfs % 4d (4-cijferig formaat) gebruiken als je wilt. Experimenteer en gebruik alles wat voor u werkt!

Opmerking: er is ook een manier om een ​​reeks afbeeldingen om te zetten in een video / diavoorstelling. Ik zal dat behandelen in het gedeelte Geavanceerd gebruik .

6. Verander videoresolutie of beeldverhouding

Een andere eenvoudige taak voor ffmpeg . Het enige dat u hoeft te doen om het formaat van een video aan te passen, is een nieuwe resolutie op te geven na de vlag -s :

 ffmpeg -i video_input.mov -s 1024x576 video_output.mp4 

Bovendien wilt u mogelijk -c: a opgeven om te controleren of de audiocodecs van het uitvoerbestand de juiste zijn:

 ffmpeg -i video_input.h264 -s 640x480 -c: een video_output.mov 

U kunt ook de beeldverhouding wijzigen met: -aspect :

 ffmpeg -i video_input.mp4 -aspect 4: 3 video_output.mp4 

Opmerking: nogmaals, een andere, iets krachtigere methode wordt vermeld in het gedeelte Geavanceerd gebruik .

7. Posterafbeelding toevoegen aan audio

Dit is een geweldige manier om audio in video om te zetten, met behulp van een enkele foto (zoals een albumhoes) voor de audio. Dit is een zeer nuttige functie wanneer u audiobestanden wilt uploaden naar sites die niets anders dan video / afbeeldingen toestaan ​​(YouTube en Facebook zijn twee voorbeelden van dergelijke sites).

Hier is een voorbeeld:

 ffmpeg -loop 1 -i image.jpg -i audio.wav -c: v libx264 -c: een aac -strict experimenteel -b: een 192k-kortste output.mp4 

Wijzig gewoon de codecs ( -c: v specificeert video codecs, -c: a specificeert audio codecs) en de namen van uw bestanden.

Opmerking: u hoeft geen -strict experimenteel te gebruiken als u een nieuwere versie ( 4.x ) gebruikt.

8. Voeg ondertitels toe aan video

Even nuttig als en eenvoudig te doen met ffmpeg is om ondertiteling toe te voegen aan een video (bijvoorbeeld een film). Vul het volgende in:

 ffmpeg -i video.mp4 -i ondertitels.srt -c: v kopie -c: een kopie -preset veryfast -c: s mov_text -map 0 -map 1 output.mp4 

Natuurlijk kunt u alle codecs opgeven die u wilt (en alle andere aanvullende opties met betrekking tot audio / video). Je kunt dit artikel over het bewerken van ondertiteling in Linux grafisch lezen.

9. Comprimeer mediabestanden

Het comprimeren van bestanden vermindert de bestandsgrootte aanzienlijk, waardoor u veel ruimte bespaart. Dit kan belangrijk zijn voor het overbrengen van bestanden. Met ffmpeg zijn er meerdere methoden om de bestandsgrootte te verkleinen.

Opmerking: te veel comprimeren van bestanden zal de kwaliteit van het resulterende bestand merkbaar verminderen.

Allereerst, voor audiobestanden, gewoon de bitsnelheid verlagen (met -b: a of -ab ):

 ffmpeg -i audio_input.mp3 -ab 128k audio_output.mp3 ffmpeg -i audio_input.mp3 -b: een 192k audio_output.mp3 

Nogmaals, sommige verschillende bitsnelheidwaarden zijn: 96k, 112k, 128k, 160k, 192k, 256k, 320k. Hoe hoger de bitsnelheid, hoe hoger de bestandsgrootte en de kwaliteit.

Voor videobestanden hebt u meer opties. Een manier zou zijn om de video-bitrate te verlagen (met -b: v ):

 ffmpeg -i video_input.mp4 -b: v 1000k -bufsize 1000k video_output.mp4 

Opmerking: Video-bitsnelheden verschillen van audio-bitsnelheden (veel hogere waarden).

U zou de -crf- vlag ( constante-snelheidsfactor ) kunnen instellen. Een lagere crf betekent een hogere bitsnelheid. Ook helpt het gebruik van libx264 als videocodec . Hier is een zeer efficiënte verkleining van de afmetingen met een zeer kleine kwaliteitsvermindering:

 ffmpeg -i video_input.mp4 -c: v libx264 -crf 28 video_output.mp4 

Een crf van 20 tot 30 is normaal, maar voel je vrij om te spelen met de specifieke waarde.

Het verlagen van de framesnelheid werkt in sommige gevallen mogelijk (hoewel het misschien heel gemakkelijk is dat de video traag wordt):

 ffmpeg -i video_input.mp4 -r 24 video_output.mp4 

-r geeft de framesnelheid aan (in dit geval 24 ).

Je kunt ook proberen om de grootte van de video te verkleinen (al uitgelegd hoe dat moet). Een extra tip is om de audio ook te comprimeren, waardoor deze stereo wordt en de bitsnelheid wordt verlaagd . Bijvoorbeeld:

 ffmpeg -i video_input.mp4 -c: v libx264 -ac 2 -c: een aac -strict -2 -b: een 128k -crf 28 video_output.mp4 

Opmerking: -streng -2 en -ac 2 zorgen voor het stereopart. Ik heb al het gedeelte bedekt dat de bitsnelheid verlaagt .

10. Mediabestanden knippen (basis)

Om bestanden vanaf het begin in te korten, moet u een duur opgeven met -t :

 ffmpeg -i input_video.mp4 -t 5 output_video.mp4

ffmpeg -i input_audio.wav -t 00:00:05 output_audio.wav

Zoals u kunt zien, werkt dit voor zowel video- als audiobestanden . Beide bovenstaande opdrachten doen hetzelfde: sla de eerste 5 seconden van het invoerbestand op in het uitvoerbestand. Ik ben gewend aan verschillende manieren om de duur in te voeren : een enkel nummer (aantal seconden) en HH: MM: SS (uren, minuten, seconden). De tweede versie werkt meer als een eindtijd .

Je kunt nog verder gaan door een begintijd op te geven met -ss en zelfs een eindtijd met -to :

 ffmpeg -i input_audio.mp3 -ss 00:01:14 output_audio.mp3

ffmpeg -i input_audio.wav -ss 00:00:30 -t 10 output_audio.wav

ffmpeg -i input_video.h264 -ss 00:01:30 -to 00:01:40 output_video.h264

ffmpeg -i input_audio.ogg -ss 5 output_audio.ogg

U kunt de starttijd zien ( -ss HH: MM: SS ), duur ( -t duur ) in seconden, eindtijd ( -to HH: MM: SS ), en starttijd ( -s duur ) in seconden (start na duur seconden).

Dit zijn allemaal geldige opdrachten en u kunt met elk onderdeel van een mediabestand werken dat ze gebruikt.

Hoe ffmpeg te gebruiken: Geavanceerd gebruik

Ik zal nu iets geavanceerdere functies behandelen (zoals schermgieten, apparaten gebruiken, enz.). Laten we beginnen met het eerste punt!

1. Split mediabestanden

Ik heb al het trimmen van bestanden behandeld. Wat je moet doen om een ​​bestand in meerdere delen te splitsen, is om meerdere trims op te geven (specificeer starttijden, eindtijden of duur voor elke uitvoerbestanden).

Bekijk dit voorbeeld:

 ffmpeg -i video.mp4 -t 00:00:30 video_1.mp4 -ss 00:00:30 video_2.mp4 

De syntaxis is vrij eenvoudig. Ik heb -t 00:00:30 opgegeven als duur voor het eerste deel (het eerste deel bestaat uit de eerste 30 seconden van de originele video). Vervolgens heb ik aangegeven dat ik de rest graag deel zou willen uitmaken van een tweede video (vanaf het einde van het laatste deel, 00:00:30 ).

Dit kan voor zoveel onderdelen worden gedaan als je wilt! Veel plezier met het spelen met deze functie, omdat het erg krachtig is. Houd er rekening mee dat het ook met audio werkt.

2. Voeg mediabestanden samen

ffmpeg kan ook het tegenovergestelde proces uitvoeren: meerdere delen samenvoegen.

Om dit te doen, moet u een nieuw tekstbestand maken en beginnen met bewerken met behulp van uw voorkeurseditor.

Omdat ik de terminal graag gebruik, zal ik touch en vim gebruiken . Het maakt niet uit wat je dit bestand noemt. Ik zal mijn join.txt noemen en het bestand maken met touch :

 raak video's_to_join.txt aan 

Nu ga ik het bewerken met vim :

 vim videos_to_join.txt 

Je kunt alle tools gebruiken die je wilt (nano, gedit, etc.), dit is precies wat ik het gemakkelijkst kan gebruiken.

Voer hier de volledige paden in voor alle bestanden die u wilt toevoegen (ze worden samengevoegd in de volgorde waarin u ze hier schrijft), één per regel. Zorg ervoor dat ze dezelfde extensie hebben (bijvoorbeeld mp4 ). Hier is die van mij:

 /home/ubuntu/Desktop/video_1.mp4

/home/ubuntu/Desktop/video_2.mp4

/home/ubuntu/Desktop/video_3.mp4

Sla het bestand op dat u zojuist hebt bewerkt. Deze methode werkt voor alle audio- of videobestanden.

Voer nu het volgende in:

 ffmpeg -f concat -i join.txt output.mp4 

Opmerking: Mijn uitvoerbestand is output.mp4, maar dat komt omdat al mijn invoerbestanden de mp4- extensie hebben .

Dit zou alle bestanden moeten samenvoegen die je hebt genoteerd in join.txt (of hoe je dat bestand ook hebt genoemd) in een enkel uitvoerbestand.

3. Voeg afbeeldingen toe aan een video

Zo kunt u een diavoorstelling of iets dergelijks samenstellen. Ik zal je laten zien hoe je audio toevoegt.

Het eerste wat ik aanbeveel, is ervoor zorgen dat de foto's die u wilt samenstellen zich in dezelfde map bevinden. Ik zet de mijne in een map met de naam mijn_foto's . De aanbevolen extensies voor de afbeeldingen zijn .png en .jpg . Wat je ook kiest, zorg ervoor dat alle afbeeldingen dezelfde extensie hebben (anders zou het gebruik van ffmpeg onbedoelde effecten kunnen hebben). Je kunt de .png- bestanden eenvoudig converteren naar .jpg of omgekeerd (zie Basisgebruik ).

Het formaat ( -f ) van onze conversie zou image2pipe moeten zijn. Voor de invoer moet u een koppelteken ( - ) opgeven . Wat image2pipe je laat doen is de resultaten van een commando zoals cat in ffmpeg te pipen (met behulp van | in de terminal) in plaats van alle namen één voor één in te voeren. Dat is precies wat ik ga doen. Om dit te laten werken, moeten we ook vermelden dat we de videocodecs willen kopiëren ( -c: v copy ) (om de afbeeldingen correct te gebruiken):

 cat my_photos / * | ffmpeg -f image2pipe -i - -c: v copy video.mkv 

Als u dit bestand afspeelt, denkt u misschien dat slechts enkele foto's aan de diavoorstelling zijn toegevoegd. Eigenlijk zijn al uw foto's toegevoegd, maar ffmpeg doorloopt ze zo snel mogelijk. Dit betekent 1 frame per foto; ffmpeg (standaard) werkt op ongeveer 23 fps .

Om dat te veranderen, moet u de gewenste framesnelheid ( -framerate ) opgeven:

 cat my_photos / * | ffmpeg -framerate 1 -f image2pipe -i - -c: v copy video.mkv 

In mijn voorbeeld stel ik de framesnelheid in op 1, wat betekent dat elk frame (dat ook elke afbeelding betekent) gedurende 1 seconde wordt weergegeven .

Om audio toe te voegen, zoals een achtergrondnummer, moeten we het audiobestand als invoerbestand opgeven ( -i audo_file ) en de audiocodecs kopiëren ( -c: een kopie ). Voor de codecs kunt u tegelijkertijd zowel audio- als video-codecs kopiëren met -c-kopie . Zorg dat u de codecs juist instelt voordat u het uitvoerbestand opgeeft. U kunt ook de framesnelheid instellen zodat al uw afbeeldingen worden gesynchroniseerd met de duur van de audio die u wilt gebruiken. Om dat te krijgen, deelt u het aantal foto's over de duur van de audio (in seconden) . Voor mijn voorbeeld heb ik een 22 seconden lang audiobestand en 9 afbeeldingen. 9/22 is ongeveer 0.40, dus dat zal ik gebruiken voor mijn framerate:

 cat my_photos / * | ffmpeg -framerate 0.40 -f image2pipe -i - -i audio.wav -c kopie video.mkv 

4. Neem uw scherm op

Screencasting met ffmpeg is geen moeilijke klus. Het formaat ( -f ) dat u moet gebruiken is x11grab . Hiermee wordt uw XSERVER vastgelegd . Als invoer moet u uw schermweergaveaantal opgeven (het hoofdscherm zou normaliter 0: 0 moeten zijn ). Dit zal echter alleen het linkerbovengedeelte van het scherm vastleggen. Je zou een schermgrootte ( -s ) moeten toevoegen. De mijn is 1920 × 1080 . De schermgrootte moet vóór de invoer worden vermeld:

 ffmpeg -f x11grab -s 1920x1080 -i: 0.0 output.mp4 

Druk op elk gewenst moment op q of CTRL + C om de screencast te stoppen .

Bonustruc: u kunt het formaat van het uitvoerbestand op volledig scherm maken door dit na te geven voor de grootte (in plaats van 1920 × 1080 of een andere ingestelde resolutie):

 -s $ (xdpyinfo | grep dimensions | awk '{print $ 2;}') 

Dit is het volledige commando:

 ffmpeg -f x11grab -s $ (xdpyinfo | grep dimensions | awk '{print $ 2;}') -i: 0.0 output.mp4 

5. Neem uw webcam op

Het opnemen van invoer via uw webcam (of een ander apparaat, zoals een usb-camera) is nog eenvoudiger. In Linux zijn apparaten winkels in / dev als / dev / video0, / dev / video1, etc .:

 ffmpeg -i / dev / video0 output.mkv 

Nogmaals, q of CTRL + C om de opname te stoppen .

6. Neem je audio op

Linux verwerkt audio voornamelijk via ALSA en pulseaudio . ffmpeg kan beide opnemen, maar ik zal pulseaudio behandelen, omdat Debian-gebaseerde distributies het standaard opnemen. De syntaxis is een beetje anders voor de twee methoden.

Voor pulseaudio moet u ( -f ) alsa forceren en standaard als invoer opgeven ( -i standaard ):

 ffmpeg-f alsa -i standaarduitvoer.mp3 

Opmerking: zorg ervoor dat in uw distributiegeluidsinstellingen het standaard opnameapparaat het apparaat is dat u wilt opnemen.

Ik speel veel gitaar en ik heb een audio-interface zodat ik het kan opnemen. Ik had een aangename verrassing toen ffmpeg mijn gitaar opnam zonder problemen.

Bonustips voor opnemen

Voor elk type opname kunt u natuurlijk ook codecs opgeven (al gedekt). U kunt een specifieke framesnelheid kiezen ( -r ). U kunt opnamegeluid ook combineren met webcam / schermopname!

 ffmpeg -i / dev / video0-f alsa -i standaard -c: v libx264 -c: a flac -r 30 output.mkv 

In plaats van audio op te nemen, kunt u net zo gemakkelijk een audiobestand toevoegen als invoer om bovenop uw screencast / webcam te worden opgenomen:

 ffmpeg -f x11grab -s $ (xdpyinfo | grep dimensions | awk '{print $ 2;}') -i: 0.0 -i audio.wav -c: een kopie uitvoer.mp4 

Opmerking: ffmpeg- records in kleine stukjes, dus een heel kleine opname wordt mogelijk niet opgeslagen. Ik raad aan om iets langer op te nemen en het achteraf te knippen (als je maar een paar seconden wilt), om er zeker van te zijn dat het bestand daadwerkelijk naar je schijf wordt geschreven.

Basisgebruik van filters in ffmpeg

Filters zijn een ongelooflijk krachtige functie van ffmpeg . Er is een waanzinnig aantal filters beschikbaar dat je kunt gebruiken, waardoor ffmpeg volledig in staat is om aan elke bewerkingsbehoefte te voldoen. Omdat er zoveel filters zijn en dit artikel al uitgebreid is, zal ik alleen enkele eenvoudige filters behandelen.

De basisstructuur voor het gebruik van een filter is:

 ffmpeg -i input.mp4 -vf "filter = setting_1 = value_1: setting_2 = value_2, etc" output.mp4 ffmpeg -i input.wav -af "filter = setting_1 = value_1: setting_2 = value_2, etc" output.wav 

Zoals je ziet, specificeer ik videofilters ( -vf, kort voor -filter: v ) en audiofilters ( -af, kort voor -filter: a ). De eigenlijke filters worden in dubbele aanhalingstekens ( " ) geschreven en kunnen worden geketend door ze te scheiden met komma's ( , ). U kunt zoveel filters opgeven als u wilt (ik heb wel enz. Geschreven om extra filters te noteren, het maakt eigenlijk geen deel uit van de opdracht).

De algemene vorm van een filter is:

 filter = setting_2 = waarde_2: setting_2 = waarde_2 

De verschillende filterinstellingen en hun waarden worden gescheiden door dubbele punten .

U kunt ook wiskundige bewerkingen uitvoeren als waarden voor de verschillende instellingen .

Opmerking: gedetailleerdere dekking van verschillende constanten voor gebruik in uitdrukkingen en verschillende instellingen is te vinden in de officiële ffmpeg-filterdocumentatie .

Ik behandel zowel video- als audiofilters . Laten we een paar voorbeelden zien!

1. Video Scaling

Dit is een heel eenvoudig filter. De enige instellingen zijn breedte en hoogte :

 ffmpeg -i input.mp4 -vf "scale = w = 800: h = 600" output.mp4 

Ik zei dat je ook wiskundige bewerkingen kunt gebruiken voor waarden :

 ffmpeg -i input.mkv -vf "schaal = w = 1/2 * in_w: h = 1/2 * in_h" output.mkv 

Met deze opdracht wordt de uitvoergrootte ingesteld op de helft ( 1/2 ) van de invoer ( in_w, in_h ).

2. Video bijsnijden

Wat het schaalfilter betreft, zijn de instellingen de breedte en hoogte van het resulterende bestand. Optioneel kunt u coördinaten specificeren voor de linkerbovenhoek van de cut ( standaard: midden van de inputvideo):

 ffmpeg -i input.mp4 -vf "bijsnijden = w = 1280: h = 720: x = 0: y = 0" output.mp4

ffmpeg -i input.mkv -vf "bijsnijden = w = 400: h = 400" output.mkv

Zoals opgemerkt knipt de tweede knip in het midden van het invoerbestand (aangezien ik geen x- en y- coördinaten heb opgegeven voor de linkerbovenhoek). Het eerste commando zal uit de linkerbovenhoek snijden ( x = 0: y = 0 ).

Hier is een voorbeeld dat wiskundige uitdrukkingen als waarden gebruikt :

 ffmpeg -i input.mkv -vf "bijsnijden = w = 3/4 * in_w: h = 3/4 * in_h" output.mkv 

Met deze opdracht wordt de uitvoergrootte ingesteld op 3/4 van de invoer ( in_w, in_h ).

3. Video-rotatie

U kunt een video ook met de klok mee draaien met een waarde ( in radialen ). Om dingen gemakkelijker te maken, kunt u een waarde in graden opgeven en deze naar radialen converteren door die waarde te vermenigvuldigen met PI / 180 :

 ffmpeg -i input.avi -vf "roteren = 90 * PI / 180"

ffmpeg -i input.mp4 -vf "roteren = PI"

Het eerste commando zal de video 90 graden rechtsom draaien . Het tweede commando zet de video ondersteboven (PI rad = 180 graden).

4. Audio Channel Remapping

Dit kan handig zijn als je op de een of andere manier alleen audio in het rechteroor of iets dergelijks krijgt. Je kunt het geluid op beide oren (in dit specifieke geval) als volgt hoorbaar maken:

 ffmpeg -i input.mp3 -af "channelmap = 1-0 | 1-1" output.mp3 

Hiermee wordt het rechter ( 1 ) audiokanaal toegewezen aan zowel de linker ( ) en het rechter ( 1 ) audiokanaal. (het linkse cijfer vertegenwoordigt de invoer, het juiste cijfer staat voor de uitvoer ).

5. Audio volume vermenigvuldigen

U kunt het audiovolume vermenigvuldigen met een reëel getal (geheel getal of niet). U hoeft alleen de vermenigvuldigingsfactor op te geven:

 ffmpeg -i input.wav -af "volume = 1.5" output.wav

ffmpeg -i input.ogg -af "volume = 0, 75" output.ogg

Het eerste commando versterkt het volume 1, 5 keer. Het tweede commando maakt de audio 1/4 (0, 25) keer stiller .

Bonustip: Afspeelsnelheid aanpassen

Ik zal zowel de video (geen audio) als audiofilters opnemen voor deze taak.

1. Video

Het filter voor video is setpts (PTS = presentatietijdstempel). Dit werkt op een enigszins interessante manier. Aangezien we de PTS daadwerkelijk aanpassen, betekent een grotere coëfficiënt een langzamer resultaat en omgekeerd:

 ffmpeg -i input.mkv -vf "setpts = 0.5 * PTS" output.mkv

ffmpeg -i input.mp4 -vf "setpts = 2 * PTS" output, mp4

Zoals ik net uitlegde, verdubbelt de eerste opdracht de afspeelsnelheid en de tweede opdracht vertraagt de video tot 1/2 van de snelheid . EEN

2. Audio

Het filter hiervoor is atempo . Er is een kleine waarschuwing: het kan alleen waarden aannemen tussen 0, 5 (de helft van de snelheid) en 2 (de snelheid verdubbelen). Om dit te omzeilen, kun je atempo- filters aan elkaar koppelen :

 ffmpeg -i input.wav -af "atempo = 0, 75" output.wav

ffmpeg -i input.mp3 -af "atempo = 2.0, atempo = 2.0" ouutput.mp3

Het eerste commando vertraagt de audio met 1/4 van de oorspronkelijke snelheid. Het tweede commando versnelt de audio 4 keer (2 * 2).

Opmerking: om de afspeelsnelheid van video en audio te wijzigen met dezelfde opdracht, moet u naar filterfoto's kijken.

Afsluiten

In deze uitgebreide handleiding behandelde ik de installatie, het basisgebruik, het geavanceerde gebruik en de basisprincipes van filters.

Ik hoop dat dit een nuttig hulpmiddel kan zijn voor iedereen die ffmpeg wil uitproberen, voor iemand die ffmpeg voor meerdere taken wil gebruiken of zelfs voor iemand die bereid is om meer vertrouwd te raken met de uitgebreide functies van dit geweldige hulpprogramma.

Laat ons weten of je dit artikel nuttig vond in de reacties hieronder en vertel ons waar je ffmpeg voor gebruikt! We kijken uit naar eventuele toevoegingen van welke aard dan ook. Bedankt voor het lezen van onze blog en houd een artikel in de gaten voor meer complexe filtering . Genieten!

Aanbevolen

Epic Games Store is nu beschikbaar op Linux Dankzij Lutris
2019
Nuvola: Linux Desktop Music Player voor streamingdiensten
2019
Hoe installeer ik Windows 10 in VirtualBox onder Linux
2019