Spajanje više video fajlova u jedan, i konverzija (II deo)
U svom članku od 16-og marta Spajanje više video fajlova u jedan objasnio sam kako se jednom jednostavnom komandom mogu spojiti video fajlovi u jedan finalni. Kao komandu za to sam naveo
cat 1.mpg 2.mpg 3.mpg > final.mpg
Međutim, to baš i nije najsrećnije rešenje. Kada se video prebaci na Windows, Media player naročito, ne očitava dužinu trajanja fajla kako treba.
Bolje rešenje je sledeća komanda koja to radi baš kako treba:
mencoder VIDEO_1.MPG VIDEO_2.MPG -ovc copy -oac copy -of mpeg -o SPOJENI_VIDEO.mpg
Kako su fajlovi koje moja kamera pravi dosta veliki jer snima u visokom kvalitetu, koji meni uopste ne treba zato što ih gledam ili na kompjuteru ili na televizoru, volim da ih upakujem u MP4 format sa bitrate=2048k, a ne preko 9000 kako moja kamera snima. Tako upakovan fajl je pogodan i za upload na youtube.com, ako koristite taj servis. Prepakivanje se, takođe vrši jednom komandom:
ffmpeg -i SPOJENI_VIDEO.mpg -b 2048k -f mp4 FINALNI_VIDEO.mpg
Da se vratim na moj inicijalni problem:
Svaki put kad prekinem scenu, kamera napravi jedan MPG fajl. Tako, recimo, kad snimam nešto, prekinem i pocnem po 5-10 puta, dobijem toliko fajlova. Onda, pošto me mrzi da odmah skidam sa kamere i prepakivam, sledeće nedelje ili meseca snimam nešto drugo i tako kad rešim da sve prebacim, dobijem stotinak fajlova raznih datuma. Kakav haos…
Rešenje:
Jednostavna skripta koja će fajlove koje odaberem da spoji i prepakuje. Kako kamera snima fajlove sa imenima tipa M2U00500.MPG M2U00501.MPG M2U00502.MPG povećavajući broj sekvencijalno, došao sam na ideju da mojoj skripti dodam paremetre gde ću da navedem početni i krajnji broj željenih fajlova (zato što, recimo, brojevi 500-512 su jednog datuma, 513-528 drugog itd).
Iskreno, nisam programirao BASH skripte nikad, pa verujem da code može da bude bolji, ali dobar je bar za prepravku i prilagođavanje vašim potrebama.
#!/bin/bash
PREFIX="M2U00";
SUFFIX=".MPG";
STR="";
if [ "$1" = "--help" ]; then
echo "HELP: p1 = path, p2 = from_num, p3 = to_num, p4 = output_filename";
exit;
fi
let LO=$2;
let HI=$3;
STR="";
for ((c=$LO; c<=$HI; c++ )) do
STR=$STR$1$PREFIX$c$SUFFIX" ";
done
mencoder $STR -ovc copy -oac copy -of mpeg -o output.mpg
ffmpeg -i output.mpg -b 2048k -f mp4 $4
rm output.mpg
(ako kopirate, snimite je kao fajl, recimo "konvert.sh", i ne zaboravite da joj date izvršnu dozvolu: "chmod +x konvert.sh")
Kako skripta radi?
Ocekuje 4 parametra, od kojih je prvi putanja do video fajlova, drugi i treći su brojevi od-do, a četvrti je ime finalnog video fajla. Tako će komanda izgledati ovako:
./konvert.sh /home/korisnik/video/ 500 512 deca_u_parku.mpg
Ona će napraviti tekst "/home/korisnik/video/M2U00500.MPG /home/korisnik/video/M2U00501.MPG ...(pa do 512)" i ubaciti ga u "mencoder" komandu koja će napraviti fajl "output.mpg", koji ću prepakovati "ffmpeg" komandom u ime fajla "deca_u_parku.mpg" i na kraju, obrisati "output.mpg".
Voila! Sad mi je dosta jednostavnije da sredim nered na kameri...
If you enjoyed this post, make sure you subscribe to my RSS feed!



kod mene je to isto problem ali ja na zalost memam to znanje da uradim ovo sto si napisao dali ima neki laksi nacin ili dali mozes nekako bolje da mi pojasnos kako da odradim ovako kako si ti napisao hvala
Pa nema lakse od ovoga. Ako imas linux, napishi mi e-mail pa da vidimo sta imas a sta nemas. beli0135 [AT] gmail com