Felirat égetés mencoderel?

Fórumok

Üdv mindenkinek!

Olyan problémám lenne, hogy mencoderrel szoktam a feliratot ráégetni a filmjeimre, mivel az asztali lejátszón túl kicsi a betűméret és csak így lesz olvasható. Ez a módszer tökéletesen is működik, csak az a problémám, hogy csak egy magot használ a mencoder a kódolásnál, elég sokat olvastam a dolog után és mivel nekem XVID-be kell kódolnom, mert csak azt tudja lejátszani az asztali lejátszó ezért nem sikerült megoldani hogy mindkét magot használja a mencoder kódoláskor, mivel azt olvastam, hogy az XVID ezt nem támogatja. Sok féle módszerrel próbálkoztam, de semmilyen thread kapcsolóval nem sikerült működésre bírni a két magot. Sajnos így minden film kódolása kétszer annyi ideig tart.. :(
Ha esetleg lenne valakinek valami ötlete a problémára annak nagyon örülnék.

ui: A HUP-on is találtam már mencoderrel foglalkozó témát, de egyik sem tért ki erre a részre.

AMD X264-es processzorom van de 32bites Ubuntu 9.10-et használok. A mencodert repobol telepítettem fel!

Jelenleg így használom: mencoder film.avi -oac copy -ovc lavc -o film_sub.avi -sub film_felirat.srt -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc XVID -subcp iso-8859-2

Hozzászólások

Ha megoldást akarsz, akkor venned kell egy lejátszót ami az x264-et támogatja. Az ugyanis kihasználja a többmagos processzorok előnyét. Az xvid viszont nem. Ráadásul 64bites rendszeren bűn lassú is.
Vagy próbáld ki, hogy mpeg2-be kódolsz. Azt is viszi a legtöbb lejátszó. Igaz, az sem használja ki maradéktalanul a többszálú tömörítést, viszont így is sokkal gyorsabb, mint az xvid...

kodolj egyszerre ket filmet ;)

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Ha egyszerre két filmet kódolok, azt is egy magon osztja meg..

én egy ilyen szkriptet írtam, ami 4 magot használva kódol mkv filmet divx avi-ba. a filmet 4 negyedre osztja es az kódólást párhuzamosan indítja el. ha mind a 4 processz befejeződött, összefűzi 1 file-ba az egészet.


#!/bin/bash

clear

#AUDIO_ID=-2
#if [ ! $2 == "" ]; then 
#    AUDIO_ID=$2
#fi

BITRATE=8000
if [ ! $2 == "" ]; then 
    BITRATE=$2
fi

NAME=`echo $1 | sed 's/\.[^.]*$//'`
D1=`mkvinfo $1 | grep Duration: | cut -d" " -f4 | cut -d. -f1`
QL=$((D1/4))

declare -a pids

function encode_part {
    num=$1
    ss=$(((num-1)*QL))
    echo "encoding $num will start at $ss"
    rm -fr $num
    mkdir $num
    cd $num
    mencoder -o $NAME.avi -alang hun -msglevel all=-1 -endpos $QL -ss $ss -oac copy -ovc xvid -xvidencopts bitrate=$BITRATE:vhq=4:pass=2:turbo:max_key_interval=200 ../$NAME.mkv & pid=$!
    cd ../
    pids[$num]=$pid
    echo "encoding started with pid $pid"
}

echo "Filename: $NAME"
echo "Duration: $D1 seconds"
echo "Quarter length $QL seconds"
echo "Encoding with -aid $AUDIO_ID"

for i in `seq 1 4`;
do
    encode_part $i
done

echo "wait until all process ends"
wait ${pids[1]}
wait ${pids[2]}
wait ${pids[3]}
wait ${pids[4]}

mencoder -forceidx -oac copy -ovc copy -o $NAME.avi 1/$NAME.avi 2/$NAME.avi 3/$NAME.avi 4/$NAME.avi
rm -fr 1
rm -fr 2
rm -fr 3
rm -fr 4

exit

Elnézést a szkript guruktól, neten keresgetve lapátoltam össze a kódot. Biztos lehetne szebben is csinálni.

Üdv,
Gábor