Convert movies/clips to VTech Kidizoom Touch 5.0 video format using ffmpeg

Written by - 4 comments

Published on - Listed in Multimedia Linux Personal

The VTech Kidizoom Touch 5.0 is a nice first camera for the (small) kids. It features a 5 MP front camera (hence the 5.0) and a selfie-camera with 2 MP. The camera comes either in blue or pink. Besides the "classical" camera function, the device also has some image editing tools and games on it, making it a multimedia device rather than a simple camera.

Vtech Kidizoom Touch 5.0 Blue and Pink

The screen is a 640x480 pixel touch screen (hence the "Touch" in the product name). By adding a microSD card, the internal storage (which is too small in my opinion) can be extended. I did this with a 16GB microSDHC card. The internal memory is shown as "VT System" when connected to a computer, the micro SD card is shown with the name of the SD card (in my case simply "16 GB Volume".

There is no network connection possible but data can be transferred using a micro USB cable, or by taking out the micro SD card.

What about music and movies?

Creating photos and even videos is fun for the kids. But I wanted to see, if they could also use the camera as a multimedia playback device, too. I haven't decided yet if I am going to actually allow that but I wanted to calm my technical curiosity and figure out what is needed so the device would correctly play multimedia files.

Music -> MP3 player

When the device is connected to your computer a folder called "MUSIC" can be found in the base directory. Simply placing an mp3 file into it does the trick. The audio file can then be played on the Kidizoom Touch in the "MP3 Player" application. That was easy.

Video clips - watch out for the correct codec!

Videos transferred from the computer to the device can be placed into the "DOWNLOAD/VIDEO" folder. However if you simply place a video file into it without re-encoding it, you will most likely get an error "File error." on the device:

Vtech Kidizoom Touch 5.0 File Error

As I was unable to find information about the used codec anywhere, I decided the quickly film a video sequence with the camera and then check out the codec information with mediainfo.

ckadm@mintp /media/ckadm/6231-3961/DCIM/100VTECH $ ll
total 2208
drwxr-xr-x 2 ckadm ckadm   32768 Dec  2  2019 ./
drwxr-xr-x 3 ckadm ckadm   32768 Dec  2  2019 ../
-rw-r--r-- 1 ckadm ckadm 2172510 Dec  2  2019 100_0140.AVI

ckadm@mintp /media/ckadm/6231-3961/DCIM/100VTECH $ mediainfo 100_0140.AVI
Complete name                            : 100_0140.AVI
Format                                   : AVI
Format/Info                              : Audio Video Interleave
File size                                : 2.07 MiB
Duration                                 : 4s 867ms
Overall bit rate                         : 3 571 Kbps
Recorded date                            : 2019-12-02

ID                                       : 0
Format                                   : JPEG
Codec ID                                 : MJPG
Duration                                 : 4s 867ms
Bit rate                                 : 3 239 Kbps
Width                                    : 640 pixels
Height                                   : 480 pixels
Display aspect ratio                     : 4:3
Frame rate                               : 15.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:2
Bit depth                                : 8 bits
Compression mode                         : Lossy
Bits/(Pixel*Frame)                       : 0.703
Stream size                              : 1.88 MiB (91%)

ID                                       : 1
Format                                   : PCM
Format settings, Endianness              : Little
Format settings, Sign                    : Signed
Codec ID                                 : 1
Duration                                 : 4s 528ms
Bit rate mode                            : Constant
Bit rate                                 : 352.8 Kbps
Channel(s)                               : 1 channel
Sampling rate                            : 22.05 KHz
Bit depth                                : 16 bits
Stream size                              : 195 KiB (9%)
Alignment                                : Aligned on interleaves
Interleave, duration                     : 374 ms (5.62 video frames)

mediainfo nicely shows the relevant information: As codec the MJPG video codec was used, video size is set to 640x480 pixel (the size of the display actually).

Re-encode a video with ffmpeg

With the relevant video/codec information from above, any video file can now be re-encoded to match the requirements of the Kidizoom Touch 5.0. I first tried it with Handbrake, however with Handbrake I was unable to select the MJP(E)G codec. My second (but correct) choice was ffmpeg.

The original video file has a 16:9 aspect rate with a dimension of 1280x720 pixel. Using ffmpeg I created three output video files.

The first output file would have a fixed width of 640px and a height of 360px (trying to respect the original 16:9 ratio):

ckadm@mintp /tmp $ ffmpeg -i /tmp/KidMovie.mkv -vcodec mjpeg -vf scale=640:360 /tmp/Miraculous-Vtech.AVI

The second file would use the full display and setting a ratio of 4:3:

ckadm@mintp /tmp $ ffmpeg -i /tmp/KidMovie.mkv -vcodec mjpeg -vf scale=640:480 -aspect 4:3 /tmp/Miraculous-4x3.AVI

And finally the last file would use the full width and a dynamic height (respecting the original 16:9 ratio):

ckadm@mintp /tmp $ ffmpeg -i /tmp/KidMovie.mkv -vcodec mjpeg -vf scale=640:-1 /tmp/Miraculous-Vtech-Dynamic.AVI

Note: I used the same file extension (AVI), same as the video files recorded by the camera do. I did not test if another file extension (such as mpeg) would work.

Once the encoding was completed, the files were transferred to the Kidizoom.

Vtech Kidizoom Touch 5.0 Folder

Playing video files

Time to see if I got this right. Once the device was powered on, the video files were shown in the "Playback" application:

Vtech Kidizoom Touch 5.0 Video files

All of these files could be played (thanks to the correct video codec). I tried to find out some heavy optical difference between the different dimensions of the video files but it seems that the device itself in general simply uses the full display and re-scales the video if needed. So simply using a 640x480 dimension would have been enough.

Add a comment

Show form to leave a comment

Comments (newest first)

Evoloen from Swiss wrote on Dec 25th, 2023:

Does anyone know other hacks, like adding new games

Robert from wrote on Apr 25th, 2022:

Hi, worked so far for me. The problem is that FPS can be higher than 15fps (tested 24&30) but the audio will come unsync. minor detail but yeah you have to think of that.

Still this device astounds me how good its software works on the device. seen worse in 50k eletric cars :D

Franz from wrote on Jul 18th, 2021:

Great. Our daughter will like it.

David from wrote on May 4th, 2020:

It works fine. Thank you.

RSS feed

Blog Tags:

  AWS   Android   Ansible   Apache   Apple   Atlassian   BSD   Backup   Bash   Bluecoat   CMS   Chef   Cloud   Coding   Consul   Containers   CouchDB   DB   DNS   Database   Databases   Docker   ELK   Elasticsearch   Filebeat   FreeBSD   Galera   Git   GlusterFS   Grafana   Graphics   HAProxy   HTML   Hacks   Hardware   Icinga   Influx   Internet   Java   KVM   Kibana   Kodi   Kubernetes   LVM   LXC   Linux   Logstash   Mac   Macintosh   Mail   MariaDB   Minio   MongoDB   Monitoring   Multimedia   MySQL   NFS   Nagios   Network   Nginx   OSSEC   OTRS   Office   PGSQL   PHP   Perl   Personal   PostgreSQL   Postgres   PowerDNS   Proxmox   Proxy   Python   Rancher   Rant   Redis   Roundcube   SSL   Samba   Seafile   Security   Shell   SmartOS   Solaris   Surveillance   Systemd   TLS   Tomcat   Ubuntu   Unix   VMWare   VMware   Varnish   Virtualization   Windows   Wireless   Wordpress   Wyse   ZFS   Zoneminder   

Update cookies preferences