With the World Cup approaching, I found it really annoying that there is no good way of watching live TV on N900 in the UK. Recorded content works well on iPlayer in the pop-out window, but live TV does not. The obvious alternative is to use TVCatchup, who provide a lighter stream for the iPhone. N900 cannot play these streams out of the box because they use some non-standard playlist format, so I wrote a simple shell script that extracts the video stream and plays it with mplayer. For the script to work, you'll also need Firefox because I couldn't find a way to tell the built-in browser not to send the playlist to the Media Player. Save this script as /home/user/tvcatchup.sh: Code: #!/bin/sh download() { rm tmp*.ts count=0 urlbase=`tail -1 $dldir/playlist.m3u8 | cut -d "/" -f 1-5` echo Base URL: $urlbase while [ 1 ] do wget -q `tail -1 $dldir/playlist.m3u8` -O /tmp/test urlold=$url url=`tail -1 /tmp/test` if [[ "$url" == "$urlold" ]] then sleep 1 else if [[ "`echo $url | cut -c1-4`" != "http" ]] then url2=$urlbase/$url else url2=$url fi wget -q $url2 -O tmp$count.ts echo $count: Downloaded `wc -c < tmp$count.ts` bytes count=`expr $count + 1` fi sleep 1 done } play() { count=0 while [ 1 ] do countnext=`expr $count + 2` while [ ! -e tmp$countnext.ts ] do sleep 1 done cat tmp$count.ts rm tmp$count.ts count=`expr $count + 1` done } dldir=/home/user/MyDocs/.documents rm $dldir/playlist.m3u8 echo Starting Firefox /usr/bin/dbus-send --print-reply --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteDialog string:"Choose the channel, SAVE the playlist, and CLOSE Firefox!" uint32:0 string:'note' fennec http://iphone.tvcatchup.com if [ ! -e $dldir/playlist.m3u8 ] then No playlist file! exit fi catchupdir=/tmp/catchup mkdir $catchupdir cd $catchupdir echo Buffering download & pid1=$! echo PID1=$pid1 while [ ! -e "$catchupdir/tmp3.ts" ] do sleep 1 done echo Starting mplayer rm tvfifo.ts mkfifo tvfifo.ts play > tvfifo.ts & mplayer -quiet -hardframedrop -ao pulse -cache 128 tvfifo.ts exit and this desktop file as /home/user/.local/share/applications/hildon/tvcatchup.desktop: Code: [Desktop Entry] Encoding=UTF-8 Name=TV Catchup GenericName=TV Catchup Exec=osso-xterm "/bin/sh /home/user/tvcatchup.sh" Terminal=true Type=Application You should now be able to find the TV Catchup icon (just the plain blue square) in your menu. When you click it, it opens Firefox and takes you to the TVCatchup iPhone page, where you can choose the channel you want to watch. Firefox will ask you what you want to do with playlist.m3u8. You'll need to save it to /home/user/MyDocs/.documents, which I believe is the default location. Once you have saved that file, close Firefox, and you can see in the terminal window how it starts to buffer the stream. After a while MPlayer should start playing it. This is very experimental, so I won't give any guarantees, but it works on my phone. You need at least Mplayer and Firefox, and possibly something else too. There is a lot of room for improvement, so if anyone with more skill and experience wants to develop this further, I would encourage them to do so.
#!/bin/sh download() { rm tmp*.ts count=0 urlbase=`tail -1 $dldir/playlist.m3u8 | cut -d "/" -f 1-5` echo Base URL: $urlbase while [ 1 ] do wget -q `tail -1 $dldir/playlist.m3u8` -O /tmp/test urlold=$url url=`tail -1 /tmp/test` if [[ "$url" == "$urlold" ]] then sleep 1 else if [[ "`echo $url | cut -c1-4`" != "http" ]] then url2=$urlbase/$url else url2=$url fi wget -q $url2 -O tmp$count.ts echo $count: Downloaded `wc -c < tmp$count.ts` bytes count=`expr $count + 1` fi sleep 1 done } play() { count=0 while [ 1 ] do countnext=`expr $count + 2` while [ ! -e tmp$countnext.ts ] do sleep 1 done cat tmp$count.ts rm tmp$count.ts count=`expr $count + 1` done } dldir=/home/user/MyDocs/.documents rm $dldir/playlist.m3u8 echo Starting Firefox /usr/bin/dbus-send --print-reply --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteDialog string:"Choose the channel, SAVE the playlist, and CLOSE Firefox!" uint32:0 string:'note' fennec http://iphone.tvcatchup.com if [ ! -e $dldir/playlist.m3u8 ] then No playlist file! exit fi catchupdir=/tmp/catchup mkdir $catchupdir cd $catchupdir echo Buffering download & pid1=$! echo PID1=$pid1 while [ ! -e "$catchupdir/tmp3.ts" ] do sleep 1 done echo Starting mplayer rm tvfifo.ts mkfifo tvfifo.ts play > tvfifo.ts & mplayer -quiet -hardframedrop -ao pulse -cache 128 tvfifo.ts exit
[Desktop Entry] Encoding=UTF-8 Name=TV Catchup GenericName=TV Catchup Exec=osso-xterm "/bin/sh /home/user/tvcatchup.sh" Terminal=true Type=Application