Prerequisites: Java and a .7z archive extractor
Download these files into a new folder:
Open the ffmpeg.7z archive, navigate to /bin/, extract both ffmpeg.exe and ffprobe.exe into the folder
Run Videncode.jar
* If you aren't using Windows, or want a different version, check here.
You can also install the ffmpeg files into a directory and add the /bin/ directory to your path environment variable rather than put the files directly with Videncode.jar.
This way, Videncode.jar can run from any directory without error.
Videncode can be used to make images that act like .gif, but with more features and more quality.
Video and audio tracks can be completely separate from eachother, both in terms of quality and length.
If they are different lengths, you can choose how they will sync up with eachother during playback.
The automatic quality detection will try to select the best resolution for you based on the available space.
Different modes allow different levels of quality depending on the available bitrate.
Note that in the end, the encoder may need to use a certain minimum quality, and your file size limit may be ignored.
Getting the file size perfectly within the bounds hasn't proved to be an exact art.
Thus, if an output winds up being slightly over your file size limit, try decreasing the limit by a small amount.
That failing, decrease your output quality.
The image tab lets you select the source of the preview image.
It can come from a frame of the video, or a separate external image.
Quality and size selections are available.
The video tab lets you select the video and audio sources and encoding times.
You can also select the encoding settings related to the audio and video.
The sync tab displays the encoding times of the video and audio.
If the audio and video are from the same source, this panel doesn't need to be used.
The encod tab provides the file name editor, tag editor, and a button to encode.
For advanced testing, FFmpeg logs appear on the bottom left.
Application settings are on the right.
And like magic, after the encoding process is done, a 4 minute long video with audio has been encoded in under 3 MB.
The quality is recognizable, but less than desirable. The reason for this is obviously because it was a 4 minute long file.
Making sane choices about video/audio length and quality can lead to nicer results.
Settings are saved in a file called settings.json which is located inside Videncode.jar, or you can place one in the folder.
You can also safely delete the external settings file without consequence.
Finally, there are a few advanced settings in the file which can't be edited in the application, such as the GUI color.
If any bugs or problems are found with Videncode or the Javascript API, they can be reported on this page.
Videncode is written in Java and its source files are available on Github. It comes with a makefile if you want to compile and test for yourself.
The Javascript API source files are located under the gh-pages branch; a better description of what files are related to the API can be found on the API page.
Videncode is a program designed to encode sound/video into an image file. The basic idea is "like .gif, but better" and also with sound.
Videncode creates a format that stores audio and/or video inside of an image. The image is used as a preview for the content.
The typical file extension is .ve*, where the * is replaced with the extension of the image file.
The video file type is .webm; if the video is omitted, the file is an audio-only container.
The audio file type is .ogg Vorbis, either multiplexed into the video, or standalone.
Condition: flags1 has \x01 and \x02 set
The synchronization offset of the video and audio data, in seconds.
In this case, the v encodes the integer part of the number, and the extra 2 bytes encode the decimal portion, as a fixed point number.
Condition: flags1 has \x01 and \x02 set
This section includes the byte length of the video using v bytes, and the video itself encoded using n bytes.
Condition: flags1 has \x01 set
This section includes the byte length of the audio using v bytes, and the audio itself encoded using n bytes.
Condition: flags1 has \x02 set
VP8 can encode much more efficiently than .gif images, allowing longer files, larger resolutions, more colors, and potentially audio.
The aim of .ve* images is to basically have higher quality .gif-style functionality with a few extra features.
There is currently an encoding, decoding, and playback API written for HTML5 using Javascript.
You can test the API on this page; the test includes encoding, decoding, and playback.
You can test files you've created to make sure they work to your liking.
The main API file, ve_api.js, is documented in the file itself. Reading the comments and/or looking at the test code should explain how it's used.
The file is also designed such that it has 3 segments: Videncode, Videcode, and VPlayer. Each section can run on its own, with the exception that VPlayer uses a Videcode object.
For example, if you want to use the Videcode part, but not the Videncode part, you can cut that code out. Alternatively, you can name each of the three classes to whatever you like without error.