Dnes som spravil skript na pohodlnú konverziu videa pomocou ffmpeg. Predtým ho ale treba nainštalovať (kvôli uzavretým kodekom), všetko funguje pre Lucid...
Riaďte sa perfektným návodom na stránke
http://howto.blbosti.com/2010/03/ubuntu-9-10-compiling-ffmpeg-with-x264/Avšak pozor!
1. Pre korektné fungovanie progressbaru v mojom skripte treba urobiť drobný patch - predtým ako v adresári ffmpeg spustíte make upravte súbor ffmpeg.c a riadok cca 1487:
fprintf(stderr, "%s \r", buf);
Upravte na:
fprintf(stderr, "%s \n", buf);
(Áno, stačí zmeniť jediný znak

)
potom môžete make-núť
2. V Ubuntu Lucid Lynx mi po inštalácii ponúklo upgrade balíčka na "najnovší" - v skutočnosti starší a bez kodekov, aby ste zabránili nepríjemnosti (ktorá sa stala mne) musíte Ubuntu presvedčiť že ten váš je ten nový - nájdie si v synapticu ktorá verzia je podľa neho najnovšia a použite tú - v dobe písania tohoto príspevku som nahradil:
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`" --backup=no --default
za
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:0.5.1-1ubuntu1-1" --backup=no --default
V prípade otázok napíšte...
Teraz k samotnému skriptu: odporúčam uložiť do adresára ~/.gnome2/nautilus-scripts/ (alebo jeho podadresára), vďaka čomu ho budete môcť spúšťať z nautilusu pomocou pravého tlačítka myši (môžete označiť viac súborov naraz)
Skript:
#!/bin/bash
# Skript na (polo)automatickú konverziu videa
# Vytvoril Habo <martin(dot)habovstiak(at)gmail(dot)com>
# Skript je vydaný pod licenciou GPL v3 - môžete ho upraviť, šíriť ale nevzťahuje sa naň záruka
# Info o GPL: http://www.gnu.org/licenses/gpl.html
if DESTDIR=$(zenity --file-selection --directory --title="Konverzia videa, zvoľte výstupný adresár" --filename="/media/"); #Užívateľ zvolí výstupný adresár
then
MAX=$# #Zapamätáme si koľko súborov chceme konvertovať
while [ $# -gt 0 ]; #V cykle konvertujeme všetky súbory
do
LENGTH=`ffmpeg -i $1 2>&1 | grep Duration | sed -e 's/,.*$//' | sed -e 's/^[^:]*: //'`
SECS=$(expr $(echo $LENGTH | sed -e 's/:.*$//') '*' 3600 + $(echo $LENGTH | sed -e 's/^[^:]*://' | sed -e 's/:.*$//') '*' 60 + 1 + $(echo $LENGTH | sed -e 's/^.*://' | sed -e 's/\..*$//')) #Zistíme dĺžku videa v sekundách
exec 3> >(zenity --progress --title="Konverzia videa" --text="Konvertujem súbor $(expr $MAX - $# + 1)/$MAX: $1" --percentage=0 --auto-close --width=300 || killall ffmpeg) #Vytvoríme progressbar
ffmpeg -y -i "$1" -s qvga -r 15 -b 400000 -ar 48000 -ab 63k -ac 2 -acodec libfaac -f mp4 "$DESTDIR/$(echo $1 | sed -re 's/(\.[^.]*)?$/.mp4/' | sed -e 's/^.*\///g')" 2>&1 | awk 'BEGIN { videolength = '$SECS' }
$0 ~ /^frame=/ { line = $0
gsub(/^.*time=/,"",line)
gsub(/\..*$/,"",line)
percent = 100 * line / videolength
print percent
fflush() }' >&3 #Konverzia a spracovanie výstupu ffmpegu
echo 100 >&3 #Kvôli nepresnostiam výpočtu...
shift #Presunieme sa na ďalší súbor
done
fi
zenity --info --title="Konverzia" --text="Konverzia dokončená." #Informujeme používateľa
Nezabudnite povoliť spúšťanie skriptu (chmod +x cesta/k/skriptu)
Tento skript je optimalizovaný tak, aby skonvertoval video do formátu čo najvhodnejšieho pre mobil Nokia 6120 classic, ak máte iný mobil, upravte si skript podľa jeho špecifikácie.
Odporúčam vždy použiť libfaac namiesto aac - kvalita je VÝRAZNE vyššia
Sťahovanie z youtube (a iných flash videí) s okamžitou konverziou:
/cesta/k/skriptu.sh /tmp/Flash*
Odporúčam vytvoriť klávesovú skratku (Systém -> Predvoľby -> Klávesové skratky) avšak keďže tento program escapuje špeciálne znaky treba príkaz napísať takto:
bash -c "/cesta/k/skriptu.sh /tmp/Flash*"
Ak máte aktívne html5 bude to problém, pretože to funguje inak. Odporúčam otvoriť okno inkognito v prehliadači google-chrome/chromium a necať načítať video tam (html5 bude deaktivované)
Skript by bolo ešte vylepšiť; pracujem na "sprievodcovi konverziou", ktorý vás krok za krokom prevedie nastaveniami ffmpegu a skonvertuje - kto má záujem môže pomôcť.
V prípade akýchkoľvek otázok napíšte tu.
