FFmpeg je kolekcia slobodného software, ktorý slúži na editovanie, streamovanie a konverziu multimediálneho obsahu. FFmpeg je multiplatformový a je ho možné skompilovať aj pre MS Windows. My sme ale od linuxu, preto sa zameriame na linuxovú časť.
Inštalácia FFmpeg
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt-get update
sudo apt-get install ffmpeg
ffmpeg -version
ffmpeg version 4.1.3-0york1~14.04 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.4)
K inštalácii to je tak asi všetko. Posledný príkaz nám vytlačí nainštalovanú verziu FFmpeg. V našom prípade je to ver. 4.1.3-0york1~14.04
Prečo FFmpeg?
Čo ma viedlo k inštalácii FFmpeg? V smartfóne, alebo z IP kamery mám nejaké krátke video záznamy, ktoré si chcem trocha upraviť. Nechcel som inštalovať nejaké Full editačné nástroje, chcel som proste niečo malé a tak som siahol po FFmpeg. Možno budu niektorí prekvapený, ale FFmpeg je konzolový nástroj, čiže práca prebieha v konzole prostredníctvom príkazov.
Strih videa
Ja som konkrétne potreboval z videa vystrihnúť určitú sekvenciu bez enkódovania. Vstupné video malo dĺžku 62 sekúnd a ja som potreboval vystrihnúť sekvenciu od 17-tej sekundy až po 50-tu sekundu.
ffmpeg -i input_file.mov -ss 00:00:17 -t 00:00:33 -c copy output_file.mov
- -i – input > vstupný súbor
- -ss – čas začiatku strihu
- -t – čas trvania výsledného súboru
- -c – použitý kodek (copy (video sa kopíruje))
- – na konci je výstupný súbor
Spojenie videa
Spojenie videa je trocha odlišné. Teoreticky by mal fungovať podobny príkaz tomu, ale nefunguje a výstupný súbor obsahuje vždy len prvý vstupný súbor
ffmpeg -i 'concat:out_01.mov|out_02.mov|out_03.mov|out_04.mov' -vcodec copy -acodec copy output.mov
Preto som hľadal iné riešenie, ktoré by fungovalo a nakoniec som ho našiel 🙂 Majme napr. video súbory v domovskom adresári /home/meno/
- out_01.mov
- out_02.mov
- out_03.mov
- out_04.mov
Vytvoríme si obyčajný textový súbor a všetky súbory tam zapíšeme vrátane cesty.
nano /home/meno/join.txt
file /home/meno/out_01.mov
file /home/meno/out_02.mov
file /home/meno/out_03.mov
file /home/meno/out_04.mov
v terminály zadáme príkaz
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mov
Teraz sa všetky súbory spojili a vznikol výsledný súbor output.mov. Súbory do texťaku vkladáme podľa poradia ako ich chceme mať spojené.
Záver
Toto bol len stručný návod ako je možné multimediálne súbory postrihať a následne spojiť do jedného celku. S FFmpeg sa dá robiť toho oveľa viac, ale chce to čítať dokumentáciu a googliť rôzne exaples.