|
#1
|
|||
|
|||
|
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
dldir=/var/tmp
catchupdir=/home/user/.catchup
initialwait=1
buffer=1
wgetopts=""
mplayeropts=""
note()
{
/usr/bin/dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"$1"
echo $1
}
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 $wgetopts -T10 `tail -1 $dldir/playlist.m3u8` -O url
urlold=$url
url=`tail -1 url`
if [[ "$url" == "$urlold" ]]
then
sleep 1
else
if [[ "`echo $url | cut -c1-4`" != "http" ]]
then
url2=$urlbase/$url
else
url2=$url
fi
wget $wgetopts -T10 $url2 -O tmp$count.ts
bytes=`wc -c < tmp$count.ts`
echo "$count: Downloaded $bytes bytes"
if [ "$bytes" == "0" ]
then
echo $url2
echo Retrying
else
count=`expr $count + 1`
fi
fi
sleep 1
done
}
play()
{
count=0
while [ 1 ]
do
countnext=`expr $count + $buffer`
while [ ! -e tmp$countnext.ts ]
do
sleep 1
done
cat tmp$count.ts
rm tmp$count.ts
count=`expr $count + 1`
done
}
rm $dldir/playlist.m3u8
echo Starting browser
sleep 1
/usr/bin/dbus-send --system --type=method_call --dest=com.nokia.osso_browser /com/nokia/osso_browser/request com.nokia.osso_browser.load_url string:"http://iphone.tvcatchup.com"
note "Choose the channel"
while [ ! -e $dldir/playlist.m3u8 ]
do
sleep 1
done
note "Playlist file found - Buffering"
mkdir 2>/dev/null $catchupdir
cd $catchupdir
download &
while [ ! -e "$catchupdir/tmp$initialwait.ts" ]
do
sleep 3
killall 2>/dev/null mediaplayer
note "Initial buffering"
done
killall 2>/dev/null mediaplayer
note "Starting mplayer - Please be patient!"
rm tvfifo.ts
mkfifo tvfifo.ts
play > tvfifo.ts &
mplayer $mplayeropts -fs -hardframedrop -ao pulse -cache 4096 -vfm ffmpeg -lavdopts fast tvfifo.ts
""rm -r $catchupdir
exit
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. EDIT: There is now a low quality stream available on the tvcatchup.com website, which works fine on N900. However, the quality is a bit lower, so this script may still be of use. Updated the script so that it no longer needs Firefox. It runs in fullscreen mode now - press q to exit. To install, save the attached tarball and run Code:
tar -xzvf tvcatchup.tar.gz -C /home/user Last edited by arajantie; 2010-06-09 at 08:57. Reason: Updated the script to use builtin browser |
| The Following 24 Users Say Thank You to arajantie For This Useful Post: | ||
|
#2
|
|||
|
|||
|
would be awesome if someone could package this up as a single download and install am really looking forward to world cup and this would be great
|
|
#3
|
|||
|
|||
|
or is it possible for you to post some step by step instructions on this cheers mate
|
|
#4
|
|||
|
|||
|
ddwwf1, if you work through the above post, you should find that it works fine.
Give it a go. |
|
#5
|
||||
|
||||
|
Followed the steps, and tried running the Tvcatchup App (well the shortcut created). Terminal launches but closes almost straight away.
I've tried running /home/user/tvcatchup.sh manually in terminal but I get a permission denied... Quote:
|
|
#7
|
||||
|
||||
|
sorry to bump but this is an exciting development
|
|
#8
|
|||
|
|||
|
just not sure how to save a script in the locations specified
|
|
#9
|
|||
|
|||
|
Tried the script - modified it to use Opera Mobile as the browser to download the playlist.. get the following:
Code:
~ $ sh tvcatchup.sh Starting Opera method return sender=:1.32 -> dest=:1.220 reply_serial=2 uint32 10 mkdir: cannot create directory '/tmp/catchup': File exists Buffering rm: cannot remove 'tmp*.ts': No such file or directory PID1=3377 Base URL: http://84.234.23.231:1935/iphone/iphone_bbcone.sdp tvcatchup.sh: line 61: wget: not found tail: can't open '/tmp/test': No such file or directory tail: no files |
|
#10
|
|||
|
|||
|
If you saved/created the file in MyDocs, use this to move it:
mv /home/user/MyDocs/tvcatchup.sh /home/user/tvcatchup.sh |
![]() |
|
|