Nov 102005

Well tomorrow I am off to the west coast AGAIN. I’m leaving for San Jose at 10:45 AM. Gonna get there a little early. It’s for some Sylantro training session. I am not attending as a student, however. I am helping out with some of the labs and they want me to check out the program they have so that I can help them with future training sessions. All in all, it’s a distraction right now since TEO is getting so close to wrap up, but I promised I would do it and I want to keep my relationship good with them.

With that said, I decided to do things a little differently this time. Rather than fly to San Jose (which by the way, no one does nonstop) I decided to take a train for a variety of reasons.

First of all, I hate air travel. Scared to death of it. I try to avoid it whenever possible but it’s even worse when I have to travel alone and even worse still when I have to make multiple stops.

Second of all, (well kinda goes along with the first one) is that I lose lots of sleep and I get very distracted in the days leading up to a flight. This is extremely unproductive. I’m really looking forward to a cross country train ride though. Not feeling nervous before travel is a great feeling that I’m not used to.

Third of all, flying sucks unless you do it first class. I hate breathing that recycled air, feeling cramped like sardines next to some fat smelly knucklehead who acts like I just flipped off the pope every time I want to get to the bathroom or stretch my legs. It’s a 6 hour flight to San Jose from Philly and it’s not fun. I looked into first class and it was a lot more expensive than I thought it would be (granted, the week before I was supposed to leave). That still doesn’t solve problems #1 and #2.

So I booked a first class train ticket on Amtrak.com from Philly to Santa Clara. I’ve got a bedroom so I can sleep and most importantly work on TEO uninterrupted. I’ll have EVDO or 1xRTT for much of the trip so I’ll still be connected. On a train, they have lounge cars and bar cars where you can watch football games and have a few beers.

This is my first time on a long distance train ride so I’m real excited. I packed lots of food and clothing and my supplies:

  • My tablet of course
  • 3 GPS’s (with Streets & Trips to watch my progress)
  • Advil, Pepto, Tums, sleep aid, etc
  • Nintendo DS
  • Book: Windows Workflow Foundation
  • Couple of Seinfeld, South Park, Simpsons, etc. episodes
  • My EVDO-equipped Pocket PC Phone

And of course my entire itinerary is in Outlook along with maps of my destination when I get there.

The whole trip will take about 3.5 days each way and I’m staying for 5 days. I have some business I need to tend to with the folks from Sylantro before the training. This will be the longest I have been away from my fiancé, Heather since we started dating. I’m sure it will be as tough for her as it will be for me. But I’ve got the web cam and I will be in touch with her regularly. I’ll try not to say anything corny like my dad has been doing from his boat in the middle of the Atlantic…

I’ll try to be in touch via email if you have any support issues.

In a previous post, I talked about how I overcame the storage limitations of my new Audiovox SMT5600 by setting up a streaming Windows Media server. In this post, I will describe in detail the steps to set it up and create content. Although this document does not describe how to stream live TV, it does tell you how to stream recorded TV or DVDs.

What you will need:

Steps to create the content:

This is the part where I have to ask you to be responsible. I am describing the steps to do this for your own personal use on your Windows Mobile device. Please be responsible and do not violate the licensing terms of the content you are using. For example, broadcasting a football game to the public is definitely a violation.

  1. Download and install Windows Media Encoder 9.
  2. Install Intervideo WinDVD. Other DVD decoders may work, but I have only tried Intervideo’s and I have heard indications in newsgroups that this may be the only DVD decoder that works.
  3. Download and install DVD Shrink. This program allows you to create hard disk backups of your DVDs and TV on DVD episodes.
  4. Find a DVD to back up. Although I don’t have it yet (because it isn’t out) let’s pretend that the DVD is Seinfeld Season 1. Put the DVD in the drive and fire up DVD Shrink.
  5. Click “Open Disc“ on the DVD Shrink toolbar and select your DVD drive. Let it analyze the disc.
  6. Click the “Reauthor“ button on the toolbar which allows you to create a custom DVD backup.
  7. Select only the main titles. You should be able to tell which titles are episodes by the length. Most TV shows are about 20-22 minutes long. Drag them to the pane on the left.
  8. Go to the “Compression Settings“ tab and highlight all of the entries in the left pane that you dragged over. On the Compression Settings tab, set the Video Compression to “No Compression“. There’s no need to re-compress since we’re going to do that with Windows Media Encoder.
  9. Uncheck all of the audio options except 2 channel english or whatever audio track you want to preserve.
  10. Click the “Backup!“ button on the toolbar. The backup target should be “Hard Disk Folder“ and find a place to store them. Hit the OK button and DVD Shrink will start copying the DVD’s .VOB files to the target folder.
  11. When the copy is complete, close DVD Shrink and browse to the folder where you saved the VOB files.
  12. Create a new text file named “encode.cmd“ in the directory with the VOB files. Paste the following text into the file exactly.
    FOR /R %%F IN (*.VOB) DO @CSCRIPT "C:\Program Files\Windows Media Components\Encoder\WMCmd.vbs" -input "%%F" -output "%%F.wmv" -profile av32
  13. Double click the encode.cmd file to start encoding using Windows Media Encoder.
  14. This process can take a very long time. The end result will be a bunch of .WMV files with the same name as the VOB file. So if you have a VOB file called VTS_01_1.VOB then you will also have a small WMV file called VTS_01_1.VOB.WMV. These WMV files are the ones you’re going to stream so keep them handy. If everything has gone okay, you can delete the VOB files as you won’t be needing them anymore.

