You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2009/12/15 00:27:31 UTC
svn commit: r890550 - in /lucene/tika/trunk/tika-parsers/src:
main/java/org/apache/tika/parser/video/FLVParser.java
test/java/org/apache/tika/parser/video/FLVParserTest.java
Author: jukka
Date: Mon Dec 14 23:27:31 2009
New Revision: 890550
URL: http://svn.apache.org/viewvc?rev=890550&view=rev
Log:
TIKA-328: Add parser for .flv videos
Minor FLVParser improvements
Modified:
lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/video/FLVParser.java
lucene/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/video/FLVParserTest.java
Modified: lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/video/FLVParser.java
URL: http://svn.apache.org/viewvc/lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/video/FLVParser.java?rev=890550&r1=890549&r2=890550&view=diff
==============================================================================
--- lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/video/FLVParser.java (original)
+++ lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/video/FLVParser.java Mon Dec 14 23:27:31 2009
@@ -153,9 +153,6 @@
InputStream stream, ContentHandler handler,
Metadata metadata, ParseContext context)
throws IOException, SAXException, TikaException {
- XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
- xhtml.startDocument();
-
DataInputStream datainput = new DataInputStream(stream);
if (!checkSignature(datainput)) {
throw new TikaException("FLV signature not detected");
@@ -165,25 +162,31 @@
int version = datainput.readUnsignedByte();
if (version != 1) {
// should be 1, perhaps this is not flv?
- return;
+ throw new TikaException("Unpexpected FLV version: " + version);
}
int typeFlags = datainput.readUnsignedByte();
- metadata.add("hasVideo", Boolean.toString((typeFlags & MASK_VIDEO) != 0));
- metadata.add("hasAudio", Boolean.toString((typeFlags & MASK_AUDIO) != 0));
long len = readUInt32(datainput);
if (len != 9) {
// we only know about format with header of 9 bytes
- return;
+ throw new TikaException("Unpexpected FLV header length: " + len);
}
long sizePrev = readUInt32(datainput);
if (sizePrev != 0) {
// should be 0, perhaps this is not flv?
- return;
+ throw new TikaException(
+ "Unpexpected FLV first previous block size: " + sizePrev);
}
+ metadata.set(Metadata.CONTENT_TYPE, "video/x-flv");
+ metadata.set("hasVideo", Boolean.toString((typeFlags & MASK_VIDEO) != 0));
+ metadata.set("hasAudio", Boolean.toString((typeFlags & MASK_AUDIO) != 0));
+
+ XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
+ xhtml.startDocument();
+
// flv tag stream follows...
while (true) {
int type = datainput.read();
@@ -248,7 +251,7 @@
public void parse(InputStream stream, ContentHandler handler,
Metadata metadata) throws IOException, SAXException, TikaException {
- parse(stream, handler, metadata, null);
+ parse(stream, handler, metadata, new ParseContext());
}
}
Modified: lucene/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/video/FLVParserTest.java
URL: http://svn.apache.org/viewvc/lucene/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/video/FLVParserTest.java?rev=890550&r1=890549&r2=890550&view=diff
==============================================================================
--- lucene/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/video/FLVParserTest.java (original)
+++ lucene/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/video/FLVParserTest.java Mon Dec 14 23:27:31 2009
@@ -27,10 +27,10 @@
String path = "/test-documents/testFLV.flv";
Metadata metadata = new Metadata();
- String content = new Tika().parseToString(FLVParserTest.class.
- getResourceAsStream(path), metadata);
+ String content = new Tika().parseToString(
+ FLVParserTest.class.getResourceAsStream(path), metadata);
- System.out.println(metadata);
+ assertEquals("", content);
assertEquals("video/x-flv", metadata.get(Metadata.CONTENT_TYPE));
assertEquals("true", metadata.get("hasVideo"));
assertEquals("false", metadata.get("stereo"));