[RIJEŠENO] TV karta, X-Window plus aplikacije

Ljudi ja uvijek u problemima hehe
Ovako:
Ubuntu Drapper
Crn ekran prilikom pokretanja slijedecih aplikacija: KDETV, XAWTV, i najbitniji XDTV.
X-Window pada i ekran ostaje crn pokrenem ga opet sa CTRL+F6 pa CTRL+F7, al nije to to.
Karta pinnacle 40i driver valjda SAA mislim da je podrzan direkt u kernelu radi na aplikaciji Tvtime i onaj Gnome Zapping, ali mi treba za capture sto je podrzano u XDTV za ostale aplikacije ne znam, pa mi je on najbitniji.
Evo sta mi on kaze u tome svemu:
This is xdtv 2.4.0pre0 running on Linux/i686 (2.6.15-27-386).
scandir: No such file or directory
filename = /home/medo/.xdtv/xdtvrc
Warning: Missing charsets in String to FontSet conversion
Warning: Cannot convert string “star” to type Pixmap
wmhooks: netwm detected
wmhooks: netwm state above supported
wmhooks: netwm fullscreen supported
wmhooks: nothing found…
DGA: server=2.0, include=2.0
VidMode: server=2.2, include=2.2
available video mode(s): 1280x1024 1280x1024 1280x1024 1152x864 1152x864 1152x864 1024x768 1024x768 1024x768 1024x768 800x600 800x600 800x600 800x600 800x600 800x600 640x480 640x480 640x480 640x400 640x400 512x384 512x384 400x150 400x150 320x120 320x120 320x100 320x100
Selected XvImage adaptor with yuyv support: ATI Radeon Video Overlay on port 115 (grabdisplay)
No XvVideo port available.
Warning: Cannot convert string “black” to type Pixmap
*** AUDIO DEVICE TYPE = alsa
*** GRABBER DEVICE TYPE = v4l2
*** MIXER DEVICE TYPE = alsa
Warning: Missing charsets in String to FontSet conversion
MMX, SSE, AMD MMX extensions, SSE2, have been detected.
Method sse

Pa ko je expert neka samo kaze dali postoji nekakva druga solucija ili aplikacija za capture, pokusao sam sa VLC ali ne ide. Drugo trazenje programa takodjer ne ide a i onako treba mi samo S-Video koji je i podrzan, Dok audio signal ide preko audio karte tako da mi je uzalud imati sliku bez tona ili obrnuto.

Ja koristim mencoder i sljedeću skriptu:

[code]#!/bin/bash

VBRATE: 470 -> 3 h / CD, 580 -> 2.5 h / CD, 740 -> 2 h / CD

VBRATE=740
ABRATE=64
OUTDIR=$HOME
KDETV_CH_LIST="${HOME}/.mplayer/kdetv_channels.cvs"
BADAPPS="kdetv-bin|kradio|celestia|foobillard|stellarium"
WAITTIME=20

ERR_BADUSAGE=1
ERR_FILEEXISTS=2
ERR_BADCHANNEL=3
ERR_RUNNING=4
ERR_CANTKILL=5

