Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Spojení několika videí do jednoho  (Přečteno 4226 krát)

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1734
  • Dlouholetý uživatel Linuxu a open source obecně.
Spojení několika videí do jednoho
« kdy: 12 Února 2019, 14:24:14 »
Možná nesu dříví do lesa, ale potřeboval jsem narychlo spojit několik videí do jednoho a ověřil jsem přitom následující, zcela triviální postup s pomocí programu ffmpeg:

1) všechna videa nakopíruju do jednoho adresáře

2) změním názvy na souvislou vzrůstající číselnou řadu (např. v Krusaderu Soubor -> přejmenovat více položek a příslušné postupy). Změna názvu není nutná - jde o to, aby se videa ve výsledku správně časově  seřadila, nejlépe vyzkoušet, případně prohlédnout soubor mylist.txt zmiňovaný dále.

3) příkazem (v konzoli otevřené v adresáři s videi - třeba v Krusaderu, když stojím v popisovaném adresáři, tak Nástroje -> Spustit zde terminál nebo rovnou tlačítkem F2):
Kód: [Vybrat]
printf "file '%s'\n" ./*.mp4 > mylist.txtvytvořím seznam s názvem mylist.txt

4) příkazem (ve stejné, stále otevřené konzoli):
Kód: [Vybrat]
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4spojím všechna videa z adresáře a ze seznamu do jednoho s názvem output.mp4

Předpokladem je nainstalovaný program ffmpeg. Příklad je pro videa *.mp4 (nejčastěji z mobilu), ale funguje i pro jiné formáty. V příkazech je pak pochopitelně nutno změnit extenzi
Kód: [Vybrat]
mp4 na jinou (aktuální). Videa musejí být ve stejném rozlišení a orientaci (opět typicky pro několik videí natočených v různých okamžicích stejným zařízením). Prostě když chci z jednotlivých záběrů udělat "film"...

Zdroj: https://trac.ffmpeg.org/wiki/Concatenate

Celá věc se pochopitelně dá udělat i v nějakém grafickém videoeditoru, ale když chci rychlý a jednoduchý postup, tak dva příkazy v konzoli (které by se dokonce zřejmě daly sloučit do jednoho) jsou bezkonkurenční.

juwa2

  • Závislák
  • ***
  • Příspěvků: 4935
Re:Spojení několika videí do jednoho
« Odpověď #1 kdy: 12 Února 2019, 15:09:43 »
Bez vytváření .txt seznamu
Kód: [Vybrat]
ls video1 video2 video3 | perl -ne 'print "file $_"' | ffmpeg -f concat -i - -c copy output.mp4
Kdo nemá/nechce ffmpeg instalovat, stačí stáhnout tento archiv
https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
rozbalit a soubor ffmpeg a dát ho do složky s těmi videi.
« Poslední změna: 12 Února 2019, 15:12:04 od juwa2 »

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1734
  • Dlouholetý uživatel Linuxu a open source obecně.
Re:Spojení několika videí do jednoho
« Odpověď #2 kdy: 12 Února 2019, 15:12:38 »
Bez vytváření .txt seznamu
Kód: [Vybrat]
ls video1.mp4 video2.mp4 video3.mp4 | perl -ne 'print "file $_"' | ffmpeg -f concat -i - -c copy output.mp4

No to sice ano, ale když mám těch videí třeba 20 nebo víc, tak je trochu opruz do příkazu  vypisovat všechny dílčí soubory. Tím spíš, když se každý jmenuje úplně jinak (typicky z mobilu je to kombinace data a času.extenze). A hvězdičková konvence tam nefunguje - nebo jo?

Hledal a našel jsem právě postup, který to automatizuje nezávisle na množství spojovaných souborů a není přitom třeba žádný skript apod. (protože takové způsoby taky jsou). No a ffmpeg má snad skoro každý, koho nějakým způsobem zajímá práce s videem (kromě toho i tak bývá součástí jiných programů z kategorie video)...
« Poslední změna: 12 Února 2019, 15:17:48 od JirkaZ »

 

Provoz zaštiťuje spolek OpenAlt.