[MPlayer-cygwin] Slow MPEG2-TS (HDTV) playback
Christopher William Palow
palow at cmu.edu
Mon Nov 24 01:49:00 CET 2003
Hi all,
I recently purchased a HDTV capture card (HD-2000 High Definition TV Card)
from pcHDTV.com. It only runs in Linux and it just takes the MPEG2 stream
from an over the air transmission and puts it out to stdout with the program
getatsc (getatsc /dev/dtv 20 > out.ts will write the stream to the file
out.ts). My Linux machine is no where near fast enough to play such a high
bandwidth MPEG 2 stream (it's an 800Mhz Athlon) but I figure my windows
machine is (it's an Athlon XP 2200+ with a NVIDIA Geforce 2 Pro). So I get
the latest mplayer and ffmpeg off the mplayerhq CVS yesterday (11/23/2003)
and then compile it under cygwin on my WinXP machine.
$ uname -a
CYGWIN_NT-5.1 archangel 1.5.5(0.94/3/2) 2003-09-20 16:31 i686 unknown
unknown Cygwin
$ gcc -v
gcc version 3.3.1 (cygming special)
I noticed that mplayer wasn't able to use the internal FAAD2 library so I
downloaded that and compiled it, reconfiged mplayer and tried to compile it.
It didn't succeed because I didn't have freetype2 installed, so I downloaded
that and compiled it and then mplayer compiled (I had to --prefix=/usr on
both freetype2 and FAAD2 to get them to work with mplayer).
So now that mplayer compiled I tried playing some captured MPEG2 streams
(.ts files). It worked but it was slow (and interlaced since it was a 1080i
stream I had captured). Once I added -framedrop the audio would stay in
sync but then it would only play at I dunno like 5 fps (is there some way I
can measure that?). The weird thing is the CPU would never pass 60% no
matter what I tried (measured from task manager). I tried the gl2 video out
it worked just as well as the directx video out, however, it was just as
slow. I tried scaling the video down all the way to -xy 320 back up to it's
native resolution with no effect. I tried using different mpeg2 codecs -vc
ffmpeg2 for example, again with no luck. So can anyone help me? I tried
getting vidix compiled, I went into the configure script and changed cygwin
&& _vidix=no to _vidix=yes on line 1785 and it tried to compiled winvidix
(and cvidix whatever that is (console vidix maybe?)). However, that failed
with something along the lines do libdha.so and libdha.so are the same. So
I went in and tried to compile the individual drivers and ended up with some
of the errors reported to this list last month. So vidix is no go, would it
help if I had been able to get it compiled?
What I'm trying to do is take the stdout of the getatsc program pipe it over
the network to my WinXP machine and play it there with mplayer. I can do
this (more on how a little farther down) but it's just as slow as playing
captured files. The way I got the stream over the network was with
netpipes. I just installed the debian package on my linux box and had to do
make hose on the tarball in cygwin since the entire package didn't want to
compile and I didn't need the entire package. On my linux box I run:
faucet 3000 --out getatsc /dev/dtv 30
# the 30 part is the channel 3000 is the port
And on my WinXP box I run:
hose 192.168.100.1 3000 --in nice -18 mplayer -framedrop -vc ffmpeg2 -cache
20000 -vop lavcdeint -vo directx -fs -
#You have to have the -cache or it doesn't work over the network, I don't
need that when playing from files
I watched the stream in task manager and saw it took about 20Mbit/sec on my
100Mbit/sec switched network.
So that's what I'm trying to do (and can do, just slowly). Any advice on
getting it going at full frame rate would be appreciated. Also -vop
lavcdeint doesn't work with -vo gl2 is there another deinterlacer that will
work?
Anyone know of any other players that can play MPEG-TS streams in Windows?
I'll go hunting around for one today. I doubt I can use any of the players
for the windows HDTV cards since those cards have MPEG2 decoders (or some
other decode assisting ASIC) and I'm sure they require the hardware decoder.
Christopher Palow
More information about the MPlayer-cygwin
mailing list