if [ $# -ne 3 ]; then
printf "Usage: basename \"$0\" <channel_num> <rec_time> (e.g. basename \"$0\" 7 “The Simpsons” “01:30:00”)\n\n"
exit $ERR_BADUSAGE
fi

CHANNEL="$1"
TITLE="$2"
RECTIME="$3"

if [ -s “${OUTDIR}/${TITLE}.avi” ]; then
printf "File “${OUTDIR}/${TITLE}.avi” already exists!\n\n"
exit $ERR_FILEEXISTS
fi

FREQ=gawk -F "," -v CH="$CHANNEL" '{ if ( $1 == CH ) { print $2 / 1000; exit 0 } }' "$KDETV_CH_LIST"

if [ -z $FREQ ]; then
printf "There’s no channel “$CHANNEL”!\n\n"
exit $ERR_BADCHANNEL
fi

if [ ps -A -o "comm args" | grep -E "^mencoder" | grep -E "tv://" | wc -l -gt 0 ]; then
printf "MEncoder already running!\n\n"
exit $ERR_RUNNING
fi

if [ pgrep -x "$BADAPPS" | wc -l -gt 0 ]; then
pkill -x "$BADAPPS"
if [ $? -ne 0 ]; then
printf "Cannot kill one of $BADAPPS!\n\n"
exit $ERR_CANTKILL
fi
amixer -q set Line mute
echo "Waiting $WAITTIME seconds for resources to become available…"
sleep $WAITTIME
fi

amixer -q set Line cap
amixer -q set Capture cap

if [ “$RECTIME” = “0” ]; then
sudo nice -n -20 /usr/local/bin/mencoder tv:// -tv driver=v4l2:device=/dev/video:input=0:freq=$FREQ:width=768:height=576:fps=25:norm=0 -vf crop=744:552,pp=lb,scale=496:368 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBRATE:mbd=1 -oac mp3lame -lameopts cbr:mode=3:br=$ABRATE:aq=2 -ffourcc DIVX -o "${OUTDIR}/${TITLE}.avi"
else
sudo nice -n -20 /usr/local/bin/mencoder tv:// -tv driver=v4l2:device=/dev/video:input=0:freq=$FREQ:width=768:height=576:fps=25:norm=0 -vf crop=744:552,pp=lb,scale=496:368 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBRATE:mbd=1 -oac mp3lame -lameopts cbr:mode=3:br=$ABRATE:aq=2 -ffourcc DIVX -o “${OUTDIR}/${TITLE}.avi” -endpos "$RECTIME"
fi[/code]
Za gledanje TV koristim kdetv. U njemu podesim TV kanale i izvezem listu kanala u CVS formatu u ~/.mplayer/kdetv_channels.cvs.
Skripta (npr. tvrecord) se pokreće na sljedeći način:

gdje su:
n - redni broj kanala (kao u kdetv-u)
naziv - naziv snimljenog fajla će biti naziv.avi
trajanje - trajanje snimljenog materijala u obliku koji odgovara mencoder opciji -endpos (npr. 60, kao 60 sekundi ili “01:15:00”, kao sat i 15 minuta).

Ako želiš istovremeno da gledaš to što snimaš, onda pokreneš snimanje i odmah nakon toga pokreneš:

Dodaj u /etc/X11/xorg.conf u sekciji “Modules” slijedeće:

Load “v4l”

Ponovo pokreni X-e i onda dijagnosticiraj XVideo podršku naredbom:

xvinfo | grep adapter

(ili Adapter, nisam siguran)

Ako ni nakon ovoga nema napretka, onda instaliraj ATI originalne upravljačke programe ako već nisi. Helem, reci nam kako je prošlo.

Hvala sapphire, uspjelo
U xorg.conf nije bilo “v4l” dodao sam al nije proslo, poslije sam instalirao orginal driver sada trenutno radi(iako mi je fglrxinfo na “mesa”)
E sada jos sa capture da se pozabavim i to je to
Hvala ti :slight_smile:

John skripta radi al nema slike samo ton :frowning:
problem je mozda taj svideo, nasao sam drugu skriptu koja radi, al nije mi bas, zelio bih npr. da je output u mpeg tj spreman za DVD radi kvalitete

Nije problem za MPEG. Samo provjeri posljednje linije (mencoder opcije).
Moguće je da nema slike zato što je mencoder podešen da grebuje sa v4l2, a ti možda imaš v4l. Dakle, prouči man stranice mencodera.
Za DVD probaj nešto kao:

Super pokusacu hvala ti John-e :slight_smile:
ja sam nasao ovu skriptu za sada:

[code]#!/bin/bash

================= record-tv.sh ============================

= copyright 2003 by Greg Watson gwatsonATlinuxlogin.com =

= GPL2 License, minor modifications by Howard Shane =

= hshaneATaustin.rr.com , under same license =

= usage record-tv.sh prefix-filename record-time channel =

= Example: ./record-tv.sh enterprise 61:00 20 =

============================================================

Version 0.9

Last Mod: Wed Feb 20 11:27 CST 2005

Output directory

OUTPUT=$HOME/vcr

Streamer location

STREAMER=/usr/bin/streamer

Alsa Mixer

AMIXER=/usr/bin/amixer

v4lctl path

V4LCTL=/usr/bin/v4lctl

Capture Volume to ensure sound is recorded (80%)

CAPTURE_VOLUME=80

Tvtime settings file for color/brightness/contrast values

TVTIME=$HOME/.tvtime/tvtime.xml

End of Config

###############

check if I’m running TV, if so just exit

if [ ps -C tvtime | grep -c tvtime -gt 0 ]; then
echo "TVtime is running, aborting recording."
exit
fi

If the filename prefix wasn’t given, set it to ‘recording’

if [ -z $1 ]; then
PREFIX="recording"
else
PREFIX=$1
fi

if time is blank, record for 30 minutes

if [ -z $2 ]; then
TIME="30:00"
else
TIME=$2
fi

if [ ! -z $3 ]; then
$V4LCTL setchannel $3
fi

Check for vcr dir

if [ ! -x $OUTPUT ]; then
mkdir $OUTPUT
fi

DATE=date +%m-%d-%Y-%H:%M

Set the AC97 volume to 0 (so we don’t hear the sounds)

Get mixer values first

PLAY_VOL=$AMIXER -c 0 cget name='Master Playback Volume' | grep : | sed 's/^.*=\([^,]*\).*$/\1/'
CAP_VOL=$AMIXER -c 0 cget name='PCM Playback Volume' | grep : | sed 's/^.*=\([^,]*\).*$/\1/'

$AMIXER -c 0 -q cset name=‘CD Playback Volume’ 100
$AMIXER -c 0 -q cset name=‘Capture Volume’ 1

if tvtime.xml is set, then grab settings out of it

if [ -f $TVTIME ]; then
CONTRAST=cat ${TVTIME} | grep DefaultContrast | sed 's/^.*value="\([^"]*\).*$/\1/'
BRIGHTNESS=cat ${TVTIME} | grep DefaultBrightness | sed 's/^.*value="\([^"]*\).*$/\1/'
COLOR=cat ${TVTIME} | grep DefaultColour | sed 's/^.*value="\([^"]*\).*$/\1/'
HUE=cat ${TVTIME} | grep DefaultHue | sed 's/^.*value="\([^"]*\).*$/\1/'

     $V4LCTL bright ${BRIGHTNESS}% color ${COLOR}% contrast ${CONTRAST}% hue ${HUE}%

fi

$STREAMER -p 4 -q -t ${TIME} -r 24 -q -o ${OUTPUT}/${PREFIX}-${DATE}-${TIME}.avi -j 90 -f mjpeg -F mono16

Sometimes streamer doesn’t always re-mute audio, mute it again just to be sure

$V4LCTL volume mute on

Restore volumes

$AMIXER -q cset name=‘Master Playback Volume’ $PLAY_VOL
$AMIXER -q cset name=‘PCM Playback Volume’ $CAP_VOL

EOF[/code]

Drugo pokusao sam sa streamer:
streamer -t 150000 -i S-Video -n pal -r 25 -s 720x576
-o movie.yuv -f 4mpeg -F stereo -O movie.wav -R 48000 -p 5 -b 64
al ovo mi odvuce megabajte u sekundi :slight_smile:

John hvala ti za mpeg skriptu, radi super malo mis lijepi al radi jupi :slight_smile:
Problem mi je bio u input=0 morao sam staviti =2 plus mencoder nalazi mi se u “usr/bin/” a ostalo je na v4l2, jer na v4l imam nekakvu kriptovanu sliku.
Hvala drustvo za pomoc :slight_smile:

E, što se tiče tog štekanja miša, meni je to bilo prilično nesnosno. U verziji “pre8” mplayera nešto su uradili pa miš mnogo više šteka nego u verziji “pre7try2”. Poslije su ispravili tu stvar tako da je trenutno ispravljeno ali bi trebalo skinuti mplayer putem CVS-a.
Konkretno, to je ova izmjena. Dovoljno je da skineš ad_pcm.c fajl i zamijeniš onu verziju koja dolazi u pre8 verziji.
Nakon toga trebalo bi mnogo manje da šteka.
Predlažem da koristiš ono “sudo nice -n -20 /usr/bin/mencoder” umjesto samo “/usr/bin/mencoder”, tako da dok traje snimanje možeš raditi na računaru bez bojazni da ćeš gubiti frejmove.
Dalje, ako koristiš onu moju skriptu, onda tamo za BADAPPS stavi aplikacije koje treba ugasiti prije nego što krene snimanje. Npr. moraš ugasiti program za slušanje radija ili gledanje TV-a. Takođe, treba ugasiti sve 3D aplikacije, jer ćeš najvjerovatnije gubiti frejmove. Kod mene se pri tome zakuca kernel, pa ga moram restartovati na dugme. Pripazi da dok traje snimanje ne koristiš 3D aplikacije (kao ni 3D screensaver). Što se tiče nekih običnih poslova poput surfanja nema problema.

Kod mene snimanje u divx zauzima oko 50% procesorskog vremena, što je za mene bilo veoma prihvatljivo. Koliko će zauzimati za kompresiju u DVD format, nemam pojma.

Da, ti “input”, “norm”, “amode” i sl. parametri zavise od TV karte. Prilikom svakog pokretanja te skripte mplayer/mencoder će izbaciti sve moguće vrijednosti tih parametara. Za “input” staviš broj koji odgovara snimanju sa TV (pored Composite i dr.). Za “norm” staviš “PAL”, a za “amode” staviš “stereo”.

Ručno pokretanje te skripte:
$ tvrecord 12 “simpsoni” “01:00:00”
jeste malo “ne-user-friendly”, ali se jednostavno može koristiti u cron zadacima, tako da jednostavno možeš implementirati “tajmer” da se u određeno vrijeme nešto snimi, ako nisi kod kuće.
Pored toga, vjerovatno ćeš trebati i nvram-wakeup program, koji omogućava da ti se računar pokrene u određeno vrijeme i snimi što želiš.
Ja kad nisam kod kuće, podesim comp da se pali u određeno vrijeme, snimi s TV-a i nakon toga ugasi i podesi vrijeme sljedećeg paljenja i snimanja. Tako se računar pali i gasi i ja kad dođem kući sve je lijepo posnimano.
Evo ti skripta za gašenje računara koja koristi nvram-wakeup za podešavanje sljedećeg starta:

[code]#!/bin/bash

CONFIG_FILE=“/etc/nvram-wakeup.conf”
MIN_TIME_FROM_NOW=15 # minutes
SLEEP_TIME=10 # seconds

if [ $# -gt 2 -o $# -lt 1 ]; then
echo “Usage: basename $0 [day_of_month] {time_of_day} (e.g. basename $0 18 "12:15")”
echo
exit 1
fi

if [ $# -eq 1 ]; then
DAY=“date +%d
TIME=“$1”
else
DAY=“$1”
TIME=“$2”
fi
YEAR=“date +%Y
MONTH=“date +%m

TIMESTR=“$YEAR-$MONTH-$DAY $TIME”
TIMESTAMP=date -d "$TIMESTR" +%s 2> /dev/null

if [ $? -ne 0 ]; then
echo “Date or time not recognized!”
echo
exit 2
fi

if [ $TIMESTAMP -lt date -d "+$MIN_TIME_FROM_NOW minutes" +%s ]; then
if [ $# -eq 1 ]; then
TIMESTR=$(date -d “$(date -d “$YEAR-$MONTH-$DAY +1 day” +%Y-%m-%d) $TIME” +“%F %T”)
else
TIMESTR=$(date -d “$(date -d “$YEAR-$MONTH-$DAY +1 month” +%Y-%m-%d) $TIME” +“%F %T”)
fi
TIMESTAMP=date -d "$TIMESTR" +%s
fi

if [ -e “$CONFIG_FILE” ]; then
sudo /usr/bin/nvram-wakeup -C “$CONFIG_FILE” -A -l -s $TIMESTAMP 2> /dev/null
else
sudo /usr/bin/nvram-wakeup -A -l -s $TIMESTAMP 2> /dev/null
fi

RETVAL=$?
case $RETVAL in
0 )
echo “Computer will start again at date -d \"$TIMESTR\" +\"%A, %d.%m.%Y %H:%M %Z\".”
echo “Shutting down in $SLEEP_TIME seconds…”; sleep $SLEEP_TIME
sudo /sbin/shutdown -h now
;;
1 )
echo “Computer will start again at date -d \"$TIMESTR\" +\"%A, %d.%m.%Y %H:%M %Z\", but it MUST BE REBOOTED.”
echo “Rebooting in $SLEEP_TIME seconds…”; sleep $SLEEP_TIME
sudo /sbin/shutdown -r now
;;

  • )
    echo “Unable to set wake-up time! Aborting…”
    echo
    exit 3
    ;;
    esac[/code]
    Gornja skripta je specifična za moju ploču, tako da će biti potrebno mijenjati je za tvoju ploču.
    Javi se ako budeš imao pitanja u vezi sa tim.

Poz.

Imam jos nesto John,
Stereo sam napravio preko Line in (adevice=/dev/dsp:audioid=2:amode=1), sve radi ko doksa,
Samo sto mi je slika nekako u mrezi, tj linije na crvenoj, plavoj i zelenoj prostiru mi se kao iz jednog coska ekrana u drugi bukvalno receno, to je kod gledanja a naravno da se prenosi i na capture. Dali ima nekakva posebna konfiguracija da se to izbjegne ili mora ostati takvo kakvo je?

Ne znam na šta misliš. Pošalji jedan frame da vidimo kako izgleda. Da li koristiš filtere (-vf opcija).

normalno koristim filtere, ali saljem ti foto bez filtera

medo@medo-desktop:~$ mencoder tv:// -tv driver=v4l2:device=/dev/video:input=2:width=768:height=576:fps=25:norm=0:adevice=/dev/dsp:audioid=2:amode=1 -srate 48000 -af lavcresample=48000 -of mpeg -mpegopts format=dvd -ovc lavc -oac lavc -lavcopts acodec=ac3:abitrate=160:vcodec=mpeg2video:vbitrate=3648:vrc_maxrate=9636:vrc_buf_size=1835:keyint=12:aspect=4/3 -o prob23a.mpg

Prilikom upotrebe Filtera slika se poboljsa naravno, ali ovu fotku sam namjerno napravio samo sa crvenom farbom, da bi mogao vidjeti o cemu se radi, ove linije iz jednog coska u drugi (tako bar kazem jer neznam kako da objasnim) su u real time mnogo vece bez horizontalnih presjeka kdetv konfiguraciju nemogu napraviti (ako je mencoder koristi) tj. da nekakvim filterima u kdetv poboljsam, jer mi opet puca X-window i na orginalnom Ati Driveru

ili mozda ovako je bolje:
streamer -i s-video -t 01:36:00 -b 64 -s 780x576 -n pal -f mjpeg -j 85 -r 25 -F stereo -o ./FILM.AVI

sto se tice -vf filtera mnogo sam saznao npr najbolji rezultat mi je nesto ovako:
-vf crop=744:552,pp=lb,denoise3d,harddup,scale=496:368
znam one pullup,pp=md itd ali pravu upotrebu ili iskoristenost istih filtera ne znam
ali ako ima kakav link ka stranici gdje je malo bolje objasnjeno oko -vf volio bih saznati

E, taj video bitrate i max video bitrate ne moraš koristiti taj već proračunaš prema dužini video snimka. Imaš kalkulator na http://www.videohelp.com/calc.htm.

Ove horizontalne linije na drugoj slici su posljedica “interlacinga” (način prenošenja/prikazivanja slike), pa se one eliminišu onim pp=lb filterom.
Što se tiče ovih “dijagonalnih”, možda su i one posljedica interlacinga. Meni ne izgleda kao nešto što je posljedica softvera koji koristiš. Izgleda kao da kartica daje takvu sliku, da li zbog kvaliteta TV signala ili kvalitete tunera, ne znam.
Da li si probao tu TV karticu na Win platformi sa originalnim drajverima? Da li je ista slika ili bolja?