N900 Video Encoding

(corrected typo)
(The page is now fully merged with Video encoding)
 
(One intermediate revision not shown)
Line 1: Line 1:
-
= N900 Video Encoding =
+
#REDIRECT [[Video encoding]]
-
 
+
-
The N900 is a huge step up from the previous Internet Tablets when it comes to playing video files. It is capable of playing full 480p (854x480) files encoded with a variety of codecs, particuarly H.263 (MPEG4 Part 2/Xvid) and H.264 (MPEG4 Part 10). However, it still has some limitations which you need to be aware of to successfully transcode files to play back on the N900.
+
-
 
+
-
== Handbrake ==
+
-
 
+
-
[http://www.handbrake.fr Handbrake] is a tool for doing transcoding that has specific support for DVDs as well as normal files. The latest version (0.94) has significantly improved DVD and H.264 support
+
-
 
+
-
=== An N900 compatible profile ===
+
-
 
+
-
While Handbrake's 'Universal' and 'iPhone' profiles will product compatible files, it will do so at a lower quality level than the N900 supports, so its worth using a more optimised profile. This is available [http://intr.overt.org/misc/Baseline@3.0.plist here].
+
-
 
+
-
== Preferred Formats ==
+
-
 
+
-
There are three main aspects to the format of media files:
+
-
 
+
-
* The Video Codec
+
-
* The Audio Codec
+
-
* The Container format
+
-
 
+
-
=== Video Codec ===
+
-
 
+
-
Two of the most popular codecs are H.263/XVid and H.264. Handbrake can produce files in both formats but it heavily emphasizes H.264. At a given file size, H.264 will result in better looking video, at a cost in increased encoding time. The cost is worth it, especially in the Handbrake context, where there is only a single basic Xvid profile and no tweaking allowed.
+
-
 
+
-
=== The Audio Codec ===
+
-
 
+
-
On the audio side, the two main supported choices are MP3 and AAC. AAC is better than MP3 at the same bitrate so you should always choose AAC. MP3 support is only useful for compatibility.
+
-
 
+
-
=== The Container format ===
+
-
 
+
-
Handbrake can only produce mkv and mp4 files and the N900 only supports mp4 out of the box. mkv files have additional features, but the N900's media player doesn't support any of them, so lack of support is not a significant disadvantage at this time.
+
-
 
+
-
=== Subtitle Support ===
+
-
 
+
-
Subtitle support is one area where options are severely limited - the N900 media player doesn't handle them. So, the only choice available is 'burned' subtitles - where Handbrake renders them into the video stream.
+
-
 
+
-
=== Extra codec support ===
+
-
 
+
-
The [http://maemo.org/downloads/product/Maemo5/decoders-support/ Decoders Support] package adds support for some extra codecs and containers. Most particularly it adds support for mkv containers and ac3 audio tracks. As mentioned above, mkv container support isn't compelling. ac3 audio is interesting because most DVD audio tracks are encoded in ac3. This would allow you to copy the audio track without transcoding it. However, this is not necessarily ideal. Firstly, ac3 decoding will be done by the CPU, while AAC decoding is offloaded to a DSP which reduces power consumption. Secondly, you're not going to be able to take advantage of surround sound - meaning that storing a full 5.1 audio track wastes space.
+
-
 
+
-
You can also add Ogg Vorbis support to the N900 but that also suffers from lack of DSP acceleration.
+
-
 
+
-
So, I wouldn't recommend using any of these options even though they are available.
+
-
 
+
-
== Frame rates ==
+
-
 
+
-
The N900 has very flexible framerate support. It will handle 24, 25 and 30 fps files without complaint. Additionally it can handle variable-frame-rate files, which will be what you get if you transcode anime DVDs. Handbrake is smart enough to handle these kinds of videos and the N900 preset has the appropriate options turned on to do it.
+
-
 
+
-
== Hardware limits ==
+
-
 
+
-
The N900 essentially supports H.264's Baseline@3.0 profile. This particularly means that features like CABAC and B-Frames are not supported. These limits are reflected in the preset I provided. From a resolution point of view, it supports up to 854x480 and doesn't support 1280x720. The actual limit is unknown and in reality, it's inefficient to use even 854x480 because that's bigger than the screen.
+
-
 
+
-
On the audio side, there are no noticeable limitations. You will want to use AAC with a bitrate no more than 160kbit and 48KHz, which is what is used everywhere.
+
-
 
+
-
== Software limits ==
+
-
 
+
-
The N900's default media player adds additional limitations - some of which will hopefull be fixed in due course.
+
-
 
+
-
=== Anamorphic resolution support ===
+
-
 
+
-
DVDs are stored at a resolution of 720x480 but displayed at either 640x480 (for 4:3 video) or 854x480 (for 16:9 video). This means that video frames are stored 'anamorphically' - meaning that they are displayed at a different size from what they are stored at. Particularly, this means that the video frames have non-square pixels. Unfortunately, the media player doesn't understand this and will display the video at 720x480, resulting in squashed or stretched video. So, you must resize the video in Handbrake to ensure pixels are square.
+
-
 
+
-
=== Streaming video ===
+
-
 
+
-
The media player supports streaming video from http urls, but you must be aware of two things. First, in Handbrake you must ensure the 'Web Optimized' checkbox is ticked for mp4 files. This is already in my preset. Without it, you cannot stream the files. Secondly, the buffering algorithm is not designed to handle high bitrate files that would play normally from local storage. This means that you'll see a lot of pausing and buffering messages. It seems the highest bitrate it will stream happily is about 1MBit/s including audio. The preset is optimized for local storage - you can tweak it to produce smaller files if you need to stream.
+
-
 
+
-
== Choosing a resolution ==
+
-
 
+
-
As mentioned above, you'll have to resize all DVDs you try to transcode, and maybe other files too. So it's good to know what target resolutions to use.
+
-
 
+
-
=== 4:3 DVDs ===
+
-
 
+
-
4:3 DVD video is easy to handle. Just resize to 640x480.
+
-
 
+
-
=== 16:9 DVDs ===
+
-
 
+
-
For 16:9 DVDs, it's harder. 854x480 is a valid choice, but the N900 will have to scale it down to display, so a better choice is 800x448 - which exactly fits on the N900 display. This means you are throwing away vertical detail and bloating the file horizontally but it's the least worst choice without anamorphic support.
+
-
 
+
-
=== Letter box DVDs ===
+
-
 
+
-
Occasionally, you'll see a DVD with widescreen content inside a 4:3 frame - so the black borders are in the actual video. To make the video display nicely, you'll need to use handbrake's crop feature to cut out the black bars. This is a pretty involved process because you're cropping the original anamorphic frame but need to store it with square pixels. So you might crop to 720x360 (16:9 inside 4:3) and then store it as 720x408 to get square pixels. For even wider movie content, you're vertical resolution will be even lower (272 and 306 respectively for 2.35:1 content)
+
-
 
+
-
=== SD sources ===
+
-
 
+
-
SD sources will generally have square pixels and 480p or less. You can keep the source resolution unchanged or if you have a true 854x480 source, shrink it to 800x448 as with DVDs.
+
-
 
+
-
=== HD sources ===
+
-
 
+
-
If you're scaling down an HD source, you'll want to target 800x448 as well. If the file is a movie that is wider than 16:9, the vertical resolution will be lower than 448 - just set the width to 800 and maintain the aspect ratio. Essentially all HD content has square pixels.
+
-
 
+
-
== Alternative Media Players ==
+
-
 
+
-
You can, of course, use vlc or mplayer to play back files and all of these limitations will be removed. In exchange, you won't get any DSP accelerated video - which will eat battery life and introduce a new set of limitations based on CPU power.
+

Latest revision as of 13:58, 4 January 2010

  1. REDIRECT Video encoding