Ako vystrihnúť a orezať video pomocou ffmpeg


Tento tutoriál vysvetľuje, ako vystrihnúť a orezať videá z príkazového riadku pomocou ffmpeg.

FFmpeg je multiplatformný open-source balík nástrojov a knižníc na úpravu multimédií a streamov z príkazového riadku. Podporuje kódovanie a dekódovanie väčšiny multimediálnych formátov vrátane nezvyčajných súborov. Po prečítaní tohto návodu, ktorý obsahuje postup a snímky obrazovky videa, budete vedieť, ako strihať a orezávať videá pomocou ffmpeg.

Inštalácia ffmpeg:

Ak chcete nainštalovať ffmpeg na distribúcie Linuxu založené na Debiane, použite príkaz apt, ako je znázornené v príklade nižšie.

sudo apt install ffmpeg

Ak chcete nainštalovať ffmpeg na Redhat/Centos, spustite nasledujúce príkazy:

yum localinstall
yum install ffmpeg ffmpeg-devel

Ako strihať videá pomocou ffmpeg:

Strihanie videí pomocou ffmpeg je pomerne jednoduchá, rýchla a nenáročná na zdroje pomocou ffmpeg. Stačí definovať počiatočný alebo koncový čas, prípadne oboje, ak je to potrebné, a výstupný súbor. Budem pracovať s týmto videom Linux Hint (trvanie 00:03:280), ktoré som si práve stiahol pre tento tutoriál.

Príkaz nižšie používa ffmpeg na vystrihnutie videa z druhého 00:00:05 zadaného príznakom -ss; toto je príznak na definovanie počiatočného bodu pre vaše nové video v prípade, že chcete časť začiatku vystrihnúť. Ak chcete vystrihnúť iba časť konca videa, tento príznak nemusíte použiť. Ako vidíte, formát časovania musí byť HH:MM:SS (hodiny, minúty, sekundy). Napríklad pre časovanie 2 minúty a 3 sekundy by ste mali zadať 00:02:03.

Príznak -i používaný na určenie súboru, ktorý sa má upraviť; v tomto prípade je súbor LinuxHint-vim.mp4.

Voľba -t sa používa na určenie konca nového súboru; v tomto prípade sa video skončí o 00:02:00. Podobne ako pri -ss, ak nechcete vystrihnúť časť konca videa, ale iba časť začiatku, nemusíte použiť tento príznak.

V tomto prípade sa na definovanie výstupného súboru používa príznak -c copy; v tomto prípade súbor editedvideo.mp4.

ffmpeg -ss 00:00:05 -i LinuxHint-vim.mp4 -t 00:02:00 -c copy editedvideo.mp4

Celá operácia trvala niekoľko sekúnd bez spotrebovania počítačových zdrojov.

Nasledujúci príklad ukazuje, ako vystrihnúť iba časť konca 00:03:28 sekundového videa. Preto vynechám možnosť -ss, pretože chcem zachovať počiatočný bod, a video som prestrihol o 00:02:00 implementáciou príznaku -t.

ffmpeg -i LinuxHint-vim.mp4 -t 00:02:00 -c copy editedvideo2.mp4

Na rozdiel od predchádzajúceho príkladu príkaz uvedený nižšie vystrihne iba časť videa začínajúceho pomocou príznaku -ss. V tomto prípade sa nový výstup spustí od 00:01:30.

ffmpeg -ss 00:01:30 -i LinuxHint-vim.mp4 -c copy editedvideo3.mp4

Ako môžete vidieť, strihanie videí pomocou ffmpeg je jednoduchý a rýchly proces.

Orezanie čiernych okrajov pomocou ffmpeg:

Táto časť návodu popisuje, ako orezať videá pomocou ffmpeg.

Pomocou ffmpeg sa môžete pokúsiť automaticky zistiť, ako orezať video, aby sa odstránili čierne okraje.

V tomto príklade použijem video s rozlíšením 320 × 240, ktoré vyzerá takto:

