So, I decided to try and find a cheap little MP3 player that could also play videos that I could get for my kid brother, and instead of deciding to shop on Amazon and do the whole let’s be patient thing, I instead hit up all the retail stores until I found what was available right then. I ended up with an “RCA Wireless MP3 Player”.
I read a bit about it online looking at its specs, and it does indeed play video, but its listing of formats is non-existent. Which, while it would make most people run away, I am of course intrigued and wondering what kind of horror I can find in this thing.
The box itself doesn’t mention anything about video playback and if I’d seen it by itself in the store, I would have just ignored it to begin with. It does say “Full Color Display” on the back, though, which is still ambiguous. There’s a little video icon right next to the music one, and that would have been enough for me to grab it right there.
So I bought one, to see what it can do. It’s not unusual for the documentation or displayed features say it ONLY supports one format or codec, and then they actually have more. I’ve seen that happen with … something else … can’t remember what it was. I think maybe it was my PSP 1000 that said it couldn’t support main profile of H.264, but it did with one tweak … or something… anyway.
The docs say that it supports AMV playback — a video format that is a variation of AVI. I looked to see if ffmpeg / libav supported encoding to it natively, and they don’t. They can play them back just fine, though. So that’s good. (Note: you can get some good samples from MPlayer’s sample repo.)
Oh, maybe ffmpeg does do it. Hmm. Oh well, I couldn’t get it working anyway, but I haven’t tried *that* hard yet. I’ve got 3.4.2 here on my laptop:
$ ffmpeg -codecs | grep -i amv DEVIL. amv AMV Video D.A.L. adpcm_ima_amv ADPCM IMA AMV
And on my multimedia server, libav 12.2:
$ avconv -codecs | grep -i amv D.VIL. amv AMV Video D.A.L. adpcm_ima_amv ADPCM IMA AMV
It’s not at all unusual for the libav project to drop codecs, containers, formats, etc. that are legacy or unmaintained or whatever else, so that could explain why there’s no encoder.
(Maybe it was my old Samsung flip phone that supported a higher level of H.264. I still can’t remember. Insert note here that if you have old hardware that can playback video, I’d love to tinker with it if you wanna send it my way.)
There is a patch to add AMV support to FFMPEG that one hardy user went through the trouble of creating. It’s old, but functional. I grabbed my copy of the ffmpeg branch at https://github.com/tomvanbraeckel/amv-codec-tools/tree/master/AMVmuxer/ffmpeg
So I downloaded that sucker, and had to build it manually. I have an ffmpeg configure script I already use, and I tweaked it to work on this one:
steve@tobe ~ $ cat ~/bin/config-amv-ffmpeg #!/bin/bash ./configure --prefix=/usr/local/amv-ffmpeg \ --enable-gpl --enable-pp \ --enable-static \ --disable-shared \ --disable-ffserver \ --disable-libogg --disable-libtheora --disable-libvorbis \ --disable-encoder=snow --disable-decoder=snow \ --enable-libmp3lame \ $*
Ran that, built it, it complained bout building the docs, but I didn’t care. The binaries compiled. Oh yes, it failed on building snow as well, so skipped that.
The player shipped with their own AMV video, RCA_Bluetooth_Video_converted.amv which actually looks pretty good. These are the full 160×120 snapshots here:
Not too shabby overall, and it makes me want to actually get this working.
It’s worth noting at this point that I did something similar for my Sansa Fuze, getting really small videos to look really good, despite the video dimensions and hardware, so duplicating the same thing here is not really much of a stretch. Different hardware mostly.
I tried using amv-ffmpeg to do some encodes, and I could get it running just fine against a DVD source (using dvd_copy, of course). I had DSV sitting on my desk, so I started with that. It looked bad. Really bad. I thought that maybe my encoding settings were wrong and so I played with the video bitrate.
First off, though, here’s the baseline to get it encoding that I originally found:
amv-ffmpeg -i dvd_track_01.vob -f amv \ -s 160x120 -r 16 -ac 1 -ar 22050 \ -qmin 3 -qmax 3 -y dvd_track_01.amv
Nothing out of the ordinary there, basic specs are the video size, 16 frames per second, audio rate at 22k, and a generic video quality setting.
I had some G.I. Joe sitting around as well because I had just bought it, and originally started looking at that as some encodes. Here’s what it came up with:
That actually looks *pretty good* right there. I mean, you’re already not going to expect much, but cartoons smooth out pretty well on smaller sizes so you can watch it and not really be too annoyed.
It wasn’t until I was doing my live action on DSV that I realized that the quality was about half of what it could be. I played around with it a bit, assuming it was just a fluke or me not using some optimal settings, but no matter what, it wouldn’t turn out very good.
Finally, getting a little frustrated, I just re-encoded the original AMV shipped with the player, assuming that it’d come out at similar quality. Nope.
I played with the video quality settings a bit, bumping it up to 8192k, but it wasn’t happening. There’s a good chance that my video quality settings aren’t done quite right, and that’s the real blocker right now.
I pretty much gave up at this point, though. I was already set back quite a bit that I’d have to have a separate (and older) ffmpeg installed *just* to encode stuff to AMV. In reality, though, I was really hoping that I could get it working, and then I’d have a good excuse to hack on ffmpeg some and get the AMV patches up to speed.
Oh, well. For my little brother I’ll get him something else that he can watch video on, but for me, I love the idea of having something that I can actually playback this interesting format that I know so little about.