Voltakeppen mencoder/ffmpeg : az egyiknel ha meghivom scriptbol oke, masiknal nem.
UPDATE: koszonom, ffmpeg "-nostdin" kapcsoloja volt a megoldas.
(Csak most tudtam kirpobalni)
- 3839 megtekintés
Hozzászólások
Volt egy ilyen kis scriptem
#!/bin/bash
mkdir AVI
while read
do
rm frameno.avi
rm divx2pass.log
c=$(echo $REPLY | awk '{print $1}')
v=$(echo $REPLY | awk '{print $2}')
a=$(echo $REPLY | awk '{print $3}')
nice -n +5 mencoder $c -mc 0 -oac mp3lame -ovc frameno -o frameno.avi -lameopts cbr:br=$a 1> $c.0.log 2>&1
echo "$c 0. menet kesz" >> code.log
nice -n +5 mencoder $c -oac copy -mc 0 -ovc xvid -o AVI/$c -xvidencopts bitrate=$v:pass=1 1> $c.1.log 2>&1
echo "$c 1. menet kesz" >> code.log
nice -n +5 mencoder $c -oac copy -mc 0 -ovc xvid -o AVI/$c -xvidencopts bitrate=$v:pass=2 1> $c.2.log 2>&1
echo "$c 2. menet kesz" >> code.log
done < bitrate.avi.log
exit 0
Gyonyoruen mukodott, amig az mencoder jo volt (csomagbol rakva nem lepett ki a kodolas vegen, CTRL-C kellett neki, leforditottam, erre leszarja, hogy milyen bitratat allitok be neki, eldonti. Igy aztan 900 helyett csinal pl. 400-as bitrataval nezhetetlen filmet)
while read / done < filenev segitsegevel soronkent olvasta be, a fileban fel volt sorolva, hogy
cim video_br audio_br
Mukodott.
Mencoder hulyesegei utan megprobtalm ffmpeg-gel
mkdir AVI2
while read
do
rm ffmpeg2pass-0.log
c=$(echo $REPLY | awk '{print $1}')
v=$(echo $REPLY | awk '{print $2}')
a=$(echo $REPLY | awk '{print $3}')
ffmpeg -i $c -b:v $v"k" -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null > $c"_1.log" 2>&1
echo "elso kor error:" $?
ffmpeg -i $c -b:v $v"k" -vcodec libxvid -acodec libmp3lame -ab $a"k" -pass 2 -f avi AVI2/$c.avi > $c"_2.log" 2>&1
echo "ketto kor error:" $?
echo $c kesz
sleep 60
echo "jon a kovetkezo"
done < bitrate.avi.log
Es ennyi. Csak egyetlen filet csinal meg. Azt szepen, de nem megy a kovetkezore. Mindket pass-ban nulla az error, tgehat nem az ffmpeg hal meg. Csak egyszeruen nem csinalja a kovetkezo filmet.
Otlet? (Eleg sokszor hasznalom a fenti while read; do; done < file strukturat, meg sose volt ilyen gondom, ez az elso es egyszeruen nem ertem)
--
http://www.micros~1
- A hozzászóláshoz be kell jelentkezni
a ffmpeg benyeli az stdin-ről a sorokat, amit a 'while read'-nek kéne.
próbald ki
ffmpeg paraméterek </dev/null >log 2>&1
átirányításokkal!
és ha már idézőjelezést használsz konstansokhoz ("_1.log", "k"), akkor a változót is tedd idézőjelbe mert igazán csak annak kell az idézőjel (ami egyben tartja IFS esetén).
tehát pl
... > "${c}_1.log"
... -b:v "${v}k" ...
(bash máshogy token-izál, mint az alacsonyszintű nyelvek, ő nem tudja hogy mi változó és konstans, csak behelyettesít)
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Koszi.
Nem akartam idezojelezni, csak sajna a $ak nem volt megfelelo :) Gondolkodni sem akartam (munkaidon kivul volt :) igy megprobaltam, hogy a suffixet rakom idezojelbe, bar vmi azt sugta, a valtozot kellene. De mukodott, ennyi eleg volt.
- A hozzászóláshoz be kell jelentkezni
Ó, ezt én is megszívtam, erre tudom a választ, azt hiszem. Mindjárt kikeresem a manualban, addig légy türelemmel. Amúgy valami olyasmi lesz, hogy az ffmpeg vár az stdin-ről valamit, és megeszi a read elől a fileneveidet, de ezt ki lehet kapcsolni nála.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
ffmpeg -nostdin egyéb paraméterek
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Koszi!
- A hozzászóláshoz be kell jelentkezni
Én is előszeretettel használom a read-et paraméter nélkül, s a végén a $REPLY-t, de itt lehet, egyszerűbb volna a while read c v a; do szerkezet, és kimaradna röpke 3 db awk hívás.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
read c v a rest
lehet h van 4. mező is a bitrate.avi.log-ban
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Szinten koszi.
- A hozzászóláshoz be kell jelentkezni
Koszi, ezt nem tudtam. Voltakeppen par evvel ezelott a fentit is itt a hupon olvastam.
Szoval lehet mezonkent is, ez jo hir.
- A hozzászóláshoz be kell jelentkezni