Itsellänikin ongelma näkyy vaan Cinelerrassa. Muut ohjelmat näyttävät tuon .mov-tiedoston oikein, mutta Cinelerra keksii tuohon alkuun vaalean juovan, joka sitten siirtää loppupäätä eteenpäin, jolloin videon paikka muuttuu.
Selvennetääs taustoja hieman. Minulla siis on Canon FS-100 -videokamera, joka tuottaa lomitettua PAL-kuvaa, siis 25i:tä. Sille on tarkoitus tehdä kohinanpoisto, lomituksen poisto sekä muunnos .mov-muotoon mahdollisimman pienellä pakkauksella, jotta sitä olisi näppärä editoida. Haluan nimenomaan tuosta lomituksesta eroon, jotta se ei häiritse editoitaessa, Samaten haluan äänen omaan ac3-tiedostoon.
Seuraavassa on scripti. Siinä varmasti on parantamisen varaa, mutta se tekee juuri nyt sen, mitä pitääkin. Kamerasta tulee aina jonkin verran kohinaa ja olen löytänyt nyt sellaiset arvot yuvdenoiselle, että kohina häviää verottamatta terävyytä juuri lainkaan. Tämän voisi varmaan putkittaa, jolloin gigaluokan yuv-tiedostoja ei syntyisi, mutta minusta on hauska seurata, kun tiedostot kasvavat. Levytilaakin on riittävästi. Silti parannusehdotuksia otetaan vastaan ja luonnollisesti kuka tahansa, joka omistaa vastaavan kameran, voipi ihan vapaasti käyttää ja parantaa tätä koodia.
#!/bin/bash
if [ $1x == x ]; then
exit 1
fi
if [ $2x == x ]; then
FRAMERATE="50:1"
else
FRAMERATE="$2"
fi
FILE=$(echo "$1"|awk -F'\/' '{print $NF}')
BASE="$(echo $FILE|cut -d'.' -f1)"
AUDIO="$(echo $BASE).ac3"
RAWVIDEO="$(echo $BASE).yuv"
VIDEO0="0_$(echo $RAWVIDEO)"
VIDEO1="1_$(echo $RAWVIDEO)"
FINALVIDEO="$(echo $BASE).mov"
# Äänen ja kuvan erotus
mplayer "$FILE" -nosound -mc 0 -vo yuv4mpeg:file="$RAWVIDEO"
ffmpeg -y -i "$FILE" -vn -acodec copy "$AUDIO"
# Kohinan poisto, osa 1 (temporal noise filter)
cat "$RAWVIDEO" | yuvcorrect -T INTERLACED_BOTTOM_FIRST > "$VIDEO1"
# Kohinan poisto, osa 2 (spatial noise filter)
cat "$VIDEO1" | yuvdenoise -s 2,6,6 -g 0,255,255 -t 4,8,8 > "$VIDEO0"
# Lomituksen poisto kuvasta
mplayer "$VIDEO0" -mc 0 -fps 50 -vf yadif=1,mcdeint=1:1:10 -vo yuv4mpeg:file="$VIDEO1"
# Framerate-muunnos
cat "$VIDEO1" | yuvfps -s 50:1 -r $2 | yuvmotionfps -r 50:1 -p 10 > "$VIDEO0"
# Muunnos dv-muotoon
#ffmpeg -y -i "$VIDEO0" -vcodec dvvideo "$FINALVIDEO"
mencoder "$VIDEO0" -mc 0 -noskip -vf unsharp -of lavf -lavfopts format=mov -ovc lavc -lavcopts vcodec=dvvideo -o "$FINALVIDEO"
# Väliaikaisten tiedostojen poisto
rm "$RAWVIDEO" "$VIDEO0" "$VIDEO1"
exit 0
Se toimii siis näin:
preprocess video_kamerasta.mpg <framerate:1>
Kakkosparametri ei ole pakollinen, mutta siinä suljinajan, jolla video on otettu. Skriptissä ajetaan video yuvmotionfps:n läpi, jolloin laskennallisesti tehdään puuttuvat kuvat väliin. Tulos on videosta riippuen joko hyvä tai huono.
Tuoksena siis on .dv:tä sisältävä .mov-tiedosto, joka on progressiivista videota 50 kuvaa/sek, eli säilyttää aika hyvin sekä liikkeen, että tarkkuuden. Tätä voin sitten vapaasti pyöritellä tai leikellä. Minua suunnattomasti ärsyttää tuo nykiminen, joka tulee 25p -videosta, joten siksi tällainen viritys. Normaali lomituksenpoisto siis ei riitä alkuunkaan.