pyTivo incorporates StreamBaby, which means your TiVo can stream a video to itself from a hard drive on your computer. Streaming the video lets you play it without making a copy on your TiVo's hard drive.
pyTivo can also send videos to your TiVo from your computer, meaning that you at your computer can initiate copying a video file to the TiVo's hard drive, after which it can be played just as if the TiVo had recorded it in the usual way.
pyTivo can use TiVo-playable videos in formats that plain old TiVo Desktop software can't deal with.
Just as with StreamBaby, pyTivo does not require you to alter the software or hardware of your TiVo in any way. In fact, your TiVo continues to run the same old software downloaded to it by TiVo, Inc.
pyTivo, like StreamBaby, runs on various computer platforms: Windows, Mac OS X, Linux, and others. I talk here mainly about running it on a Mac.
It is a good thing that there is a Mac version — called pyTivoX — for, as I detailed in Stream, Baby, Stream, installing StreamBaby on a Mac is a bit of a bear. For one thing, StreamBaby installation requires you to obtain and install FFmpeg, the "complete, cross-platform solution" that lets your computer record, format-convert, and stream videos. pyTivoX contains FFmpeg from the get-go.
Since pyTivo likewise contains StreamBaby, installing pyTivo obviates ever having to install and configure either StreamBaby or FFmpeg.
To install pyTivoX version 1.3, click here for a download. (But first go here to see if there's a later version.) pyTivoX downloads to a Mac as a disk image file with a .dmg extension, which, when opened, looks like this:
You just drag the pyTivoX icon to your Applications folder, and your pyTivoX/StreamBaby/FFmpeg installation is finished!
Now, open the pyTivoX application. Above is the pyTivoX window that you'll see. I simply clicked on the + sign and added my "TiVo Transfers" folder to be shared with my TiVos. (In geek parlance, such a folder or directory is called a "video share.")
I also clicked the Prefs button (the light switch) and enabled the use of StreamBaby within pyTivoX:
And I also checked to make sure pyTivo itself was enabled. It was:
In the General Prefs pane I needed to enter my TiVo.com username and password:
That was important because the "push" functionality I talk more about later won't work if you don't supply those two pieces of information to pyTivoX.
Notice that nowhere is there any way for you to enter your TiVo's media access key, or MAK; I assume pyTivoX learns that from your account at TiVo.com. Nor do you have to enter the IP addresses of your computer or your TiVo. pyTivoX figures those out for itself.
After dismissing the Prefs window, I clicked the green Apply checkmark in the main window (which is pyTivoX's only window). At that point I went over to one of my TiVos and found something like this in my Now Playing list:
This is not mine, actually; it's "Rob's PC," which is the "share name" Rob (a Windows user?) gave in his pyTivo Shared Directories list to the folder or directory on his computer that contains his videos. Selecting it in the Now Playing list would bring up a list of that folder's files ... and its subfolders, if any, which themselves contain videos. Navigating down in that list on his TV screen, Rob can tell pyTivo to transfer any one of his videos to his TiVo.
That's pyTivoX as it affects the Now Playing list. Additionally, towards the bottom of the TiVo's Music, Photos, & Showcases menu — which you get to from the TiVo Central menu— you'll see something like pyTivoX - iMac.local, indicating that pyTivoX is running on a computer whose local hostname is iMac.local. If you run pyTivoX and your computer's hostname happens to be (say) Powerhouse.local — you set your Mac's hostname in Sharing Preferences, by the way — you'll see pyTivoX - Powerhouse.local instead.
The Music, Photos, & Showcases menu is pyTivoX's StreamBaby interface per se. It's the way you stream your videos from your computer for instant watching on the TiVo. It's a little bit easier to stream videos from this interface than to download them in the Now Playing list and then start watching them as they are downloading. Plus, using the StreamBaby interface keeps the TiVo from having to make room for a copy of the video on its own hard drive.
Here's the kind of thing you'll see after you select a video in pyTivoX's StreamBaby interface on your TiVo:
This particular video has already started to play, so the top menu item says "Resume playing"; otherwise, it would simply say "Play." The second menu item from the top lets you snap right back to the beginning of the movie if you've already started playing it. If you haven't started playing the video, this item is not present in the menu at all.
"Quality" refers to the average bitrate of the video: the average amount of data per second that will be streamed to the TiVo. Here, "Same - 9769 kb/s" indicates that the size of the video file divided by its running time — its average bitrate — comes to 9,760 kilobytes per second. That's the average bitrate, not the peak, and the fact that the average bitrate is pretty high (anything over, say, 5,000 kb/s is quite high) suggests that occasional bitrate peaks might overload your local network's data delivery speed, causing playback to pause — and, unfortunately, to do so repeatedly. Whenever the playback pauses, you'll have to hit Play on the TiVo remote to get it to start again. You should wait and hit Play after you think there has been enough newly received data buffered on the TiVo to avoid another playback pause any time soon.
If you get tired of hitting Play after endlessly repeated pauses, you can change the StreamBaby Quality to any of several lower bitrates. StreamBaby will, via its self-contained copy of FFmpeg, do things like (I am guessing) drop every third video frame to reduce the peak bitrate to an acceptable level. That will ideally keep you from having to hit Play over and over and over on your TiVo remote, but it can cause playback to present more "strobing" to your eyes than they might appreciate. Strobing can make the playback seem blurry in fast-motion scenes.
The next menu item is interesting. "Push video:" tells StreamBaby to cause the Bedroom TiVo — in this example; you can select among all the TiVos in your house — to summon the entire video file. It will be transferred in its entirely to the Bedroom TiVo's hard drive, and it will then appear the Bedroom TiVo's Now Playing list, allowing it to be played like any other video recording. The benefits:
- You can push videos in the MPEG-4 h.264 (or AVC) format that plain old TiVo Transfer on your computer wouldn't let you transfer. These files as computer files usually have an .m4v or .mp4 extension, not the .TiVo or .mpg extensions associated with MPEG-2 files that TiVo Transfer can handle. (The movies and TV Shows in your iTunes library usually have an .m4v extension, by the way.) There's a catch, though. Videos you purchase from the iTunes Store are encrypted and need to be independently decrypted before the TiVo can play them at all. It's beyond the scope of my article to say how to do that.
- You can also push and watch unencrypted videos in the familiar (if now outmoded) WMV format.
- Pushing a video allows you to (after a sufficient amount of the file has been received and stored) play the video from your TiVo's Now Playing list without encountering irritating pauses or having to throttle down the bitrate to avoid them.
What's the difference between "pushing" and "streaming," again? With "pushing" you wind up with a copy of the original file in your TiVo's Now Playing list. With "streaming," you simply play the video without making a copy on the TiVo.
Both of these options come from the StreamBaby interface on the TiVo, while a third option, "pulling" a copy of the video to the TiVo, comes from the pyTivoX interface proper. The pyTivoX interface is initiated directly from your TiVo's Now Playing list.
"Pulling" the video over to the TiVo has the advantage of having pyTivoX "transcode" the video into a different format en route to the TiVo, and that may be necessary to do if for some reason the video file as it resides on your computer cannot be played "natively" on the TiVo.
So if you try "streaming" the video and it looks terrible or won't play at all, try "pulling" it instead. Go to the Now Playing list on the TiVo and scroll down until you see the name of any of your "share" folders. For example, in the earlier screenshot image "Rob's PC" is the name of a share folder. When selected on the TiVo, it opens up to show all of the video files it contains ... and also any subfolders. You can drill down through the subfolders to find the video you want. Select that video and then select "Transfer this recording." In a matter of seconds it will start to transfer. The blue LED will come on on the front of the TiVo, and you will be asked whether you want to start watching the video while the transfer is ongoing.
If you do start to watch, you may quickly find that playback pauses because the rate of transfer cannot keep up with the rate of playback. After a while, you hit the play button, see some more of the video ... and get another"hard pause." Let the transfer proceed for a while. Then resume play. You may find at that point that enough of the video has been transferred to keep playback from pausing henceforth.
Or you may not. If not, just do something else for a while. When you come back to the video, you'll most likely find it at the top of your Now Playing list, and if the transfer is not yet complete, you'll see the "blue button" icon next to it. You can initiate playback now just as you would any other recording in the Now Playing list.
So, those are the basics of the pyTivoX/StreamBaby/FFmpeg package for the Mac. Using it, you can watch any video file that sits on your computer — well, any video file that is in a format pyTivoX/StreamBaby/FFmpeg understands — on your TV, via your TiVo. Enjoy!