A probléma Mondjuk, hogy van egy zsák DVD-nk (tényleg van), adja Isten találtunk hozzájuk .SRT feliratokat is és mindezt cakkumpúder csinosított formában szeretnénk felajánlani az iTunes librarynknak népgazdasági hasznosításra (egy üveg fröccs már bennem van, elnézést a hablatyért).
A megoldás
A feladatot két részre bontjuk: előbb hagyjuk a computerünket tömegesen konvertálni, aztán majd szerzünk az eredményhez metaadatot is, végül megszólítjuk iTunes komát is. Csapjunk bele!1. lépés: tömeges konverzió
Szóval nagyjából úgy, ahogy a fenti bagoly rajzolós HOWTO mutatja. Igaziból persze leszedünk egy HandbrakeCLI-t, bemásoljuk a /Applications mappánkba a binárist és megírjuk az alábbi scriptet:#!/bin/sh # # Handbrake gyipaci # lmdate 2010.07.05 # # Végigmegy rekurzívan egy könytáron és megkeresi a filmcim-hu{n}.srt, filmcim-en{g}.srt feliratfile-okat, # aztán ha igazán akarod, csinál neked soft subtitle-os m4v-ket az avi-jaidból. # # A script feltételezi, hogy ha csak egy, az avi file-lal megegyező nevű srt file-t talál, akkor abban magyar # subtitle lakik. # convert() { film="$1" base="${film%.*}" srt="$base".srt hu="$base"-hu.srt hun="$base"-hun.srt en="$base"-en.srt eng="$base"-eng.srt srthuc=0 srthu="" if [ -e "$srt" ]; then srthuc=1 srthu="$srt" elif [ -e "$hu" ]; then srthuc=1 srthu="$hu" elif [ -e "$hun" ]; then srthuc=1 srthu="$hun" fi srtenc=0 srten="" if [ -e "$en" ]; then srtenc=1 srten="$en" elif [ -e "$eng" ]; then srtenc=1 srten="$eng" fi let srtc=$srthuc+$srtenc srtfiles="" srtcodes="" srtlangs="" case $srtc in 0 ) ;; 1 ) if [ -s "$srthu" ]; then srtfiles="$srthu" srtcodes="WINDOWS-1250" srtlangs="hun" else srtfiles="$srten" srtcodes="ISO-8859-1" srtlangs="eng" fi ;; 2 ) srtfiles="$srthu","$srten" srtcodes="WINDOWS-1250,ISO-8859-1" srtlangs="hun,eng" ;; esac if [ $srtc -ne 0 ]; then echo Found $srtc subtitles: echo "$srtfiles" echo "$srtcodes" echo "$srtlangs" else echo No subtitles found. fi options="-e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500 -C 8" case $srtc in 0 ) # ha felirat nélkül is konvertálnál echo "" | $hbcli -v -i "$film" -o "$2" $options ;; 1 ) # ha konvertálnád a home videód akkor is, ha csak a default magyar felirat van meg hozzá echo "" | $hbcli -v -i "$film" -o "$2" $options --srt-file "$srtfiles" --srt-codeset "$srtcodes" --srt-lang "$srtlangs" ;; 2 ) # ha konvertálnád a home videód mind az angol, mind a magyar felirat birtokában a kétnyelvű családod számára echo "" | $hbcli -v -i "$film" -o "$2" $options --srt-file "$srtfiles" --srt-codeset "$srtcodes" --srt-lang "$srtlangs" ;; esac return } hbcli=/Applications/HandBrakeCLI source_dir="." input_file_type="avi" output_file_type="m4v" echo "# Using HandBrakeCLI at "$hbcli echo "# Using source directory "$source_dir echo "# Converting "$input_file_type" to "$output_file_type # Convert from one file to another convert() { # The beginning part, echo "" | , is really important. Without that, HandBrake exits the while loop. echo "" | $hbcli -i "$1" -o "$2" --preset="AppleTV 2" -C 8; } # Find the files and pipe the results into the read command. The read command properly handles spaces in directories and files names. find "$source_dir" -iname "*.$input_file_type" | while read in_file do echo "Processing…" echo ">Input "$in_file # Replace the file type out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_type/\1$output_file_type/g") echo ">Output "$out_file # Convert the file convert "$in_file" "$out_file" if [ $? != 0 ] then echo "$in_file had problems" >> handbrake-errors.log fi echo ">Finished "$out_file "\n\n" done echo "DONE CONVERTING FILES"
options=
kezdetű sorban a -C utáni számot kicseréljük a rendelkezésünkre álló CPU magok számára.
Egy folderbe bepakoljuk az eddig bután .avi formában tárolt filmjeinket / sorozatainkat, melléjük tesszük az .srt file-okat (ha ezt nem értjük, elolvassuk a scriptet, nem csak nyakló nélkül mentjük). Ha ez kész, nyitunk egy shellt, bemászunk a filmek könyvtárába és elindítjuk a scriptünket, majd a végén örülünk a sok szép új m4v file-nak.
Pingback: Media Center Szent Grál: raspbmc « eFi.blog