public class FLVParser extends AbstractParser
Parser for metadata contained in Flash Videos (.flv). Resources: http://osflash.org/flv and for AMF: http://download.macromedia.com/pub/labs/amf/amf0_spec_121207.pdf
This parser is capable of extracting the general metadata from header as well as embedded metadata.
Known keys for metadata (from file header):
In addition to the above values also metadata that is inserted in to the actual stream will be picked. Usually there are keys like: hasKeyframes, lastkeyframetimestamp, audiocodecid, keyframes, filepositions, hasMetadata, audiosamplerate, videodatarate metadatadate, videocodecid, metadatacreator, audiosize, hasVideo, height, audiosamplesize, framerate, hasCuePoints width, cuePoints, lasttimestamp, canSeekToEnd, datasize, duration, videosize, filesize, audiodatarate, hasAudio, stereo audiodelay
Modifier and Type | Field and Description |
---|---|
private static byte |
MASK_AUDIO |
private static byte |
MASK_VIDEO |
private static long |
serialVersionUID
Serial version UID
|
private static java.util.Set<MediaType> |
SUPPORTED_TYPES |
private static int |
TYPE_METADATA |
Constructor and Description |
---|
FLVParser() |
Modifier and Type | Method and Description |
---|---|
private boolean |
checkSignature(java.io.DataInputStream fis) |
java.util.Set<MediaType> |
getSupportedTypes(ParseContext context)
Returns the set of media types supported by this parser when used
with the given parse context.
|
void |
parse(java.io.InputStream stream,
org.xml.sax.ContentHandler handler,
Metadata metadata,
ParseContext context)
Parses a document stream into a sequence of XHTML SAX events.
|
private java.lang.Object |
readAMFData(java.io.DataInputStream input,
int type) |
private java.lang.Object |
readAMFEcmaArray(java.io.DataInputStream input) |
private java.lang.Object |
readAMFObject(java.io.DataInputStream input) |
private java.lang.Object |
readAMFStrictArray(java.io.DataInputStream input) |
private java.lang.String |
readAMFString(java.io.DataInputStream input) |
private int |
readUInt24(java.io.DataInputStream input) |
private long |
readUInt32(java.io.DataInputStream input) |
parse
private static final long serialVersionUID
private static int TYPE_METADATA
private static byte MASK_AUDIO
private static byte MASK_VIDEO
private static final java.util.Set<MediaType> SUPPORTED_TYPES
public java.util.Set<MediaType> getSupportedTypes(ParseContext context)
Parser
context
- parse contextprivate long readUInt32(java.io.DataInputStream input) throws java.io.IOException
java.io.IOException
private int readUInt24(java.io.DataInputStream input) throws java.io.IOException
java.io.IOException
private java.lang.Object readAMFData(java.io.DataInputStream input, int type) throws java.io.IOException
java.io.IOException
private java.lang.Object readAMFStrictArray(java.io.DataInputStream input) throws java.io.IOException
java.io.IOException
private java.lang.String readAMFString(java.io.DataInputStream input) throws java.io.IOException
java.io.IOException
private java.lang.Object readAMFObject(java.io.DataInputStream input) throws java.io.IOException
java.io.IOException
private java.lang.Object readAMFEcmaArray(java.io.DataInputStream input) throws java.io.IOException
java.io.IOException
private boolean checkSignature(java.io.DataInputStream fis) throws java.io.IOException
java.io.IOException
public void parse(java.io.InputStream stream, org.xml.sax.ContentHandler handler, Metadata metadata, ParseContext context) throws java.io.IOException, org.xml.sax.SAXException, TikaException
Parser
The given document stream is consumed but not closed by this method. The responsibility to close the stream remains on the caller.
Information about the parsing context can be passed in the context parameter. See the parser implementations for the kinds of context information they expect.
stream
- the document stream (input)handler
- handler for the XHTML SAX events (output)metadata
- document metadata (input and output)context
- parse contextjava.io.IOException
- if the document stream could not be readorg.xml.sax.SAXException
- if the SAX events could not be processedTikaException
- if the document could not be parsed