Príkaz nižšie sa pokúsi zistiť správne rozmery a polohy, aby bolo video správne orezané.

ffmpeg -i linux-foundation.mp4 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1

Ako môžete vidieť, ffmpeg vráti správnu šírku (320), výšku (208), X a Y pozície, aby bolo video správne orezané.

Pozícia X: Poloha X definuje počiatočný bod horizontálneho orezania od ľavého okraja, kde ľavý okraj je 0.

Pozícia Y: Y je počiatočný bod vertikálneho orezania, kde je horný okraj 0.

Príklad pod videom bude orezaný; môžete vidieť príznak -filter:v.

Príznak -filter implementuje filtračný graf, ktorý rozdeľuje vstupný tok, orezáva ho a prekrýva ho s iným streamovaním. Ako vidíte, rozmery a polohy definované v príkaze nižšie poskytuje predchádzajúci príkaz.

Môžete tiež vidieť, že príznak „-c copy“ bol vynechaný a názov výstupného súboru bol napísaný hneď za príznakom orezania.

ffmpeg -i linuxfoundation.mp4 -filter:v "crop=320:208:0:16" output.mp4

Ako vidíte, čierne okraje boli odstránené:

O orezaní videí pomocou ffmpeg:

Pomocou predchádzajúcej techniky môžete orezať ľubovoľnú časť videa, nielen čierne okraje.

Príkaz nižšie oreže predchádzajúce video a vráti obrázok s rozmermi 200 × 200, začínajúc 200 px zľava a 0 px od horného okraja.

fffmpeg -i output.mp4 -filter:v "crop=200:200:200:0" output2.mp4

A tu je orezané video:

Samozrejme, môžete definovať aj iné typy mier, ako napríklad obdĺžniky.

Video, na ktorom budeme pracovať (rovnaké ako prvá sekcia tutoriálu), vyzerá ako na obrázku nižšie.

V tomto prvom príklade definujeme iba výstupné rozmery, ale nie polohu. Ak nešpecifikujete polohu, ffmpeg automaticky oreže stred videa. V nižšie uvedenom príklade, v ktorom sú definované iba výška a šírka videa, ale žiadna poloha, ffmpeg orezá video a vráti orezaný výstup 500 × 500 stredu videa.

ffmpeg -i LinuxHint-vim.mp4 -filter:v "crop=500:500" LinuxHintvideo2.mp4

A získame orezaný výstup 500 x 500 pixelov:

V prípade potreby môžete použiť príkaz ffmpeg v kombinácii s grep na zistenie pôvodného rozlíšenia videa, ako je uvedené nižšie.

ffmpeg -i LinuxHint-vim.mp4 2>&1 | grep Video: | grep -Po '\d{3,5}x\d{3,5}'

Ak máte radi jednoduchosť a výkon ffmpeg, máte prístup k oficiálnej dokumentácii ffmpeg tu, kde sa dozviete o mnohých ďalších funkciách a funkciách dostupných na úpravu médií.

Záver:

Rezanie a orezávanie médií z príkazového riadku je veľmi jednoduché pomocou ffmpeg. Jednou z hlavných výhod ffmpeg je nízka spotreba zdrojov a vysoká rýchlosť. Tento tutoriál ukazuje, že každý používateľ Linuxu alebo akákoľvek osoba bez znalosti úpravy videa môže profesionálne upravovať videá v textovom režime tým, že sa naučí niekoľko príkazov a priateľskú syntax. FFmpeg je multiplatformný, čo z neho robí skvelý štandardný nástroj na úpravu video a audio súborov z príkazového riadku. FFmpeg je súčasťou všeobecne známych nástrojov, ako je prehrávač VLC, a bol zahrnutý do spracovania jadra pre iTunes a Youtube.

Dúfam, že tento návod bol užitočný. Pokračujte v sledovaní Linuxovej rady a získajte ďalšie tipy a návody pre Linux.

Súvisiace články: