I have a PSP 1000 (the very first model) that I use to playback video on, just for fun.
ffmpeg used to have a preset output for it, but no more. Encoding for the hardware is simple enough, with the right settings.
These playback settings are designed to run with the most recent firmware, version 6.61.
Playback is at 480×272, with a 16:9 aspect ratio.
The video player does have support for chapters, but adding them to the MP4 doesn't have any effect. [Note: when using HandBrake. Probably need to use the proper supported subtitle formats for MP4]
If you're encoding something video that's widescreen, then scale the width to 480 so that you're using the entire length and have black bars on top and bottom. On the other hand, if it's fullframe, then do a height of 272 so it's not stretching the video, and you have black bars on the left and right.
The official manual lists these MPEG4 formats that can be played:
- MPEG-4 Simple Profile (AAC)
- H.264/MPEG-4 AVC Main Profile (CABAC) (AAC)
- Baseline Profile (AAC)
The baseline profile has less features than the main. The x264 encoding settings using the Main profile will set the amount of B-Frames to 3. However, the PSP won't work with any encoding higher than 1. So any changes to the default encoding here reflect that one difference. (also note that the linked article above disables more features than this – I started with his configuration – which worked great – and then tweaked until I found mine)
- Scale video automatically
- Use x264 encoder, main profile except limit B-frames to 1
- x264 medium preset for encoding level
- Drop # of audio channels to 2 (stereo), although in this sample it's already set to 2
- Drop any subtitles
For a video source that is wider than it is taller (basically, anything widescreen), set the width to 480:
avconv -y -i video.mp4 -sn -vf scale=480:-1 -c:v libx264 -x264-params bframes=1 -profile:v main -ac 2 bravia.mp4
For a video source that is taller than wider (pan & scan), set the height to 272:
avconv -y -i video.mp4 -sn -vf scale=-:272 -c:v libx264 -x264-params bframes=1 -profile:v main -ac 2 bravia.mp4
On one of these you may have it complain about how it can't find the width or height. That's because it's auto-calculation is ending on an odd number – for example, 480:183. You'd have to manually round the second number to the nearest number divisible by 2 (here, 182 or 184).
The video player itself for the PSP will list a video as “Unsupported Data” if it can't be played back. However, don't depend on this icon completely as proof of failure. Some files it will show the video icon, but then have “This video cannot be played.” when trying to watch it. An example being where something's encoded with the Main x264 profile alone.
Using HandBrake to encode the video from a DVD, here are the settings used:
- x264 encoder, main profile except limiting to 1 B-Frame
- Set the width to 480, the max display size for the PSP (since these are widescreen movies, it's safe to assume that the width will max out first)
HandBrakeCLI -e x264 --encoder-profile main -x bframes=1 -w 480 -i /dev/dvd -o movie.mp4
The PSP video player control panel has chapter support, but playing back video with HandBrake adding them (
-m) doesn't make a work.
My little brother's favorite PSP game was Star Wars Battlefront II so it seems only appropriate to have a screenshot of the original feature film found on the bonus DVD:
In this case, the height was 208 after autocropping the original video for this movie.
For subtitles, they must be burned into the video directly, either VOBSUB or Closed Captioning will work.
HandBrakeCLI -e x264 --encoder-profile main -x bframes=1 -w 480 --subtitle-burned 1 -i /dev/dvd -o movie.mp4