Hulu Plugin Development Thread - Developers only!

  Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
highlandsun Offline
Senior Member
Posts: 152
Joined: Mar 2009
Reputation: 0
Post: #121
I've updated the patch and the zip file, the episode lists for older seasons is working now.

It looks like they're also in the midst of changing their rss feed syntax, a few times I got some rss downloads that were completely different. A few minutes later they were back to the old format.
find quote
highlandsun Offline
Senior Member
Posts: 152
Joined: Mar 2009
Reputation: 0
Post: #122
Fixed a few issues with unicode characters in some of the menus. Also updated the stream quality selector; it used to only let you choose from 3 levels but there are actually (at least) 6 in use: H264 Medium, 650K, and 400K, and Flash High, Medium and Low. H264 Medium is a 1Mbit stream and is the highest quality they offer now. They don't encode in Flash High any more (700kbit VP6) but there are still some old shows on their site that use it. Generally on new shows now I only see the 3 H264 streams and Flash Medium. It's been a long time since I've seen a stream using Flash Low.

Looks like I'll be setting up a new github repo or something for this soon.
find quote
highlandsun Offline
Senior Member
Posts: 152
Joined: Mar 2009
Reputation: 0
Post: #123
New repo is hosted at http://gitorious.org/xbmc-hulu
find quote
mighty_bombero Offline
Member
Posts: 76
Joined: May 2007
Reputation: 0
Post: #124
Hi everybody,

I tried to make this usable on Xbox and current XBMC builds in general. I delegated calls to Crypto libs to an Ubuntu machine using Pyro and used the RTMP proxy described in http://forum.xbmc.org/showthread.php?tid=71532 to get the streams displayed.
This almost works, but somehow it seems XBMC is not keeping the HTTP connection open so the proxy kills the connection. Anyhow I packed this up in a zip for everybody to try and maybe improve.

To get it running on Ubuntu 9.10:

1. Unzip the archive. Put "Hulu" into your video plugin folder. Edit line 220 in stream_hulu.py to point to the server running the RTMP proxy.

2. Install the packaged Pyro: sudo aptitude install pyro

3. Run the Pyro nameserver: pyro-ns -n [your_ip] -p 9090

4. Go to "Hulu_Pyro_Client" and run it: python hulu_pyro_client.py

5. Run the rtmp proxy: perl rtmp_proxy.pl

6. Run XBMC and select a stream through the plugin.

With a bit of luck you should see the first pictures appear. Then XBMC somehow seems to drop the HTTP connection causing the proxy to terminate the streaming fork. Maybe somebody has an idea why this happens and how to work around it.

Code available here:
http://www.megaupload.com/?d=9M1A9QLN

mighty_bombero
find quote
highlandsun Offline
Senior Member
Posts: 152
Joined: Mar 2009
Reputation: 0
Post: #125
You should have started with the latest version in git.

Not sure how this helps Xbox users, I don't see Pyro in the XBMC source tree. If you're going to go to the trouble of adding a module to your XBMC install, why not just add the Cipher module?

Why didn't you just use rtmpgw, instead of writing a proxy in perl?
(This post was last modified: 2010-04-05 17:30 by highlandsun.)
find quote
mighty_bombero Offline
Member
Posts: 76
Joined: May 2007
Reputation: 0
Post: #126
Oh didn't know this existed. That looks really excellent. As for the Python modules. Thought they couldn't be simply added. Will see how far I get with rtmpgw.

Thanks for the good work.
find quote
maruchan Offline
Senior Member
Posts: 297
Joined: Feb 2009
Reputation: 0
Post: #127
Any progress on this, mighty_bombero? I'd love to have a working build/Hulu plugin, but all of my efforts to get this running properly have failed.
find quote
mighty_bombero Offline
Member
Posts: 76
Joined: May 2007
Reputation: 0
Post: #128
Maruchan,

well not really. I can stream from rtmpgw with vlc, xbmc runs into a timeout when trying to stream via http, though. I would need to investigate how the timeout for http connections can be increased.
All the hard work was done by highlandsun though and he has proposed patches to the rtmp part of xbmc. Once those land in the real build it should work and if the patch is ported to xbox it might even work there.
find quote
highlandsun Offline
Senior Member
Posts: 152
Joined: Mar 2009
Reputation: 0
Post: #129
re: timeout settings: http://wiki.xbmc.org/index.php?title=Adv...network.3E

