I have reached out to the Plex team to see about them helping us and all to work on a HTML5 client. If anyone can pull this off it's them.. So many variations of that product are in use for multiplatform. Just note it's going to take time.
FYI, the Opera TV Store only supports H.264 video and MPEG1/MPEG2/AAC audio inside MP4 containers. It DOES support HLS though, so Plex would work somewhat reliably if you use their transcoding server.
If you were hoping for more native codec support (Like XBMC), it's not going to happen.
So I spent a bit of time looking into this, but I could not get very far.
First, I started with this: (forum won't let me post links-but search for "plex.h3consulting" on google)
It is a javacript based plex frontend for LG TVs. I got it to work, and navigation works pretty well but video will not play.
LG TVs use a custom video object, so I modified it to use an HTML5 video tag. I got it full working in Safari (which means HTML5 HLS video is working), but it will not work on the Tivo.
As best as I can tell, Tivo does NOT support HLS. I am not familar enough with Plex's transcoder to go much further, but I did try to use the "generic" (as opposed to the universal) transcoder to produce an MP4 file. For example, as in this thread (search for "transcoder help" in plex devel forum) But, everytime I executed the command, it locked up the transcoder (windows) or killed plex process (OS X). The logs weren't any help either.
So I spent a bit of time looking into this, but I could not get very far.
First, I started with this: (forum won't let me post links-but search for "plex.h3consulting" on google)
It is a javacript based plex frontend for LG TVs. I got it to work, and navigation works pretty well but video will not play.
LG TVs use a custom video object, so I modified it to use an HTML5 video tag. I got it full working in Safari (which means HTML5 HLS video is working), but it will not work on the Tivo.
As best as I can tell, Tivo does NOT support HLS. I am not familar enough with Plex's transcoder to go much further, but I did try to use the "generic" (as opposed to the universal) transcoder to produce an MP4 file. For example, as in this thread (search for "transcoder help" in plex devel forum) But, everytime I executed the command, it locked up the transcoder (windows) or killed plex process (OS X). The logs weren't any help either.
That is too bad. The documentation on the Opera SDK is seriously lacking. There also does not seem to be much of a developer community (i.e. you question went unanswered for days).
My hope is that if I can get Plex's transcoder to pop out an mp4 then this would still have a chance at working. But as of right now, when I try that Plex crashes.
My hope is that if I can get Plex's transcoder to pop out an mp4 then this would still have a chance at working. But as of right now, when I try that Plex crashes.
I don't see how that's possible. mp4 container requires MOOV atom among others that can only be generated once the encoding is complete, so on the fly transcoding to mp4 I don't think is possible...
IMO, mp4 container is lousy and I wish at least mpeg2 transport container would work since it's much more flexible.
I thought so too. But if you search for "transcoder help" (again sorry can't post links yet) on the Plex dev forums, somebody seems to indicate they got it to work with a Vizio tv and a .mp4 container that was transcoded on-the-fly.
I will try a couple of basic tests later on tonight, just to verify the only container the Tivo can support is .mp4. But, I'm not hopeful.
It's good to have independent confirmation, but from my tests not too long ago the only thing that works inside a tag for TiVo Opera browser is mp4 container with H.264 video and AAC audio. (The MOOV atom does not have to be at start of the file from what I recall).
NOTE: mp4 container with H.264 video and AC3 audio will actually play, but you don't get any sound.
I tested with ogg, webm, mpegts. No dice. I also extracted the .ts files from the .m3u8 file, also no dice.
At this point, my only hope is that I get an answer on the Plex forums, and somehow that generic transcoder mp4 thing magically works.
As an aside, is the new netflix app HTML5? Is it possible we could try to intercept the traffic, and see if there are some custom objects being passed around not documented in the Opera web SDK?
Has there been any news as to when tivo is going to post the SDK info on their website? It seems to have been down for "maintenance" and awful long time.
No. Back when "opera:history" still worked before 20.3.8 update, Dan203 was able to confirm that after launching Netflix no URL showed up in Opera browser history for his TiVo. After launching YouTube HTML version it did show up in history. Also, the URL for Netflix App launch is a special type:
Code:
x-tivo:netflix:netflix
vs the YouTube one:
Code:
x-tivo:web:https://www.youtube.com/tv
So YouTube videos are being launched using tags in html5 while Netflix is doing its own custom thing. YouTube videos are mp4 container with H.264 video and AAC audio which is why that's not a problem.
It would be wonderful for us to get access to same TiVo SDK that Netflix must be using, but that's likely never going to happen...
Hmm that's too bad. Although, I guess you never know, who knows what Netflix is sending back and forth? Maybe, if I have time this weekend, I'll try to set up a packet sniffer. Even if it is HTTPS it still may be possible to intercept by setting up a man-in-the-middle proxy.
Hmm that's too bad. Although, I guess you never know, who knows what Netflix is sending back and forth? Maybe, if I have time this weekend, I'll try to set up a packet sniffer. Even if it is HTTPS it still may be possible to intercept by setting up a man-in-the-middle proxy.
I started looking into WebRTC during my break at work today..I'm wondering if there isn't a way to implement streaming by pretending we're a webcam on the server side. If it works at all on the TiVo, there'll probably be a bunch of limiting factors like dropping frames when it can't keep up, the codecs only support low-bitrates designed for real-time video chats and such. It's relatively new, and I'm betting isn't even included in Opera's device sdk(and thus on tivo), but it was a passing thought.
So I spent a bit of time looking into this, but I could not get very far.
First, I started with this: (forum won't let me post links-but search for "plex.h3consulting" on google)
It is a javacript based plex frontend for LG TVs. I got it to work, and navigation works pretty well but video will not play.
LG TVs use a custom video object, so I modified it to use an HTML5 video tag. I got it full working in Safari (which means HTML5 HLS video is working), but it will not work on the Tivo.
As best as I can tell, Tivo does NOT support HLS. I am not familar enough with Plex's transcoder to go much further, but I did try to use the "generic" (as opposed to the universal) transcoder to produce an MP4 file. For example, as in this thread (search for "transcoder help" in plex devel forum) But, everytime I executed the command, it locked up the transcoder (windows) or killed plex process (OS X). The logs weren't any help either.
I don't see how that's possible. mp4 container requires MOOV atom among others that can only be generated once the encoding is complete, so on the fly transcoding to mp4 I don't think is possible...
IMO, mp4 container is lousy and I wish at least mpeg2 transport container would work since it's much more flexible.
You are correct. MP4 files require a MOOV atom and the MOOV atom can not be generated until the file has finished encoding, so MP4 can not be used for realtime transcoding and streaming.
HLS is really our only hope for that functionality. I wonder why it's not included in the TiVo version of Opera?
This moov atom thing has me confused. I get that when you are transcoding a live stream it may not be possible to generate the moov atom. But that is not the case with Plex. Instead, with Plex, you are transcoding a fixed file. It would seem to me to be completely within the realm of possibility to generate the correct MOOV atom in that case.
There must be some third party transcoders that can do that. Has anybody looked into that? I know it somewhat defeats the purpose of using plex, but I guess for now it would work.
@sirfergy - As to sharing the code. I really just hacked something together. It was never fully functional. Just enough to get it to the point to play a video, so there really isn't much to share. But, in general all you need to do is change the LG custom object html tag to a video tag and modify the Javascript to change the "src" attribute of that tag. After that, you would need to mess a bit with the player controls to get them to work.
Air PlayIt Server is created for Mac and Windows users as a way of Transcoding for live playback or to pull a copy to the app found within the AppStore or GooglePlay. There is even an option to make the server available as WEB interface within the application which then is tied to it's own Custom or default port with IP address. If the technology it uses could be broken down maybe it could be used. I did notice last time I used it the installation included FFMPEG similar to what is used with Streambaby.
Air PlayIt Server is created for Mac and Windows users as a way of Transcoding for live playback or to pull a copy to the app found within the AppStore or GooglePlay. There is even an option to make the server available as WEB interface within the application which then is tied to it's own Custom or default port with IP address. If the technology it uses could be broken down maybe it could be used. I did notice last time I used it the installation included FFMPEG similar to what is used with Streambaby.
This moov atom thing has me confused. I get that when you are transcoding a live stream it may not be possible to generate the moov atom. But that is not the case with Plex. Instead, with Plex, you are transcoding a fixed file. It would seem to me to be completely within the realm of possibility to generate the correct MOOV atom in that case.
There must be some third party transcoders that can do that. Has anybody looked into that? I know it somewhat defeats the purpose of using plex, but I guess for now it would work.
The problem is that the MOOV atom contains byte offsets to individual chunks of data in the file. There is no way to know the exact position of these chunks ahead of time because you have no way of knowing how big each individual frame will be. Even if you used a CBR encoding method the size of each individual frame would still vary making it impossible to guess.
Hmmm... I forgot about fragmented MP4 files. They're only supported by some players though. Although it's easy to created a fragmented MP4 in ffmpeg, so it should be easy enough to test if they work in the TiVo browser. Just add...
Code:
-movflags frag_keyframe
to the ffmpeg commandline when outputting the MP4 file.
Edit: You might also need to set the H.264 encoder options to output IDR frames at specific intervals for that to work properly. (I'd recommend every 2 seconds)
Edit: This page has a more robust explanation about how to create a fragmented MP4 file in FFmpeg...
Hmmm... I forgot about fragmented MP4 files. They're only supported by some players though. Although it's easy to created a fragmented MP4 in ffmpeg, so it should be easy enough to test if they work in the TiVo browser. Just add...
Code:
-movflags frag_keyframe
to the ffmpeg commandline when outputting the MP4 file.
Edit: You might also need to set the H.264 encoder options to output IDR frames at specific intervals for that to work properly. (I'd recommend every 2 seconds)
Edit: This page has a more robust explanation about how to create a fragmented MP4 file in FFmpeg...
Tried a sample ffmpeg encode with:
-movflags frag_keyframe
Both VLC and TiVo Opera browser only play the 1st fragment (I used -g 52 for keyframe). mediainfo sees total length of video as 1st fragment only.
Next tried the following:
-movflags frag_keyframe+empty_moov
Neither VLC or TiVo Opera browser could play it at all.
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Related Threads
?
?
?
?
?
TiVo Community Forum
9.4M posts
278K members
Since 2001
A forum community dedicated to TiVo digital video recorder owners and enthusiasts. Come join the discussion about programming, streaming, content, schedules, home theaters, displays, models, reviews, accessories, classifieds, and more!