Steps to set up the server:

I am not going to go into a whole lot of detail for the individual steps such as installing Windows. There are plenty of resources out there to help you along here.

  1. Install Windows 2003 Server on some type of capable hardware.
  2. Install the Windows Media Server option from Add/Remove programs.
  3. Open “C:\wmpub\wmroot“ and create a subdirectory here. I called mine “TV“ and inside there, I created several subdirectories for the individual TV shows. For the sake of example, lets say the full path is “C:\wmpub\wmroot\TV\Seinfeld“.
  4. Copy the content files that you already generated to this new folder that you created. You can organize them further into subdirectories if you choose but this is not necessary.
  5. Open the Windows Media Services tool from Administrative Tools. Expand your server name and expand the Publishing Points node. Right click on the Publishing Points node and choose “Add Publishing Point (Wizard)…“.
  6. Click Next and then give your publishing point a name. In this case, name it “Seinfeld“.
  7. Click Next and then choose the type of content. In this case, we’ll choose Files (digital media)… etc. This will allow us to stream previously encoded files (WMV files).
  8. Click Next and then choose the type of publishing point. In this case, we’ll choose Broadcast Publishing Point because I like to tune into a stream and have no control over what is playing. This “feels“ more like live TV to me. This way I don’t have to choose an episode and I can join an episode halfway through. If you prefer to control the stream, then you can choose the On Demand publishing point type.
  9. Click Next and then you will be prompted for the location of the content. Type or browse to the location of the content that we copied in Step 4. No need to specify filenames here, just the folder will do.
  10. Click Next and then optionally choose Loop or Shuffle. I would recommend checking both if you want a TV experience.
  11. Click Next and leave unchecked the logging option.
  12. Click Next and leave checked “Start Publishing Point when wizard finishes“ and leave unchecked “Start archiving when publishing point starts“
  13. Click Next and uncheck the box that says “After the wizard finishes:“. I’ll tell you the URL to the stream later and you can create your own HTML pages.
  14. Click Finish and now you are streaming media to the internet!

If your publishing point is red, it may be stopped for some reason. Maybe the folder name is invalid or there are some other problems starting the stream. You can check the event log to look for error details.

Testing out your streaming media:

Now that you have your media server up and running and streaming TV episodes, you will want to test it. The URL for your media stream looks like the following:

mms://servername/Seinfeld

The server name is the IP address or hostname of your media server and the /Seinfeld is the publishing point name. If you called it something else, for example, SouthPark, then you would replace that part.

You can test the stream in Windows Media Player for the PC by clicking File -> Open Url and then typing in the MMS url to your stream. The quality will be crappy on a PC but it’s sufficient for a Windows Mobile device. The av32 profile that we used to encode also will stream over T-Mobile’s GPRS network. I have tested this scenario and I am able to stream video over T-Mobile GPRS with no stopping to buffer (unless I lose a signal or something).

Conclusion

I know this isn’t extremely detailed and I have not covered ANY of the possible problems you can encounter but if you have problems, feel free to email me or post a comment here and I’ll try to help you out.

With all the buzz lately around iPods, podcasting, podwhatevering, etc, people have lost sight of one of the coolest features that Windows Mobile has provided since the earliest days of Pocket PC… Windows Media Player.

I love music, I love TV. Some people have tried talking me into getting an iPod but I refuse to carry yet another device in my pocket. With the SmartPhone, I not only have my entire Exchange mailbox in my pocket, but also a camera, and a built in music player. While the SmartPhone may not be the best at any of these tasks, it certainly is the best at doing all of them.

But one thing that really bothered me about the Audiovox SMT5600 SmartPhone that I bought was the storage limitations. How on earth could I live within the confines of a 512MB miniSD card? Well encoding audio at 64kbps WMA is low enough. The quality is just fine for me for mobile audio through headphones but I wouldn’t want to go much lower than that.

I thought about changing my audio more frequently but that is too much of a hassle for me and its too slow over USB. Instead, I started thinking about my GPRS data plan that gets entirely too little use. I also started thinking about my Windows 2003 Server that’s got a huge 10 megabit internet connection to it.

Within a few hours, I had downloaded Windows Media Encoder and DVD Shrink and encoded some of my Aqua Teen Hunger Force, Futurama, South Park, and SimpsonsDVDs. I posted them up on Windows Media Server in broadcast mode and set up a simple HTML page that can be viewed on the SmartPhone and links to various “channels” which are just all-day-long broadcasts of some of my favorite TV shows. So now I can just tune into streaming TV wherever I am. I am also working on streaming my music to the phone, but I’ll have to work a little harder. Unlike TV where I really don’t care which episode I am watching, music is different for me. I want to have more control over what is playing. So some type of HTML server-side playlist is necessary.

I won’t give out the URL to my media stream cause if I did I’m sure several TV networks would have my head. (Not to mention my ISP.) But while this solution is a bit expensive and dramatic, it really works out great for my needs and it impresses the hell out of people. The benefit of keeping my media on the server and streaming it is that I have several hundred gigabytes of storage space on the server.

For those of you that are interested, I used the av32 profile to encode my video. Using the wmcmd.vbs utility, the command line looked a little something like this:

cscript wmcmd.vbs -input SomeDVDRip.vob -output SomeDVDRip.wmv -profile av32

Pretty simple… I’ll maybe post some more step-by-step instructions later. I’m just rambling now.