No matter what I try, I cannot get Mplayer to play dvb-t from my TV card (Hauppage HVR3000).
I have a valid channels.conf file, and I have tried just about every idea Google has to offer, but still with no success.
The problem seems to be that Mplayer does not access the correct device for the multi-tuner TV card. The DVB-T tuner is at /dev/dvb/adapter0/frontend1, but when I run "mplayer -v dvb://" I get the following messages:
get_path('sub/') -> '/home/lawson/.mplayer/sub/' TUNER TYPE SEEMS TO BE DVB-S
then a stream of data from the channels.conf file, followed by:
DVB_CONFIG, can't open device /dev/dvb/adapter1/frontend0, skipping DVB_CONFIG, can't open device /dev/dvb/adapter2/frontend0, skipping DVB_CONFIG, can't open device /dev/dvb/adapter3/frontend0, skipping DVB CONFIGURATION IS EMPTY, exit Failed to open dvb://. vo: x11 uninit called but X11 not initialized.. Exiting... (End of file)
It seems I need to be able to tell Mplayer which device to use, and to correctly identify it as DVB-T, but despite much googling, and reading the Mplayer manual, I can't work out how to do it.
I would be so grateful if someone could help me before I rip all my hair out!
Many thanks in advance.
(BTW, everything works fine with Kaffeine)
Last edited by myrlin (2011-04-04 14:40:10)
The problem seems to be that Mplayer does not access the correct device for the multi-tuner TV card. The DVB-T tuner is at /dev/dvb/adapter0/frontend1
The values for the DVB devices frontendX, demuxX, dvrX, etc. are hardcoded in the Mplayer source code. You'll need to change them manually in <mplayer_source_root>/stream/dvb_tune.c and recompile Mplayer.
Many thanks, thn81.
This is a bit beyond my experience so far. I have located the file, but I don't understand the programming. Any further information you could give me about what to change would be most welcome. I will be using the ABS package.
Please post the contents of the /dev/dvb/adapter0 directory, so that we can see which parts must be changed. I am not sure if I can help you any further, most of the stuff you need to do is up to you (editing the source code, compiling Mplayer, building a package and testing the whole thing...). But I'll try and point out the relevant code parts that need to be changed.
Btw, is there any particular reason why you'd like to use Mplayer for watching DVB-T TV? Its DVB support looks very basic and rudimentary to me (I never used it), there are probably better alternatives if you do not like Kaffeine...
In answer to your question, although kaffeine works really well, it seems only to record in .m2t format. I have failed miserably to re-format this to a sufficient quality to back up on to DVD. Invariably, audio/video sync gets totally screwed. I have therefore been looking at SMplayer and VLC, both of which use mplayer as their backend, hence the need to get mplayer working first! If you have a better solution, I would be delighted and VERY grateful.
In the meantime, the contents of /dev/dvb/adapter0 is:
The TV card has two digital (plus analogue TV and fm) tuners. DVB-S is frontend0. DVB-T is frontend1
Thank you again for taking the time to help me.
O.K., small step-by-step list of instructions:
1. Change into the mplayer package directory in ABS (/var/abs/x86_64/extra/mplayer in my case), get the sources and extract them with "makepkg -o"
2. Locate the file dvb_tune.c (in src/mplayer/stream), open it in a text editor.
3. Go to lines 88, 89, 90 and change the device names from "frontend0", "demux0" and "dvr0" to "frontend1", "demux1" and "dvr1".
4. Go to line 131 and change "demux0" to "demux1". Save the file.
5. Open the file stream_dvb.c, and change in line 765: "frontend0" to "frontend1". Save and exit.
6. In the mplayer package directory (containing the PKGBUILD), do a "makepkg -e" to build the package. Don't forget the "-e" or the changes you just made are lost again.
7. If all went well, install the freshly built package with "pacman -U mplayer-<blah-version>-pkg.tar.xz
If everything looks good, try tuning to a channel with mplayer. I hope it works. Remember that your custom package will be overwritten each time you update your system and a new version of Mplayer is available.
As an alternative, you could try Me-TV (in community repo). But as far as I know, all DVB programs will only dump the raw .m2t stream to disk when recording. You'll always have to edit these files in order to get them on DVD.
Very many thanks for your superb tutorial, thn81. I'll try this in the next few days, and post back.
I am disappointed to hear that all DVB programs output in .m2t format, since so far I have found it impossible to re-format them and keep sync. The problem seems to be that it is not a fixed sync error, but one which varies due to randomly dropped frames as the TV programme progresses. The software that came with the card (Windows) does record directly into mpg, which eliminates the problem. Maybe I should start a new thread on m2t conversion!
Once again thank you so much for your help.
Last edited by myrlin (2011-04-05 13:33:31)
You might be interested in AviDemux and ProjectX (http://project-x.sourceforge.net, package is in AUR), a tool for inspecting and disassembling MPEG2 Transport streams (that's what .m2t files actually are). There is a lot of information in the AviDemux wiki, the A/V sync problem is described here: http://www.avidemux.org/admWiki/doku.ph … eg_capture.
This is great, thn81. I have had a quick look at the avidemux link, and it looks like just the information I need. Very many thanks.
I am a bit short of time this week, but I will start some experiments as soon as possible and post my progress.
Thank you again for all your help and support.
After following your advice, thn81, Mplayer is now playing dvb-t from my TV car.
Many thanks once again