Posts Tagged ‘ffmpeg’

(on Technorati , Del.icio.us)

Playing Video from your Linux PC on your Wii

Maybe you’ve watched youtube videos on your Wii using the Internet Channel or the promo videos on the Nintendo Channel and you thought it would be cool to watch other videos from your (Linux) PC. I know I did. But I wasn’t sure if it would be possible in a reasonable quality. Since then, I’ve decided the quality was unacceptable for me… But I’ll try to quickly document what I did for others.

You basically have two options: Put a decompressed copy of your video on your SD card and watch it in the Photo Channel OR watch it streaming from your PC over your network via the Internet Channel (like youtube).

1. Playing it directly off your SD card

Instructions for how to convert the video to play in the Photo Channel can be found here:
http://icculus.org/~dolson/wii-video-conversion.html
HOWEVER, 3/4 of an hour of decent quality video will cost 1+ gigabytes, due to the format. The quality will be maintained, but unless you have a 2GB card and/or small videos, this may not be feasible. I couldn’t get my 45min (350MB originally, I think) file to fit on my 1GB SD card in the appropriate format, so I gave up on this method. I was more interested in browsing multiple files on my PC, anyways.

On to the other option….

2. Stream it from your computer

For this method, you need a few more things:

  • A home PC accessible from the network via your Wii
  • Videos you want to play need to be converted to Flash video (FLV). To do this, you will need ffmpeg.
  • sudo aptitude install ffmpeg
  • Web server running on your home PC. I’m using Apache on an Ubuntu PC.
  • sudo aptitude install apache2 apache2-utils

Most of what follows can be configured, but I’m going to try and follow what’s default in Ubuntu (if I can remember correctly).

To keep things clean, I enabled user directories. To do this, you must enable the userdir mod in apache:

sudo a2enmod userdir

What are user directories?

This is a directory (usually called “public_html”) that every user can use to publish things (like webpages) on the webserver from their home directory. For me, my home directory is /home/steve/ so my user directory is /home/steve/public_html/ . It is optional, so I have to create it if it doesn’t already exist.

mkdir ~/public_html/

When accessing these user directories via a web browser (Internet Channel), you must enter your Home PC’s IP address, followed by a tilde (~) and your username.

"http://your.pc's.ip.address/~username/"

So accessing my public_html directory is done as follows: http://192.168.0.99/~steve/ . (Note that 192.168.0.99 is a private IP address and unless your computer is set up on your local network with the same IP AND your username is “steve”, this won’t work for you. 😉 )

Test it, and make sure you’ve installed Apache and set up user directories correctly.

Flash Video Player

Now you need a compatible flash player to embed into your webpage. Wii’s Internet Channel is based on Opera, and includes Flash version…. 7?! Doh! Newer FLV players won’t work! Also, Full-screen mode isn’t possible so you want the video to be as large as possible, or to be easily zoomed in and centred – yup, it’s a pain. The best player I found for this was FLV Player, but feel free to look around for more. 😉 Now put your player of choice (I chose player_flv_maxi.swf) in public_html somewhere so that it can be included in your webpage.

Example Preparing Video

An example command for converting your video to FLV using ffmpeg:

ffmpeg -i input_video.avi -ar 22050 -b 1280 -s 320x240 output.flv

Example Webpage

An example of an html page containing a video:

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
	<title>Wii Video Test</title>
 
	<style type="text/css">
		body { background-color: #000; padding: 0 20px; color:#000; font: 13px/18px Arial, sans-serif; }
		a { color: #360; }
		h3 { padding-top: 20px; }
	</style>
 
</head>
<body>
 
    <object type="application/x-shockwave-flash" data="player_flv_maxi.swf" width="624" height="352">
        <param name="movie" value="player_flv.swf_maxi" />
        <param name="allowFullScreen" value="true" />
        <param name="FlashVars" value="flv=my_converted_video.flv&amp;autoload=1" />
    </object>
 
</body>
</html>

Note: both player_flv_maxi.swf and my_converted_video.flv must be in the same directory as this html page. For testing purposes, call this index.html and put it in your public_html directory.

That’s it, I think. Again, I wasn’t really satisfied with the compression of FLVs and the frame rate of bigger videos, so I ended up not using either of these two methods. I suppose a media PC, Apple TV, or PS3 or something would be better suited – none of which I have. 🙂

Related