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"));