Posts filed under 'skrypty'

Wszystko w formacie XVID? Czemu nie!

Wielu z nas posiada w domu stacjonarne odtwarzacze DVD/DivX/XVID/MP3 itp. Wielu takze ceni sobie wygode ogladania plikow wideo ktore do tej pory “szły” tylko na komputerze. Jedynym minusem stacjonarek jest brak mozliwosci ogladania rzeczy skompresowanych nietypowymi kodekami, jak chocby pliki RMVB, WMV, MKV itp. Raczej nigdy nie doczekamy sie w tanich odtwarzaczach z hipermarketow mozliwosci obslugi tychze formatow. Zawsze mozemy skonwertowac potrzebne nam pliki z nietypowych formatow do jedynego slusznego formatu jak na dzisiejszy dzien - XVID. Pisze tak, poniewaz jest on najbardziej popularny ze wszystkich kodekow wideo i odtwarzany obecnie przez 90% stacjonarnych odtwarzaczy zapewniajac najlepsza kompresje materialu.

Oczywiscie mozemy korzystac z wielu narzedzi z graficznym interfejsem uzytkownika (jak chocby WinFF - bedacy nakladka graficzna na ffmpeg), ktore zjadaja dodatkowo zasoby naszego komputera, przez co proces konwersji wideo staje sie dluzszy. Ale po co nam ladny interfejs, skoro wszystko mozna zrobic w konsoli. I tu z pomoca przychodzi nam po raz kolejny bash.

Skrypt ktory nizej umiescilem jest przerobka skryptu Sir_Yaro do konwersji avi do mp4 dla iPODa. Skrypt odrobine zmodyfikowalem i teraz konwertuje on wszystkie pliki wideo w katalogu do formatu avi (XVID + dzwiek w mp3).

Skrypt nazwalem alltoXVID, mozna go pobrac —> stąd.

Wymagania:

1. mencoder z obsluga XVID oraz mp3

2. pakiet win32codecs - potrzebny przy konwersji z roznych dziwnych formatow do XVID

#!/bin/bash

# alltoXVID. Skrypt ktory konwertuje wszystkie pliki wideo w katalogu do formatu XVID w dwoch przebiegach, a dzwiek do mp3. Wideo domyslnie kodowane jest do bitrate =900, a audio do bitrate vbr = 128

mkdir wideo_przekodowane_do_XVID
mkdir skonczone

for x in *.*
do
if [ -e "$x.avi" ]
then
echo “Plik $x.avi istnieje, pomijam kodowanie”
else
echo “======================================”
echo ” (de)koduje plik $x”
echo “======================================”
echo “”
mencoder “$x” -oac copy -noskip -ovc xvid -xvidencopts pass=1:bitrate=900:me_quality=3:autoaspect -o /dev/null
mencoder “$x” -oac mp3lame -lameopts vbr=3:br=128 -noskip -ovc xvid -xvidencopts pass=2:bitrate=900:me_quality=3:autoaspect -o “$x.avi”

# Usuwanie konfliktowych plikow.
rm -f divx2pass.log

mv “$x.avi” “wideo_przekodowane_do_XVID”
mv “$x” “skonczone”
clear
fi
done

Oczywiscie skrypt pobieramy na dysk, albo zapisujemy go do pliku tekstowego. Nadajemy prawo uruchamiania. Zapisujemy plik pod nazwa np. alltoXVID, nastepnie kopiujemy do /usr/bin (zalecane), poniewaz skrypt posiada pewien blad, otóż po skonwertowaniu wszystkich plikow w danym katalogu skrypt probuje sam siebie skonwertowac, ale oczywiscie jest to niemozliwe, wiec wykonuje nastepne zadania skryptu, czyli kopiuje plik ze skryptem do katalogu “skonczone”. Dlatego zalecam wrzucic go do /usr/bin

Teraz po krotce omowie sposob uzywania skryptu. Jezeli skopiowalismy go do katalogu /usr/bin to w konsoli uruchamiamy go poprzez komende alltoXVID lub inna (zalezna od nazwy pliku ze skryptem). Natomiast jesli chcemy odpalic plik skryptu w katalogu gdzie mamy pliki wideo do skonwertowania to uruchamiamy konsole, przechodzimy do katalogu gdzie znajduje sie skrypt i wydajemy polecenie ./alltoXVID (lub inne, jesli nadalismy inna nazwe plikowi ze skryptem).

Krotki opis dzialania, skrypt wykonuje wsadową konwersje materialu wideo (wszystkich znalezionych w katalogu plikow) w dwoch przebiegach kodekiem XVID (bitrate domyslne 700 lub 900 kbps - zaleznie od wersji skryptu) oraz konwertuje dzwiek w pliku do mp3 (vbr bitrate 128 kbps). Skrypt po zakonczeniu tworzy dwa katalogi:

1. wideo_przekodowane_do_XVID

2. skonczone

Do katalogu trafiaja pliki ktore zostaly swiezo przekodowane do XVID, natomiast do katalogu skonczone trafiaja pliki, ktore juz zostaly “przerobione” przez skrypt (pliki w oryginalnym formacie, czyli WMV,MPEG,MKV,RMVB.

Po konwersji kazdego z plikow skrypt usuwa plik divx2pass.log, ktorego XVID uzywa do kodowania dwuprzebiegowego.

Kolejnym malym problemem z ktorym sobie nie poradzilem jest to, ze po skonwertowaniu pliki otrzymuja podwojne rozszerzenie, np film.mpg po konwersji wygladaja tak film.mpg.avi. Jakby ktos mial jakis pomysl jak sie pozbyc podwojnych rozszerzen to bylbym wdzieczny. Zapraszam do komentowania i proby rozwiniecia tego skryptu.

Skrypt w czasie pracy.


Add comment marzec 4, 2008

Skrypt do hurtowej zmiany nazw

Pragne podzielic sie z Wami skryptem ktory kiedys tam udalo mi sie sklecic, chociaz sam nie znam basha, ale na podstawie innego zrobilem taki oto prosty skrypt. Byl to pierwszy skrypt jaki udalo mi sie popełnić :)

Zamiana spacji na podkreslenia.

#!/bin/bash

(IFS=”n”; for i in *;do mv “$i” “${i// /_}”;done)

A to kolejny przydatny skrypt. Zmienia on spacje na kropki.

#!/bin/bash

(IFS=”n”; for i in *;do mv “$i” “${i// /.}”;done)

Oczywiscie kazdy skrypt zapisujemy do pliku tekstowego. Nadajemy mu nazwe np. spacje.na.podkreslenia.sh, a temu drugiemu np. spacje.na.kropki.sh. Ustawiamy prawa do wykonywania pliku jako programu. Wrzucamy i odpalamy komenda ./spacje.na.podkreslenia.sh w katalogu gdzie mamy pliki ktore chcemy zamienic.

Do czego sie moga przydac powyzsze skrypty? Przyklad. Mamy wiele plikow muzycznych ktore maja nazwy w stylu:

JakisTamArtysta_-_NumerUtworu_-_Album_-_TytulUtworu.mp3

po drobnej modyfikacji skryptu do postaci takiej:

#!/bin/bash

(IFS=”n”; for i in *;do mv “$i” “${i//_/ }”;done)

Otrzymamy pliki w postaci nam odpowiadajacej

JakisTamArtysta - NumerUtworu - Album - TytulUtworu

Inny przyklad. Mamy pliki sciagniete z jakiegos dziwnego serwera i w nazwach powtarza sie jakis dziwny znak np %20 wiec zamieniamy go na spacje. Mozemy także hurtowo zmienic sobie rozszerzenie plikow, jesli to komukolwiek jest potrzebne np. z mp3 na MP3 lub z avi na JAKIEKOLWIEK inne rozszerzenie. Mysle ze zastosowanie skryptu jest ograniczone tylko i wylacznie wyobraźnią uzytkownika.


Add comment marzec 1, 2008


Calendar

maj 2008
P W Ś C P S N
« kwi    
 1234
567891011
12131415161718
19202122232425
262728293031  

Posts by Month

Posts by Category