| « B2evolution upgraded to 3.3.2 (sort of) | vncunused problem with Windows on Xen 3.4.1 » |
Watching Freeview HD DVB-T MPEG-4 channels
Last week before catching the H1N1 I had the chance to play around a bit with DVB-T.
Here in .dk the analog TV signal was turned off at the start of the month, and we got some new digital freeview channels. Most notably DR HD broadcasting unencrypted 720p movies in MPEG-4.
The MPEG-4 encoding can be a bit tricky since TVs from just a few years back (ie. both my Panasonic TVs) only support MPEG-2 decoding, so a lot of people had to buy new hardware MPEG-4 decoders. However not wanting yet another power consuming device I decided to solve it on the cheap (not speaking of yet another redundant remote control).
First off old DVB-T PCI cards/USB sticks should generally be able to receive DVB-T broadcasts in any encoding, including MPEG-4. I just had an old Hauppauge Nova-T DVB-T card lying around in the basement, what luck:)
I've collected a few notes here that might be helpful for others.
First figure out what kernel options you'll have to enable.
Getting the right channel list:
emerge linuxtv-dvb-apps linuxtv-dvb-firmware w_scan
w_scan -x > dvb_frequencies
dvbscan dvb_frequencies > channels.conf
Now watch the first channel with: vlc channels.conf. Note if vlc doesn't play anything you might have messed up the generation of channels.conf as I somehow managed to do the first time.
Then record the HD content:
gnutv -channels channels.conf -out file drhd.mp4 "DR HD"
Now come the not so great part, it seems like the MPEG-4 used by DR HD is not well supported in Linux or more precisely the HE-AAC audio codec.
Current stable vlc-1.0.2 seems to be slow to tune in to the programs and audio is choppy and stastistics show dropped audio frames. Upgrading to vlc-1.0.3 seems to make it tune in faster, but the audio is still choppy.
Changing the "Caching value in ms" to 1000 seems to have solved most of the stuttering problems (Preferences -> All -> Input/Codec -> Access modules -> DVB).
Current stable ffmpeg-0.5-r1 only shows 3 streams and refuses to encode:
Stream #0.0[0x907]: Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 50 tbr, 90k tbn, 100 tbc
Stream #0.1[0x91f](dan): Subtitle: dvbsub
Stream #0.2[0x920](dan): Subtitle: dvbsub
However upgrading ffmpeg to 0.5_p20373, results in it detecting another 2 streams:
Stream #0.0[0x7ef]: Data: 0x0006
Stream #0.1[0x907]: Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 50 tbr, 90k tbn, 100 tbc
Stream #0.2[0x911](dan): Data: 0x0011
Stream #0.3[0x91f](dan): Subtitle: dvbsub
Stream #0.4[0x920](dan): Subtitle: dvbsub
And the live ffmpeg ebuild actually detects the audio stream, but hangs when encoding:
Stream #0.0[0x7ef](dan): Subtitle: 0x0006
Stream #0.1[0x907]: Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 50 tbr, 90k tbn, 100 tbc
Stream #0.2[0x911](dan): Audio: aac, 44100 Hz, 2 channels, s16, 450 kb/s
Stream #0.3[0x91f](dan): Subtitle: dvbsub
Stream #0.4[0x920](dan): Subtitle: dvbsub
So for now I can watch DR HD on one computer, but playback on my PCH-110 is not working either as the audio codec HE-AAC seems to be unsupported too. Later on I might just install a MythTV backend and do some automatic transcoding to the troublesome devices. That is once proper HE-AAC support is in ffmpeg:-)
Trackback address for this post
4 comments
But it's probably LATM packed AAC which ffmpeg doesn't support yet. MythTV 0.22 already supports LATM packed HE-AAC if configured with libfaad support. mplayer should support it too.
Totem needs some link library, gxine does a core dump (not sure what is going on there)..