Work in progress: Stream live cache on S3
Attached is a patch for mfs-utils to add support for streaming of the live cache recordings. It uses a brute force approach (with a few refinements) to figure out which chunks have been used. It also tracks new parts as they are added. There's a list of things I still plan to improve, but I thought I'd throw it out there in case someone can tell me an easier/better way to do this. I've refined the approach so that I can consistently extract a single live stream from my S3 - both at SD and HD resolution. I suspect it wouldn't work well with two concurrent streams, but I haven't tried it. Some of the improvements I have planned should make that better. Thoughts?
this is very interesting. sorry, I'm going to break into pseudo-code here for a moment because this is beyond my level of technical knowledge, but I just want to understand what this may/may not be capable of doing.
Originally Posted by vandebo
could HTTP Live Streaming be integrated to work with this? http://www.ioncannon.net/projects/ht...d-distributor/
what format is the live cache?
I truly have dreamed of something like this for years. This is way TV is meant to be - I pay for access, and I should be able to stream to any device in a non-DRM format.I'd be very interested in contributing to a project like this. This could be the holy grail if this type of delivery is possible.
Without looking at too many of the details, it seems very possible with all the standard caveats (hacking an S3 Tivo requires changing the prom chip). The S3 recording format is close to an mpeg transport stream. The s3tots program converts it to an mpeg transport stream. From that point you should be able to do what ever you want with ffmpeg. However, because of the way my patch works, you'll need some buffer room to watch things live. i.e. if you want to channel surf it might be kind of annoying because of the lag.
Originally Posted by karpodiem
I'm interested in doing this with SageTV. I am in the process of acquiring a TivoHD. I haven't owned a Tivo for about 5 years since I ditched my DirecTivo. Would you mind answering a couple questions for me?
Do you have a method for initiating recordings remotely? I am pondering a couple of options for this: TivoWeb manual recording, or the telnet interface.
Do your mods work with the live buffer, or only with a recording?
I'm planning on not having service from tivo. I'm not clear on whether I could schedule a manual recording with tivoweb to start immediately without service. If not, I think I would have to go with the live buffer.
Sean, there are some bugs in my initial patch and life got in the way before I could figure them out. I've had some time recently so I've made progress again. I think I've worked out the bugs I know about. However, I needed to update my tivo to get a new channel map and ended up with a new version, so I need to pull the drive and rehack it.
I don't remember what the patch above relies on, but I found that in boat anchor (aka no subscription) mode, even manual recordings don't work, so you have to pull recordings out of the live stream, which I'm doing. To initiate recording, I use the telnet remote interface to change the channel.
Sorry for the slow (>1yr) reply.
Last edited by vandebo; 10-25-2013 at 03:02 AM.
Thanks for your update. I ended up abandoning the idea of trying this with SageTV after Dish quit messing around and brought back the channels I was losing. I did acquire a prom-modded S3 but it's been sitting on the shelf collecting dust. However, I'm thinking about looking into this again.
I'm way out of touch with how mfs_utils works. I would like to stream from the Tivo to a windows PC and use s3tots on the PC side to convert it. I'm assuming i'd have to deploy mfs_utils with your patch on the Tivo itself. But, if I want to stream it to the PC, does the mfs_utils on the PC also need to have your patch? I'm guessing it does so it would understand the parameters to pass to the server, right? I'm thinking I could compile your patched mfs_utils in cygwin, right?
I'd like to do something like Jamie suggests here, but using your patch: