LeapFrog Pollux Platform: Upload Videos

From eLinux.org
Jump to: navigation, search

One thing seemingly missing from the stock LeapFrog Connect is the ability to upload your own video to the devices. (Some devices can upload MP3 files with recent firmware upgrades.) You can buy video from the LeapFrog store but there's no facility for getting your own video from your computer up to the LeapDevice. This page describes how to do that using LeapFrog Pollux Platform: OpenLFConnect.

Note: As of this writing, this technique has only been tried on a LeapPad1_Explorer with upgraded firmware. YMMV depending on device and firmware.

General Use

After setting up OpenLFConnect, run it and use the command 'dftp_connect' to connect to your device. Use regular Unix-style 'ls' and 'cd' commands to navigate the structure. See the LeapFrog Pollux Platform: OpenLFConnect page for more information about using OpenLFConnect.

Restoring Previously Taken Video

If you have videos that you downloaded from the device, taken by a device capable of taking its own videos, then you can upload them back to the directory that they would have been on the device initially. There is a MyVideos directory under the user data directory. It is not known if this technique works for all devices that have MyVideos or if any additional thumbnail generation is necessary.

Create New Video Application

Another way to upload videos is to make a video into an application, in the same way that you would download an application from the LeapFrog store. In fact, this technique relies upon you having already downloaded at least one video on to the device. To do this, you will need that existing downloaded video and a working OpenLFConnect connection.

With the connection open and in remote mode, navigate to the path that holds the applications and list the directory contents:

remote> cd /LF/Bulk/ProgramFiles
remote> ls

You'll see a list of the applications currently loaded on the device. Unfortunately, the names are just hex IDs so there's no way to know which application is which unless you look in each application directory. Either download the whole ProgramFiles directory using the 'download' command in OpenLFConnect and then use a 'grep -r' to search on the local file system. Or on the remote Leap device, navigate to each application directory one by one and 'cat' the meta.inf file. You are looking for an application that has a type of Video (which you can see on the Leap device screen as the label on the icon) and then you are looking for the name of that application in the meta.inf file. Once you find the existing Video application directory, download it from the Leap device to your local computer.

On the local computer, in a separate terminal session, copy the directory you just downloaded. The new copy should be named exactly the same as the old but increment the last digit by 1. So if the original directory is "0x001A001A-000000", the new copy will be "0x01A001A-000001".

Now, in the new copied directory, start by deleting the md5 file. It doesn't appear to be needed and there's no point trying to remake it. The App.so file is the executable that will play your video so you can leave that alone. The previewimage.png file doesn't appear to be used but it is harmless so you can leave it. You will want to create a new icon for your video to distinguish it from the original so you should create a new version of the iconLPAD.png file. (Note that it could be that devices other than LeapPads use the previewimage.png file instead of iconLPAD.png file - if this is the case, you will want to modify the file that is appropriate for your device. Trial and error should be easy enough to get the right result.) The iconLPAD.png file should be a transparent image and should match the size of the existing one. The label "Video" is actually in the icon image, so you can leave that from the original you are modifying.

For the video content, you will want to delete the video file in your copied directory. In the source directory, use VLC to play the original video and use the Media Information option to get the Codec info. This is where you will learn what video the App.so executable is expecting to play. Your new video should match that so the App.so knows how to play it. The application I used needed an OGG file with Theora video and Vorbis audio so here is the command that I used to create that video from a MythTV recording file:

ffmpeg -i <inputfilename>.mpg -acodec libvorbis -ac 2 -ab 56k -ar 16000 -vol 1792 -r 15 -s 400x300 <outputfilename>.ogg

Edit the VideoInfo.json file to include the new name of the file you created and update the length of the video in seconds. You can also update the meta.inf file with this info. The GameInfo.json file doesn't seem to have any content that needs changing.

With your newly manually built application, it is time to upload it to the LeapPad. Be sure to upload it to the ProgramFiles directory where you got your source application and of course, be sure not to overwrite anything that is already there. When you 'dftp_disconnect' and unplug the USB cable, you should see your new application and the video should work.

You will probably need to experiment with screen resolution sizes. The application I copied had a source video that was anamorphic (for god knows why) and I believe part of the App.so was to squish it down. That made finding the right target conversion a challenge and the VideoInfo.json file contains both video resolution and display resolution settings that don't seem to always work.