V této příručce vysvětlím, jak používat multimediální rámec FFmpeg k provádění různých operací překódování zvuku, videa a převodu s příklady. Zkompiloval jsem nejběžněji a často používaných 20+ FFmpeg příkazů pro začátečníky.
Tuto příručku budu průběžně aktualizovat přidáváním dalších příkladů čas od času. Uložte si tohoto průvodce do záložek a vraťte se za chvíli a zkontrolujte aktualizace. Pojďme začít, ano?
Nainstalujte FFmpeg v Linuxu
Pokud jste do svého systému Linux ještě nenainstalovali FFmpeg, postupujte podle následujícího průvodce.
- Nainstalujte FFmpeg v systému Linux
Příkazy FFmpeg s příklady
Typická syntaxe příkazu FFmpeg je:
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
Nyní se podíváme na některé důležité a užitečné příkazy FFmpeg.
1. Získání informací o audio/video souboru
Chcete-li zobrazit podrobnosti o mediálním souboru, spusťte:
$ ffmpeg -i video.mp4
Ukázkový výstup:
ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8.2.1 (GCC) 20181127 configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3 libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.20.100 Duration: 00:00:28.79, start: 0.000000, bitrate: 454 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], 318 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019. Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019. At least one output file must be specified
Jak vidíte ve výše uvedeném výstupu, FFmpeg zobrazuje informace o mediálním souboru spolu s podrobnostmi FFmpeg, jako je verze, podrobnosti o konfiguraci, upozornění na autorská práva, možnosti sestavení a knihovny atd.
Pokud nechcete vidět banner FFmpeg a další podrobnosti, ale pouze informace o mediálním souboru, použijte -hide_banner
příznak jako níže.
$ ffmpeg -i video.mp4 -hide_banner
Ukázkový výstup:
Vidět? Nyní zobrazuje pouze podrobnosti o mediálním souboru.
Doporučené čtení:
- Zobrazení informací o mediálních souborech v systému Linux pomocí MediaInfo
2. Převod video souborů do různých formátů
Protože FFmpeg je funkčně bohatý a výkonný audio a video konvertor, je možné převádět mediální soubory mezi různými formáty. Řekněme například, chcete-li převést mp4
soubor do avi
soubor , spustit:
$ ffmpeg -i video.mp4 video.avi
Podobně můžete převádět mediální soubory do libovolného formátu dle vašeho výběru.
Chcete-li například převést YouTube flv
naformátujte videa na mpeg
formát, spusťte:
$ ffmpeg -i video.flv video.mpeg
Pokud chcete zachovat kvalitu zdrojového video souboru, použijte '-qscale 0'
parametr:
$ ffmpeg -i input.webm -qscale 0 output.mp4
Chcete-li zkontrolovat seznam podporovaných formátů pomocí FFmpeg, spusťte:
$ ffmpeg -formats
3. Převod video souborů na zvukové soubory
Chcete-li převést video soubor na zvukový soubor, stačí zadat výstupní formát jako .mp3
, nebo .ogg
, nebo jakékoli jiné audio formáty.
Výše uvedený příkaz převede input.mp4
video soubor do output.mp3
zvukový soubor.
$ ffmpeg -i input.mp4 -vn output.mp3
Můžete také použít různé možnosti překódování zvuku do výstupního souboru, jak je uvedeno níže.
$ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
Tady,
-vn
- Označuje, že jsme ve výstupním souboru zakázali nahrávání videa.-ar
- Nastavte zvukovou frekvenci výstupního souboru. Běžně používané hodnoty jsou22050
,44100
,48000
Hz.-ac
– Nastavte počet zvukových kanálů.-ab
- Označuje přenosovou rychlost zvuku.-f
- Formát výstupního souboru. V našem případě je tomp3
formát.
Výše uvedený příkaz zobrazí varovnou zprávu jako níže.
[libmp3lame @ 0x5589ed539240] Bitrate 320 is extremely low, maybe you mean 320k The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Je to proto, že jsme dali 320
bitů/sekundu jako datový tok, který je velmi nízký. Tím se vytvoří menší výstupní soubor. Pro nejlepší kvalitu výstupu použijte hodnotu bitrate 320k
místo pouhých 320
.
4. Změňte hlasitost zvukových souborů
FFmpeg nám umožňuje změnit hlasitost zvukového souboru pomocí "volume filter"
možnost.
Například následující příkaz sníží hlasitost na polovinu.
$ ffmpeg -i input.mp3 -af 'volume=0.5' output.mp3
Podobně můžeme zvýšit hlasitost, jak je uvedeno níže:
$ ffmpeg -i input.mp3 -af 'volume=1.5' output.mp3
5. Změna rozlišení souborů videa
Pokud chcete nastavit určité rozlišení pro video soubor, můžete použít následující příkaz:
$ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
Nebo,
$ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4
Výše uvedený příkaz nastaví rozlišení daného video souboru na 1280x720
.
Podobně převeďte výše uvedený soubor na 640x480
velikost, běh:
$ ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4
Nebo,
$ ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4
Tento trik vám pomůže škálovat vaše video soubory na menší zobrazovací zařízení, jako jsou tablety a mobily.
6. Komprese video souborů
Vždy je dobré zmenšit velikost mediálních souborů na menší velikost, abyste ušetřili místo na disku.
Následující příkaz zkomprimuje a zmenší velikost výstupního souboru.
$ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
Pamatujte, že pokud se pokusíte zmenšit velikost souboru videa, ztratíte kvalitu. Tento crf
můžete snížit hodnotu na 23
nebo nižší, pokud 24
je příliš agresivní.
Můžete také zvuk trochu překódovat a upravit jej na stereo, aby se zmenšila velikost tím, že přidáte následující možnosti.
-ac 2 -c:a aac -strict -2 -b:a 128k
7. Komprese zvukových souborů
Stejně jako při kompresi souborů videa můžete také komprimovat zvukové soubory pomocí -ab
příznak, aby se ušetřilo místo na disku.
Řekněme, že máte zvukový soubor 320
přenosová rychlost kbps. Chcete jej zkomprimovat změnou datového toku na jakoukoli nižší hodnotu, jak je uvedeno níže.
$ ffmpeg -i input.mp3 -ab 128 output.mp3
Seznam různých dostupných datových toků zvuku je:
- 96 kb/s
- 112 kb/s
- 128 kb/s
- 160 kb/s
- 192 kb/s
- 256 kb/s
- 320 kb/s
8. Odebrání audio streamu z video souboru
Pokud nechcete zvuk ze souboru videa, použijte -an vlajka.
$ ffmpeg -i input.mp4 -an output.mp4
Zde 'an'
signalizuje, že není záznam zvuku. Jinými slovy, tato možnost ztlumí zvuk.
Výše uvedený příkaz vrátí zpět všechny příznaky související se zvukem.
9. Odebrání datového proudu videa z mediálního souboru
Podobně, pokud nechcete video stream, můžete jej snadno odstranit z mediálního souboru pomocí 'vn'
vlajka. vn znamená žádné nahrávání videa. Jinými slovy, tento příkaz převede daný mediální soubor na zvukový soubor.
Následující příkaz odstraní video z daného mediálního souboru.
$ ffmpeg -i input.mp4 -vn output.mp3
Můžete také zmínit bitovou rychlost výstupního souboru pomocí '-ab'
příznak, jak je znázorněno v následujícím příkladu.
$ ffmpeg -i input.mp4 -vn -ab 320 output.mp3
10. Extrahování obrázků z videa
Další užitečnou funkcí FFmpeg je, že můžeme snadno extrahovat obrázky z video souboru. To může být velmi užitečné, pokud chcete vytvořit fotoalbum z video souboru.
Chcete-li extrahovat obrázky ze souboru videa, použijte následující příkaz:
$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png
Tady,
-r
- Nastavte snímkovou frekvenci. Tedy počet snímků, které mají být extrahovány do obrázků za sekundu. Výchozí hodnota je25
.-f
- Označuje výstupní formát, tj. v našem případě formát obrázku.image-%2d.png
- Označuje, jak chceme extrahované obrázky pojmenovat. V tomto případě by názvy měly začínat jakoimage-01.png
,image-02.png
,image-03.png
a tak dále. Pokud používáte%3d
, pak názvy obrázků budou začínat jakoimage-001.png
,image-002.png
a tak dále.
11. Oříznutí videí
FFMpeg umožňuje oříznout daný mediální soubor v libovolném rozměru dle našeho výběru.
Syntaxe pro oříznutí souboru videa je uvedena níže:
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
Tady,
input.mp4
- zdrojový soubor videa.-filter:v
- Označuje filtr videa.crop
- Označuje filtr oříznutí.w
- Šířka obdélníku, který chceme oříznout ze zdrojového videa.h
- Výška obdélníku.x
- x souřadnice obdélníku, který chceme ze zdrojového videa oříznout.y
- souřadnice y obdélníku.
Řekněme, že chcete video o šířce 640
pixelů a výška 480
pixelů , z pozice (200,150
) , příkaz by byl:
$ ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4
Upozorňujeme, že oříznutí videí ovlivní kvalitu. Nedělejte to, pokud to není nutné.
12. Převeďte konkrétní část videa
Někdy můžete chtít převést pouze určitou část (trvání) video souboru do jiného formátu. Řekněme například, že následující příkaz převede první 10
sekund daného souboru video.mp4 do formátu video.avi.
$ ffmpeg -i input.mp4 -t 10 output.avi
Zde uvedeme čas v sekundách. Také je možné zadat čas v hh.mm.ss
formát.
13. Nastavte poměr stran na video
Poměr stran video souboru můžete nastavit pomocí -aspect
příznak jako níže.
$ ffmpeg -i input.mp4 -aspect 16:9 output.mp4
Běžně používané poměry stran jsou:
- 16:9
- 4:3
- 16:10
- 5:4
- 2:21:1
- 2:35:1
- 2:39:1
14. Přidání obrázku plakátu do mediálních souborů
Obrázky plakátů můžete přidat do svých souborů, takže se obrázky zobrazí při přehrávání audio nebo video souborů. To by mohlo být užitečné pro hostování zvukových souborů na webových stránkách pro hostování nebo sdílení videa.
$ ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
15. Ořízněte mediální soubor pomocí časů zahájení a ukončení
Chcete-li zkrátit video na menší klip pomocí časů začátku a konce, můžeme použít následující příkaz.
$ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
Tady,
--s
- Označuje čas začátku videoklipu. V našem příkladu je čas zahájení 50. sekunda.-t
- Označuje celkovou dobu trvání.
To je velmi užitečné, když chcete vyjmout část z audio nebo video souboru pomocí počátečního a koncového času.
Podobně můžeme oříznout zvukový soubor, jak je uvedeno níže.
$ ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
16. Rozdělte audio/video soubory na více částí
Některé webové stránky vám umožní nahrát pouze určitou velikost videa. Například Whatsapp povolí pouze 15
sekundová videa, která se mají nastavit jako stavová zpráva pro uživatele v Indii. V takových případech můžete velké video soubory rozdělit na několik menších částí, jak je uvedeno níže.
$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
Zde -t 00:00:30
označuje část, která je vytvořena od začátku videa do 30. sekundy videa. -ss 00:00:30
zobrazuje počáteční časovou značku pro další část videa. To znamená, že 2. část začne od 30. sekundy a bude pokračovat až do konce původního video souboru.
Recommended Download - Free Guide: "How to Start Your Own Successful Podcast"
17. Spojení nebo sloučení více audio/video částí do jedné
FFmpeg také spojí více částí videa a vytvoří jeden soubor videa.
Vytvořte join.txt
soubor, který obsahuje přesné cesty k souborům, ke kterým se chcete připojit. Všechny soubory by měly mít stejný formát (stejný kodek). Cesta ke všem souborům by měla být uvedena jeden po druhém, jak je uvedeno níže.
file /home/sk/myvideos/part1.mp4 file /home/sk/myvideos/part2.mp4 file /home/sk/myvideos/part3.mp4 file /home/sk/myvideos/part4.mp4
Nyní spojte všechny soubory pomocí příkazu:
$ ffmpeg -f concat -i join.txt -c copy output.mp4
Pokud se zobrazí chyba podobná níže;
[concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4' join.txt: Operation not permitted
Přidejte "-safe 0"
:
$ ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
Výše uvedený příkaz se připojí k part1.mp4
, part2.mp4
, part3.mp4
a part4.mp4
soubory do jednoho souboru s názvem "output.mp4"
.
Případně můžete použít následující jednořádkový příkaz ke spojení všech souborů v adresáři. Přejděte do adresáře, kde máte soubory, a spusťte následující příkaz pro spojení souborů s názvem audio1.mp3
, audio2,mp3
a audio3.mp3
do output.mp3
.
$ ffmpeg -i "concat:audio1.mp3|audio2.mp3|audio3.mp3" -c copy output.mp3
18. Přidání titulků k video souboru
Můžeme také přidat titulky k video souboru pomocí FFmpeg. Stáhněte si správné titulky pro své video a přidejte je do svého videa, jak je uvedeno níže.
$ fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
19. Náhled nebo testování video nebo audio souborů
Možná budete chtít zobrazit náhled, abyste ověřili nebo otestovali, zda byl výstupní soubor správně překódován nebo ne. Chcete-li to provést, můžete jej přehrát ze svého terminálu příkazem:
$ ffplay video.mp4
Podobně můžete otestovat zvukové soubory, jak je uvedeno níže.
$ ffplay audio.mp3
20. Zvýšení/snížení rychlosti přehrávání videa
FFmpeg umožňuje upravit rychlost přehrávání videa.
Chcete-li zvýšit rychlost přehrávání videa, spusťte:
$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
Příkaz zdvojnásobí rychlost videa.
Chcete-li video zpomalit, musíte použít násobitel větší než 1
. Chcete-li snížit rychlost přehrávání, spusťte:
$ ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
21. Zvýšit/snížit rychlost přehrávání zvuku
Chcete-li zvýšit nebo snížit rychlost přehrávání zvuku, použijte "atempo"
zvukový filtr. Následující příkaz zdvojnásobí rychlost zvuku.
$ ffmpeg -i input.mp4 -filter:a "atempo=2.0" -vn output.mp4
Můžete použít libovolnou hodnotu mezi 0.5
a 2.0
pro zvuk.
22. Vytvořte animovaný GIF
Obrázky GIF používáme téměř na všech sociálních a profesních sítích pro různé účely. Pomocí FFmpeg můžeme snadno a rychle vytvářet animované video soubory.
Následující průvodce vysvětluje, jak vytvořit animovaný soubor GIF pomocí FFmpeg a ImageMagick v systémech Linux a Unix.
- Jak vytvořit animovaný GIF v systému Linux
Doporučené čtení:
- Gifski – multiplatformní vysoce kvalitní kodér GIF
23. Vytvářejte videa ze souborů PDF
Během let jsem shromáždil mnoho souborů PDF, většinou linuxových výukových programů, a uložil je do svého počítače Tablet PC. Někdy si připadám líný je číst z tabletu.
Rozhodl jsem se tedy vytvořit video ze souborů PDF a sledovat ho na velké obrazovce, jako je televize nebo počítač. Pokud jste někdy přemýšleli, jak vytvořit filmový soubor ze sbírky souborů PDF, pomůže vám následující průvodce.
- Jak vytvořit video ze souborů PDF v systému Linux
24. Otočit videa
Pokud máte videosoubory s jinou orientací (na výšku nebo na šířku), můžete je otočit, jak je popsáno v následující příručce.
- Jak otočit videa pomocí FFMpeg z příkazového řádku
25. Převést videa do formátu videa WhatsApp
WhatsApp některá videa nepodporuje. Nemůžete je sdílet se svými kontakty ani je nastavit do stavu WhatsApp. Bez obav! Můžeme snadno převést videa ve formátu videa podporovaného WhatsApp pomocí FFmpeg, jak je popsáno v následujícím odkazu.
- Převeďte videa do formátu videa WhatsApp pomocí FFmpeg
26. Přibližujte a oddalujte videa
FFmpeg má spoustu užitečných filtrů pro provedení konkrétního úkolu. Jedním z nich je zoompan. Pomocí zoompan filtru můžeme snadno přibližovat a oddalovat každých X sekund periodicky. Další podrobnosti naleznete na následujícím odkazu:
- Jak přiblížit a oddálit videa pomocí FFmpeg
27. Získání nápovědy
V této příručce jsem pokryl nejběžněji používané příkazy FFmpeg. Má mnohem více různých možností k provádění různých pokročilých funkcí. Chcete-li se o něm dozvědět více, přejděte na manuálovou stránku.
$ man ffmpeg
Související čtení:
- Výukový program YouTube-dl s příklady pro začátečníky
A to je vše. Doufám, že vám tato příručka poskytla dostatek příkladů příkazů FFmpeg, abyste mohli začít s FFmpeg.