right, I don't see any reason the new rtmp code wouldn't work on Xbox...
find quote
BrokenCodes Offline
Member
Posts: 95
Joined: May 2009
Reputation: 2
Post: #130
There is a problem with hulu streams skipping forward and back randomly by 30 seconds. It appears, that they made a few changes when they went to the new CDN.

Code:
Metadata:
  duration              2529.90
  moovPosition          40.00
  width                 640.00
  height                360.00
  videocodecid          avc1
  audiocodecid          mp4a
  avcprofile            100.00
  avclevel              51.00
  aacaot                2.00
  videoframerate        23.98
  audiosamplerate       48000.00
  audiochannels         2.00
tags:
  too                 Lavf52.34.1  (OLD WAS "Hulu V1.0"
trackinfo:
  length                60717657.00
  timescale             24000.00
  language              und
sampledescription:
  sampletype            avc1
  length                121431040.00
  timescale             48000.00
  language              und
sampledescription:
  sampletype            mp4a
find quote
highlandsun Offline
Senior Member
Posts: 152
Joined: Mar 2009
Reputation: 0
Post: #131
BrokenCodes Wrote:There is a problem with hulu streams skipping forward and back randomly by 30 seconds. It appears, that they made a few changes when they went to the new CDN.

Hm, I've seen that happening too. Have you noticed it on any other RTMP streams? My suspicion was that it's a bug in XBMC's stream cache but I haven't dug too deep into it yet. Pretty sure it's not in librtmp since rtmpdump still saves the streams properly. (Which also implies it's not anything that hulu is doing on their end.)
find quote
BrokenCodes Offline
Member
Posts: 95
Joined: May 2009
Reputation: 2
Post: #132
it appears to be happening where the commercial breaks queue in, for overlay.
And no, its not happening on any other RTMP streams.

Also, if I remove the last 2 patches you sent, it doesn't happen, but seeking stops working also.
find quote
highlandsun Offline
Senior Member
Posts: 152
Joined: Mar 2009
Reputation: 0
Post: #133
Hm, pretty sure those two patches are not related to this. I just saw a skip happen using ffplay too. The skip didn't happen at the commercial break, it was sometime later. But this kinda implies that the problem is in librtmp after all. I'm doing another test with mplayer -dumpstream now to see if it saves a corrupted file or not.

edit: mplayer -dumpstream also loses a packet after ~51MB have gone by. But it only loses it when librtmp is built with GnuTLS. With OpenSSL the file is not corrupted. So apparently there's a bug in GnuTLS's RC4 cipher.
(This post was last modified: 2010-04-10 08:06 by highlandsun.)
find quote
mighty_bombero Offline
Member
Posts: 76
Joined: May 2007
Reputation: 0
Post: #134
Hi all,

finally I have something that works on XBox (using a January t3ch build). I use rtmpdump to write to the harddisk and play from Samba. The timeout settings didn't help sadly. I really don't like current approach too much, but it works for me.

You need a linux machine with rtmpdump in "/usr/bin". I use Ubuntu 9.10.

1. Unzip the archive. Edit line 239 in stream_hulu.py to point to the smb share holding the output file. Put "xbmc-hulu" into your video plugin folder on Xbox.

2. Install the packaged Pyro: sudo aptitude install pyro

3. Install the packaged python crypto module: sudo aptitude install python-crypto

4. Run the Pyro nameserver: pyro-ns -n [your_ip] -p 9090

5. Go to "Hulu_Pyro_Client". Edit line 91 to point the output path to a folder shared through smb. Edit line 94 with your Linux machine's IP address so the pyro client will not bind to localhost. Then run it: python hulu_pyro_client.py

6. Run XBMC and select a stream through the plugin. It takes some time to launch a stream as I let rtmpdump build up a buffer before opening the file.

Currently I only have luck with the RSS feeds. Haven't checked for a new version by highlandsun lately.

http://www.megaupload.com/?d=FKU0PQI8
find quote
BrokenCodes Offline
Member
Posts: 95
Joined: May 2009
Reputation: 2
Post: #135
highlandsun Wrote:Hm, pretty sure those two patches are not related to this. I just saw a skip happen using ffplay too. The skip didn't happen at the commercial break, it was sometime later. But this kinda implies that the problem is in librtmp after all. I'm doing another test with mplayer -dumpstream now to see if it saves a corrupted file or not.

edit: mplayer -dumpstream also loses a packet after ~51MB have gone by. But it only loses it when librtmp is built with GnuTLS. With OpenSSL the file is not corrupted. So apparently there's a bug in GnuTLS's RC4 cipher.

I don't get the same results.
I am however able to get good results, if I use the rtmpsuck.
find quote
Post Reply