Home > Automation, Technology > Spajanje više video fajlova u jedan, i konverzija (II deo)

Spajanje više video fajlova u jedan, i konverzija (II deo)

No Gravatar

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!

Post to Twitter Tweet This Post Post to Reddit Reddit Post to StumbleUpon Stumble This Post

  1. emil redzepi
    August 30th, 2010 at 12:34 | #1

    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

  2. August 30th, 2010 at 13:01 | #2

    Pa nema lakse od ovoga. Ako imas linux, napishi mi e-mail pa da vidimo sta imas a sta nemas. beli0135 [AT] gmail com

  1. No trackbacks yet.

Twitter links powered by Tweet This v1.6.1, a WordPress plugin for Twitter.