yamdi
Yet Another MetaData Injector for FLV
2008-05-24: 1.4
* [Fix] The onLastSecond event did not have the correct timestamp
* [Add] Source code compatible with Win32 (MinGW32) [sfyang]
2008-04-27: 1.3
* [Fix] SCRIPTDATAVARIABLEEND tag of the onMetaData object was missing
* [Add] XML output of the meta data with option -x [teshock]
* [Add] Makefile and manpage [xtat]
2007-05-06: 1.2
* [Fix] Width and height calculation of ScreenVideo stream was wrong.
* [Add] onLastSecond event with option -l
2007-03-21: 1.1
* [Fix] Width and height calculation of H.263 video streams with custom 16bit width and height was wrong.
* [Fix] The onLastSecond event did not have the correct timestamp
* [Add] Source code compatible with Win32 (MinGW32) [sfyang]
2008-04-27: 1.3
* [Fix] SCRIPTDATAVARIABLEEND tag of the onMetaData object was missing
* [Add] XML output of the meta data with option -x [teshock]
* [Add] Makefile and manpage [xtat]
2007-05-06: 1.2
* [Fix] Width and height calculation of ScreenVideo stream was wrong.
* [Add] onLastSecond event with option -l
2007-03-21: 1.1
* [Fix] Width and height calculation of H.263 video streams with custom 16bit width and height was wrong.
yamdi stands for Yet Another MetaData Injector and is a metadata injector for FLV files.
It adds the onMetaData event to your FLV files. yamdi should run under *BSD, Linux and Win32
(tested with FreeBSD, MacOSX, Ubuntu and Windows XP) and is published under the BSD license.
Examples:
yamdi injects the following event into your FLV files:
why?
For a project I had to add metadata to quite large FLV files (over 1GB). The other known free tools (flvmdi and flvtool2) are not suitable for that job because they read the whole file into memory. Because I'm not very familiar with ruby (in order to modify flvtool2) and flvmdi is not open source I took the FLV specs and implemented a metadata injector in C. yamdi uses less memory and is faster.how?
Download the source code from SourceForge.net and extract it with tar:
tar xzf yamdi-1.4.tar.gz
Change into the yamdi directory and compile the source code with:
cd yamdi-1.4
gcc yamdi.c -o yamdi -O2 -Wall
If you are going to handle very big files (bigger than 2GB) the following compile options
have been suggested in the bug tracker:
gcc yamdi.c -o yamdi -O2 -Wall -D_FILE_OFFSET_BITS=64
yamdi accepts six paramters:
| -i | The source FLV file. |
| -o | The resulting FLV file with the metatags. If the output file is '-' the FLV file will be written to stdout. |
| -x | An XML file with the resulting metadata information. If the output file is ommited, only metadata will be generated. This parameter is optional. |
| -c | A string that will be written into the creator tag. This parameter is optional. |
| -l | Adds the onLastSecond event. |
| -h | Displays a description of the available parameters |
yamdi -i sample.flv -o sample_with_metadata.flv
yamdi -i sample.flv -o - > sample_with_metadata.flv
yamdi -i sample.flv -o sample_with_metadata.flv -c "John Doe"
what do i get?
yamdi injects the following metadata into your FLV files:- creator
- metadatacreator
- hasKeyframes
- hasVideo
- hasAudio
- hasMetaData
- canSeekToEnd
- duration
- datasize
- videosize
- videocodecid
- audiosize
- audiocodecid
- audiosamplerate
- audiosamplesize
- stereo
- filesize
- lasttimestamp
- lastkeyframetimestamp
- lastkeyframelocation
- keyframes (filepositions, times)
- width
- height
- framerate
- videodatarate
- audiodatarate
yamdi injects the following event into your FLV files:
- onLastSecond
bugs?
I do not guarantee that yamdi is free of bugs. If you find a bug you can post it here.
© 2008, Ingo Oppermann. All rights reserved.