Sundtek Support Forum
Deutsch => Sundtek MediaTV Pro => Thema gestartet von: ChristianKG am September 27, 2014, 03:23:41 Nachmittag
-
Hallo auch,
ich habe den MediaTV Pro III und betreibe ihn an einem (X)Ubuntu 14.04 HTPC.
Ich möchte mir mittels ffmpeg/ffserver das TV-Programm ins Internet streamen. Dazu benutze ich folgendes Script:
#!/bin/bash
default="Pro7"
logmsg="/opt/tv/log/msg.log"
logerr="/opt/tv/log/msg.log"
logffmpeg="/opt/tv/log/ffmpeg.log"
logmplayer="/opt/tv/log/mplayer.log"
function clean_up(){
killall -9 ffserver mplayer
}
trap clean_up SIGHUP SIGINT SIGTERM
echo "Start" >> $logmsg
timeout() {
time=$1
command="/bin/sh -c \"$2\""
expect -c "set echo \"-noecho\"; set timeout $time; spawn -noecho $command; expect timeout { exit 1 } eof { exit 0 }"
}
stop() {
echo "Stop streaming..."
killall -9 mplayer ffserver
echo -n "Stop mediasrv..."
timeout 15 "/opt/bin/mediaclient --shutdown 1> $logmsg 2> $logerr"
if [ $? = 1 ] ; then
killall -9 mediasrv
echo "Forced"
else echo ""
fi
sleep 2
echo "Start mediasrv..."
/opt/bin/mediaclient --start 1> $logmsg 2> $logerr
echo "Done"
}
start() {
echo "Set Channel $default ..."
tv setchannel $default 1> $logmsg 2> $logerr
echo "Start mplayer..."
nohup mplayer -vo null -ao null tv:// -tv driver=v4l2:input=0 1> $logmplayer 2>&1 &
echo "Start ffserver..."
ffserver -d 1> $logmsg 2> $logerr &
sleep 2
#input format is yuyv422
echo "Start stream..."
cat /dev/video0 | ffmpeg -i - http://127.0.0.1:8011/tvstream.ffm 1> $logffmpeg 2>&1 &
echo "Done"
}
case $1 in
stop)
stop
exit 0;;
poweroff)
poweroff;;
start)
start;;
restart)
stop
sleep 10
start;;
*)
tv setchannel $1 1> $logmsg 2> $logerr
esac
"tv setchannel" setzt den Kanal mittels "v4l2-ctl -f xxx.xxx", was auch einwandfrei funktioniert.
Das Problem was ich jetzt habe ist dass das Bild das ankommt falschfarben grün/lila ist. das ist auch der Fall wenn ich es mit "cat /dev/video0 > test.mpg" versuche. Dabei ist es egal ob ich den stream/die Datei mit vlc oder mplayer öffne, das Ergebnis ist immer das selbe. Öffne ich /dev/video0 aber direkt mit mplayer (via mplayer tv:// -tv driver=v4l2:alsa:input=0:channel=SE11) dann stimmen die Farben. Wie aber bekomme ich jetzt hin das es über cat ebenfalls funktioniert? Bin langsam ziemlich ratlos ???
-
Ich denke das Input Format ist UYVY nicht YUV422, wenn man's nicht konfiguriert.
Du verwendest das FFMPEG Plugin oder?
Der Treiber wird in kürze aktualisiert, das FFMPEG Plugin wurde neu integriert (bei den FFMPEG Bibliotheken ändert sich immer wieder mal was).
Das buildffmpeg Skript wurde bereits auf die aktuellste Version aktualisiert (ffmpeg wird nur lokal für den Treiber gebaut nicht für das gesamte System, damit es keine Probleme mit den anderen Programmen geben kann)
http://sundtek.de/support/buildffmpeg.sh
Das Treiberupdate kommt dann in kürze.
-
Ja ich verwende das Plugin. Habe es jetzt nochmal neu gebaut über euer Script. Jetzt liefert /dev/video0 gar keine Daten mehr. Mit mplayer läuft es nach wie vor. Das Input Format scheint UYVY zu sein:
christian@christian-Point-of-View:~$ mplayer tv:// -tv driver=v4l2:input=0
MPlayer 1.1-4.8 (C) 2000-2012 MPlayer Team
Playing tv://.
TV file format detected.
Selected driver: v4l2
name: Video 4 Linux 2 input
author: Martin Olschewski <olschewski@zpr.uni-koeln.de>
comment: first try, more to come ;-)
Selected device: Sundtek MediaTV Pro 2k12
Tuner cap: STEREO
Tuner rxs:
Capabilities: video capture tuner audio streaming
supported norms: 0 = PAL-BG; 1 = PAL-DK; 2 = PAL-I; 3 = PAL-M; 4 = NTSC-M; 5 = Secam-L; 6 = Secam-LC; 7 = Secam-K; 8 = Secam-B; 9 = Secam-G; 10 = Secam-H;
inputs: 0 = Television; 1 = Composite; 2 = S-Video;
Current input: 0
Current format: UYVY
v4l2: current audio mode is : MONO
tv.c: norm_from_string(pal): Bogus norm parameter, setting default.
v4l2: ioctl query control failed: Invalid argument
==========================================================================
Opening video decoder: [raw] RAW Uncompressed Video
Movie-Aspect is undefined - no prescaling applied.
VO: [vdpau] 640x480 => 640x480 Packed UYVY
Selected video codec: [rawuyvy] vfm: raw (RAW UYVY)
==========================================================================
Es scheint auch irgendwie so als würde das Plugin gar nicht mehr laufen. Tut es das erst wieder nach dem Treiber-Update? Im Prinzip benötige ich es auch gar nicht, das ich den Stream eh neu encode ist das doch nur doppelte Arbeit für die ( ohnehin schwache ) CPU oder? Und auch wenn ich das plugin verwende müsste ich ja das Input Format eben dort konfigurieren da ja dieses das raw-video abgreift ???
-
Hast du den Treiber neu installiert und buildffmpeg neu heruntergeladen und ausgeführt? Ich denke da muss noch etwas fein-getuned werden aber im Grunde sollte es eigentlich wieder funktionieren.
Bei FFMPEG haben sich so einige Details geändert.
-
Treiber habe ich heute morgen neu installiert, ist der vom 18.09.14. Das buildffmpeg script habe ich vorhin neu heruntergeladen und ausgeführt. Lief auch erfolgreich durch, beim vorherigen musste ich --disable-doc an ./configure anhängen damit es durch lief. Das ist nun nicht mehr nötig. Sollte also das aktuelle sein
-
Was zeigt denn bei dir /opt/bin/mediaclient -e an?
-
root@christian-Point-of-View:~# /opt/bin/mediaclient -e
**** List of Media Hardware Devices ****
device 0: [MediaTV Pro III USB (EU)] DVB-C, DVB-T, DVB-T2, ANALOG-TV, FM-RADIO, REMOTE-CONTROL, OSS-AUDIO, RDS, SWENCODER
[INFO]:
STATUS: ACTIVE
[BUS]:
ID: 2-1
[SERIAL]:
ID: U140409205711
[DVB-C]:
FRONTEND: /dev/dvb/adapter0/frontend0
DVR: /dev/dvb/adapter0/dvr0
DMX: /dev/dvb/adapter0/demux0
[DVB-T]:
FRONTEND: /dev/dvb/adapter0/frontend0
DVR: /dev/dvb/adapter0/dvr0
DMX: /dev/dvb/adapter0/demux0
[DVB-T2]:
FRONTEND: /dev/dvb/adapter0/frontend0
DVR: /dev/dvb/adapter0/dvr0
DMX: /dev/dvb/adapter0/demux0
[ANALOG-TV]:
VIDEO0: /dev/video0
VBI0: /dev/vbi0
[FM-RADIO]:
RADIO0: /dev/radio0
RDS: /dev/rds0
[REMOTECONTROL]:
INPUT0: /dev/mediainput0
[OSS]:
OSS0: /dev/dsp0
Edit: Eben nochmal Treiber und Plugin neu installiert, bleibt aber beim alten. /dev/video0 liefert keine Daten während mplayer im Hintergrund abspielt
-
Habe es jetzt so gelöst das ich mit mencoder in ein fifo aufzeichne und das dann per ffmpeg an ffserver weiterreiche:
mkfifo /tmp/tvstream.fifo 1> $logmsg 2> $logerr
mencoder tv:// -tv driver=v4l2:width=640:height=480:adevice=/dev/dsp0:amode=1 -ovc lavc -oac mp3lame -lameopts cbr:br=128 -lavcopts vcodec=mpeg4:vbitrate=600 -of mpeg -o /tmp/tvstream.fifo > $logmplayer 2>&1 &
ffserver -d 1> $logmsg 2> $logerr &
ffmpeg -i /tmp/tvstream.fifo http://127.0.0.1:8011/tvstream.ffm 1> $logffmpeg 2>&1 &
Also danke für eure Mühe, für mich tuts das so ;)
PS: Allerdings ist es nach wie vor so das mittels cat /dev/video0 > 1234.mpg nur eine leere Datei erzeugt wird, auch mit dem Treiber vom 02.10.