EZ-AV Tools for Unix is a set of CLI tools that give *nix users access to the extended functionality of the EZ-AV brand of digital audio players. So far, this includes video on the EMP-500 model.
I wanted a good-quality MP3 (and primarily Ogg Vorbis) player for some months when I saw that one of the models of what I'd seen advertised as the "XEN EMP" player was available on clearance sale for about £40: further investigation showed that this particular one, the EMP-500 (it seems the full name may be something like "EZAV eNOM XEN EMP-500"; I think Korean companies must like giving products as many names as humanly possible) had originally been available for over £100, and not only had all the general features I wanted (high SNR, Ogg Vorbis support, LCD screen, external batteries), but also played video on the colour graphical LCD! As I've seen such offers disappear far too often, and I'd wanted to have a player for a forthcoming holiday (long plane journeys!), I jumped at it.
Of course, I happen to use Linux, and like most other computer products, this player does not explicitly support Linux. But I'd already figured out that it supported the UMS (USB Mass Storage) standard, and so it should be possible to simply copy music files to and from the player like I would with a USB flash drive. I was right about that at least, although I do tend to see odd error messages whenever I first plug it in (I should find out about these, although I've not seen any problems arise from them).
But what about the video support, which was one of the more compelling features? Well I already understood that the only videos it plays are in the manufacturer's (EZ-AV Co Ltd, of Korea) own proprietary "PFL" format, which obviously requires you to use the Windows software that they put on the bundled CD- as do a few other features the player has (At least, it has done so far...). Much googling and checking of the site's FAQs and forums provided basically no leads in terms of finding such Linuxy alternatives, although I didn't actually go as far as asking; I figured I'd see what I could manage for myself first.
Anyhow. I rather hoped the software in question would work under Wine, the Windows Emulator. Unfortunately it seemed not to be the case, at least with my somewhat old copy. Newer versions might work better, although I get the impression that much of the software expects you to have the player connected, and I doubt Wine would give the appropriate level of access to the player. However, the gadget had a sample file loaded on it, a Korean pop song with an accompanying video. The video file was quite big considering the screen is only 64x96 pixels (it's primarily a music player; video, pictures, text reading etc are nice extras really), but looked quite decent quality IMO. I loaded the PFL file onto my computer and had a look at it, and thought about the ways I might make a format specially for such a device.
Within the day (most of which I'd spent chatting, browsing etc) I managed to get a bit of a handle on the file format. An hour or two later I had a set of scripts that could display somewhat broken versions of individual frames. Next day (today as I write this) I fixed that so it extracts AFAICT proper individual frames, and went on to produce a script that can replace frames of the video with frames of your own making. I uploaded a copy of a so-edited version of the video to the player, and confirmed that yes, it works. YAY ME! Ahem.
Ok, so what does this package so far consist of? Well first, what do the players support generally?
- Video and pictures are on the EMP-500 and the EMP-600; I've seen a download of a version of the official video capture program for the EMP-400 series on the EZAV website, but I'd thought that didn't have a full colour graphical screen so I'm rather confused by that. Perhaps those versions give mono video or something? The "Pebble" devices have a 48x64 monochrome(?) screen, I get the impression they can show images.
- Text display: The EMP-500 at least has a not-much-advertised function whereby plain ASCII text files placed in the /text directory of the player can be selected via the player's browser system thingy, whereupon screenfuls (12-char wide) are displayed sequentially. Control of this seems limited to waiting for the next page (rate is user-controllable), going directly to the next page, and rewinding to the very start of the file. Presumably much the same thing is supported in the other models, but they don't talk about it that much. They also refer to "TTS" (Text to Speech, which AFAICT is just a PC-side thing) and lyric support (where the words are synced to the music), which obviously aren't quite the same, but seem to be given more attention in the manual and the website.
- "Media Sync": This AFAICT is the system whereby displayed text can be synchronised with the audio, eg for lyric support. The website also talks about the internet regarding this, but I don't know where that comes into it, perhaps it means it can use html text? It appears to be supported in most or all of the players.
There are various other functions too, but these are the ones that I can think of ATM. I must also point out that I don't know if those functions above vary in how they're implemented for each device, but I can imagine they would be- eg, my EMP-500 has 4096 colour display, but some others have only 3 colours+greyscale, so I wouldn't think that images/video for one would work on another.
Now, more to the point, what is supported by the tools here? Well not much so far, I've only just started! All there basically is, is some very limited code for working with video for the EMP-500. That code may or may not also work for models such as the EMP-600 which has similar display capabilities; I'd be surprised if it worked on the new Pebble or any of the older models though, which are quite different. I'd like to be able to support as many of the (EZ-AV) players as have video and/or image capability, but I can't really do it alone as I haven't got the time or the knowledge.
What specifically is supported for video on the EMP-500? Well I've got code that manages to extract separate frames out of the video file, either as a PPM file to stdout, or to display directly in a window; I also have another program that does the reverse- it takes an image (has to be very specific size), and a frame number, and replaces that frame of an existing video file with the image. You can, of course, reinsert images that you've already extracted, and they don't have to go back in the same place.
The software cannot yet:
- Create new video files- I don't know if there's any special data in the headers apart from the model identifier. It doesn't look as though there is, but supposedly you can capture videos in the Windows software at either 5fps or 10fps, and so presumably the player needs to be able to tell these types apart, so this would seem the obvious place to put such info.[Addendum: I've found this out now, and can probably do this next release]
- Insert video frames outside the duration of the video (eg, 3 minutes into a 2 minute video). I simply don't know whether it'll accept that or not, because again, I don't know if there's metadata such as the video duration encoded in the headers. If so, I've no idea what the player might make of a malformed file, although it might well not mind at all. [Addendum: I don't think any of this is a concern]
- Do anything whatsoever with still image files- I've not got any, I don't know how different they are to video files, although I understand they're also "PFL" files. I've got a few examples now, and am pretty sure I know everything I need to, to be able to encode them for the next release. Meanwhile you should be able to at least view the things if you have them, by treating them like video files with 1 frame.
- Convert other video formats straight to PFL (once video encoding in general is supported, this should be possible using external tools such as MPlayer etc).
Also, it's purely Command-Line only so far, but I can imagine it being wrapped with a GUI front-end some time.
What's New in This Release:
· The package includes a tool for extracting frames from PFL video files, tools for viewing them directly, and a tool for replacing frames within them.
· Work on support for producing whole new videos and still images was started.
· Incorrect behaviour was fixed.