Author: michiel
Date: 2009-07-03 09:04:05 +0200 (Fri, 03 Jul 2009)
New Revision: 36532
Added:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegRecognizer.java
Removed:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/MimeType.java
Modified:
mmbase/trunk/applications/streams/Makefile
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.fields.xml
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Analyzer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerLogger.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/ChainedAnalyzer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Recognizer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
mmbase/trunk/applications/streams/src/main/resources/org/mmbase/streams/resources/createcaches.xsd
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
Log:
in->out, 'recognizer', details
Modified: mmbase/trunk/applications/streams/Makefile
===================================================================
--- mmbase/trunk/applications/streams/Makefile 2009-07-03 07:03:20 UTC (rev
36531)
+++ mmbase/trunk/applications/streams/Makefile 2009-07-03 07:04:05 UTC (rev
36532)
@@ -33,7 +33,12 @@
mkdir -p results
java org.mmbase.streams.transcoders.FFMpegTranscoder
samples/mahnamahna.mpg results/mahnamahna.h264
+test.recognize: samples/mahnamahna.mpg
+ java org.mmbase.streams.transcoders.FFMpegRecognizer
samples/mahnamahna.mpg
+ java org.mmbase.streams.transcoders.FFMpegRecognizer samples/test.mp3
+ java org.mmbase.streams.transcoders.FFMpegRecognizer samples/test.jpeg
+
transcode:
java Transcode samples/mahnamahna.mpg -o results/mahnamahna.avi
Modified:
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.fields.xml
===================================================================
---
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.fields.xml
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.fields.xml
2009-07-03 07:04:05 UTC (rev 36532)
@@ -33,6 +33,10 @@
</datatype>
</field>
+ <field name="mimetype">
+ <datatype base="eline" xmlns="http://www.mmbase.org/xmlns/datatypes" />
+ </field>
+
<field name="objecttype" state="virtual">
<datatype base="objecttype" xmlns="http://www.mmbase.org/xmlns/datatypes">
<pattern value="audiostreamsources|videostreamsources|streamsources" />
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -91,9 +91,15 @@
for (int i = 0; i <= ellist.getLength(); i++) {
if (ellist.item(i) instanceof Element) {
Element el = (Element) ellist.item(i);
- if (el.getTagName().equals("transcoder")) {
+ if (el.getTagName().equals("transcoder") ||
el.getTagName().equals("recognizer")) {
String id = el.getAttribute("id");
- Transcoder transcoder = (Transcoder)
Instantiator.getInstanceWithSubElement(el, id);
+ Transcoder transcoder;
+ if (el.getTagName().equals("transcoder")) {
+ transcoder = (Transcoder)
Instantiator.getInstanceWithSubElement(el, id);
+ } else {
+ Recognizer recognizer = (Recognizer)
Instantiator.getInstanceWithSubElement(el);
+ transcoder = new
RecognizerTranscoder(recognizer, id);
+ }
String in = el.getAttribute("in");
if (in.length() > 0) {
transcoder.setInId(in);
@@ -111,6 +117,9 @@
}
}
}
+ if (newList.containsKey(id)) {
+ LOG.warn("" + newList + " already
contains an entry with id " + id);
+ }
newList.put(id, def);
} else if
(el.getTagName().equals("localhost")) {
int max =
Integer.parseInt(el.getAttribute("max_simultaneous_transcoders"));
@@ -231,7 +240,7 @@
thisJob.setThread(Thread.currentThread());
int result = 0;
try {
- LOG.info("Using " + thisJob.clones);
+ LOG.service("Using " + thisJob.clones);
for (final JobDefinition jd : thisJob) {
logger.service("NOW doing " + jd);
URI in = jd.getIn();
@@ -467,10 +476,18 @@
if (jd.transcoder.getInId() == null) {
inURI = inFile.toURI();
} else {
- inURI =
clones.get(jd.transcoder.getInId()).getOut();
+ JobDefinition other =
clones.get(jd.transcoder.getInId());
+ if (other == null) {
+ logger.warn("No job definition with id '"
+ jd.transcoder.getInId() + "' found");
+ inURI = null;
+ } else {
+ inURI = other.getOut();
+ }
}
- JobDefinition clone = new JobDefinition(jd,
resultNode, inFile.toURI(), outFile.toURI());
- clones.put(id, clone);
+ if (inURI != null) {
+ JobDefinition clone = new JobDefinition(jd,
resultNode, inURI, outFile.toURI());
+ clones.put(id, clone);
+ }
} else {
JobDefinition clone = new JobDefinition(jd, null,
inFile.toURI(), null);
@@ -497,7 +514,7 @@
throw new UnsupportedOperationException();
}
public JobDefinition next() {
- if (current != null) {
+ if (current != null && current.getResultNode() != null) {
File outFile = new File(FileServlet.getDirectory(),
current.getResultNode().getStringValue("url").replace("/", File.separator));
current.getResultNode().setLongValue("filesize",
outFile.length());
current.getResultNode().setIntValue("state",
@@ -524,7 +541,9 @@
}
}
busy++;
- current.getResultNode().setIntValue("state",
State.BUSY.getValue());
+ if (current.getResultNode() != null) {
+ current.getResultNode().setIntValue("state",
State.BUSY.getValue());
+ }
return current;
}
@@ -560,7 +579,11 @@
}
}
final NodeManager caches =
node.getCloud().getNodeManager(node.getNodeManager().getProperty("org.mmbase.streams.cachestype"));
- return caches.createNode();
+ Node newNode = caches.createNode();
+ newNode.setNodeValue("id", node);
+ newNode.setStringValue("key", key);
+ newNode.commit();
+ return newNode;
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -11,6 +11,7 @@
import org.mmbase.applications.media.Format;
import org.mmbase.applications.media.Codec;
+import org.mmbase.applications.media.MimeType;
import java.net.*;
import java.lang.reflect.*;
import java.io.*;
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Analyzer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Analyzer.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Analyzer.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -28,6 +28,9 @@
*/
int getMaxLines();
+
+ void addLogger(Logger l);
+
/**
* Analyzes a line of logging of
* @param l This line
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerLogger.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerLogger.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerLogger.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -45,7 +45,7 @@
LOG.warn(e.getMessage(), e);
}
} else if (! commited) {
- LOG.info(" " + source.getNumber() + " " + source.getChanged());
+ LOG.service(" " + source.getNumber() + " " + source.getChanged());
if (source.isChanged()) {
source.commit();
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -25,14 +25,18 @@
public final class AnalyzerUtils {
- private AnalyzerUtils() {
- // no instances for this class
+ private static final Logger LOG =
Logging.getLoggerInstance(AnalyzerUtils.class);
+
+
+ private final ChainedLogger log = new ChainedLogger(LOG);
+ AnalyzerUtils(Logger l) {
+ log.addLogger(l);
}
- private static final Logger log =
Logging.getLoggerInstance(AnalyzerUtils.class);
- public static long getLength(String l) {
+
+ public long getLength(String l) {
String[] duration = l.split(":");
int i = duration.length - 1;
long len = (long) (Float.parseFloat(duration[i]) * 1000L); // secs
@@ -58,16 +62,16 @@
private static final Pattern DURATION = Pattern.compile("\\s*Duration:
(.*?), start: (.*?), bitrate: (.*?) kb/s.*");
- public static boolean duration(String l, Node source, Node des) {
+ public boolean duration(String l, Node source, Node des) {
Matcher m = DURATION.matcher(l);
if (m.matches()) {
Node fragment = source.getNodeValue("mediafragment");
long length = getLength(m.group(1));
source.setLongValue("length", length);
- log.info("Duration: " + m.group(1));
- log.info("Start: " + m.group(2));
- log.info("BitRate: " + m.group(3));
+ log.debug("Duration: " + m.group(1));
+ log.debug("Start: " + m.group(2));
+ log.debug("BitRate: " + m.group(3));
source.setIntValue("bitrate", 1000 * Integer.parseInt(m.group(3)));
return true;
} else {
@@ -75,23 +79,43 @@
}
}
- public static void toVideo(Node source, Node dest) {
+ public void toVideo(Node source, Node dest) {
Cloud cloud = source.getCloud();
if (cloud != null) {
- log.service("This is video, now converting type. source: " +
source.getNumber() + " dest:" + dest.getNumber());
+ log.service("This is video, now converting type. source: " +
source.getNumber() + (dest != null ? " dest:" + dest.getNumber() : ""));
source.setNodeManager(cloud.getNodeManager("videostreamsources"));
-
dest.setNodeManager(cloud.getNodeManager("videostreamsourcescaches"));
source.commit();
- dest.commit();
assert
source.getNodeManager().getName().equals("videostreamsources");
- assert
dest.getNodeManager().getName().equals("videostreamsourcescaches");
+ if (dest != null) {
+
dest.setNodeManager(cloud.getNodeManager("videostreamsourcescaches"));
+ dest.commit();
+ assert
dest.getNodeManager().getName().equals("videostreamsourcescaches");
+
+ }
+
}
}
+ public void toAudio(Node source, Node dest) {
+ Cloud cloud = source.getCloud();
+ if (cloud != null) {
+ log.service("This is audio, now converting type. source: " +
source.getNumber() + (dest != null ? " dest:" + dest.getNumber() : ""));
+ source.setNodeManager(cloud.getNodeManager("audiostreamsources"));
+ source.commit();
+ assert
source.getNodeManager().getName().equals("audiostreamsources");
+ if (dest != null) {
+
dest.setNodeManager(cloud.getNodeManager("audiostreamsourcescaches"));
+ dest.commit();
+ assert
dest.getNodeManager().getName().equals("audiostreamsourcescaches");
+ }
+ }
+ }
+
+
private static final Pattern VIDEO = Pattern.compile(".*?\\sVideo: .*?,
.*?, ([0-9]+)x([0-9]+).*?([0-9]+)\\s+kb/s.*");
- public static boolean video(String l, Node source, Node dest) {
+ public boolean video(String l, Node source, Node dest) {
Matcher m = VIDEO.matcher(l);
if (m.matches()) {
toVideo(source, dest);
@@ -104,7 +128,9 @@
} else if (source.getIntValue("channels") == 1) {
source.setIntValue("channels", 2);
}
- dest.setIntValue("channels", source.getIntValue("channels"));
+ if (dest != null) {
+ dest.setIntValue("channels", source.getIntValue("channels"));
+ }
source.setIntValue("width", Integer.parseInt(m.group(1)));
source.setIntValue("height", Integer.parseInt(m.group(2)));
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/ChainedAnalyzer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/ChainedAnalyzer.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/ChainedAnalyzer.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -33,6 +33,11 @@
maxLines = a.getMaxLines();
}
}
+ public void addLogger(org.mmbase.util.logging.Logger l) {
+ for (Analyzer a : analyzers) {
+ a.addLogger(l);
+ }
+ }
public int getMaxLines() {
return maxLines;
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -24,7 +24,7 @@
public class FFMpeg2TheoraAnalyzer implements Analyzer {
- private static final Logger log =
Logging.getLoggerInstance(FFMpeg2TheoraAnalyzer.class);
+ private static final Logger LOG =
Logging.getLoggerInstance(FFMpeg2TheoraAnalyzer.class);
public int getMaxLines() {
@@ -40,15 +40,24 @@
private double bits = -1;
private long prevPos = 0;
+ private ChainedLogger log = new ChainedLogger(LOG);
+ private AnalyzerUtils util = new AnalyzerUtils(log);
+
+ public void addLogger(Logger logger) {
+ log.addLogger(logger);
+ }
+
+
+
public void analyze(String l, Node source, Node des) {
Cloud cloud = source.getCloud();
- if (AnalyzerUtils.duration(l, source, des)) {
+ if (util.duration(l, source, des)) {
length = source.getLongValue("length");
log.info("Found length " + source);
return;
}
- if (AnalyzerUtils.video(l, source, des)) {
+ if (util.video(l, source, des)) {
log.info("Found video " + source);
return;
}
@@ -56,7 +65,7 @@
{
Matcher m = RESIZE.matcher(l);
if (m.matches()) {
- AnalyzerUtils.toVideo(source, des);
+ util.toVideo(source, des);
log.info("Found " + m);
source.setIntValue("width", Integer.parseInt(m.group(1)));
source.setIntValue("height", Integer.parseInt(m.group(2)));
@@ -69,7 +78,7 @@
Matcher n = NORESIZE.matcher(l);
if (n.matches()) {
log.info("Found " + m);
- AnalyzerUtils.toVideo(source, des);
+ util.toVideo(source, des);
source.setIntValue("width", Integer.parseInt(n.group(1)));
source.setIntValue("height", Integer.parseInt(n.group(2)));
source.commit();
@@ -83,7 +92,7 @@
{
Matcher m = PROGRESS.matcher(l);
if (m.matches()) {
- long pos = AnalyzerUtils.getLength(m.group(1));
+ long pos = util.getLength(m.group(1));
long audioBitrate = Integer.parseInt(m.group(2));
long videoBitrate = Integer.parseInt(m.group(3));
bits += ((double) (audioBitrate + videoBitrate)) * ((double)
pos - prevPos) * 1000;
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -24,26 +24,43 @@
public class FFMpegAnalyzer implements Analyzer {
- private static final Logger log =
Logging.getLoggerInstance(FFMpegAnalyzer.class);
+ private static final Logger LOG =
Logging.getLoggerInstance(FFMpegAnalyzer.class);
+ private final ChainedLogger log = new ChainedLogger(LOG);
+ private final AnalyzerUtils util = new AnalyzerUtils(log);
+
public int getMaxLines() {
return 100;
}
+ public void addLogger(Logger logger) {
+ log.addLogger(logger);
+ }
+
public void analyze(String l, Node source, Node des) {
Cloud cloud = source.getCloud();
- if (AnalyzerUtils.duration(l, source, des)) {
- log.info("Found length " + source);
+ if (util.duration(l, source, des)) {
+ log.service("Found length " + source);
return;
}
- if (AnalyzerUtils.video(l, source, des)) {
- log.info("Found video " + source);
+ if (util.video(l, source, des)) {
+ log.service("Found video " + source);
return;
}
}
public void ready(Node sourceNode, Node destNode) {
+ if (sourceNode.isNull("bitrate")) {
+ log.info("This is an image");
+ // have to think of up of something
+ } else if (sourceNode.isNull("width")) {
+ log.info("This is audio");
+ util.toAudio(sourceNode, destNode);
+ } else {
+ log.info("This is video");
+ util.toVideo(sourceNode, destNode);
+ }
//
}
Added:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegRecognizer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegRecognizer.java
(rev 0)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegRecognizer.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -0,0 +1,84 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package org.mmbase.streams.transcoders;
+
+import org.mmbase.applications.media.*;
+import java.net.*;
+import java.io.*;
+import java.util.*;
+import org.mmbase.bridge.util.*;
+import org.mmbase.bridge.*;
+import org.mmbase.util.logging.*;
+import org.mmbase.util.externalprocess.*;
+import org.mmbase.util.WriterOutputStream;
+import java.util.regex.*;
+
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: FFMpegTranscoder.java 36518 2009-07-02 12:52:01Z michiel $
+ */
+public class FFMpegRecognizer implements Recognizer {
+
+ private static final Logger log =
Logging.getLoggerInstance(FFMpegRecognizer.class);
+
+ private MimeType mimeType;
+
+ public MimeType getMimeType() {
+ return mimeType;
+ }
+ public void setMimeType(String s) {
+ mimeType = new MimeType(s);
+ }
+
+ public void analyze(URI in, Logger logger) throws Exception {
+ Writer writer = new LoggerWriter(logger, Level.SERVICE);
+ OutputStream outStream = new WriterOutputStream(writer,
System.getProperty("file.encoding"));
+ //log.service("Calling (" + method + ") " + getCommand() + " " +
Arrays.asList(getArguments()));
+ File inFile = new File(in.getPath());
+ CommandExecutor.execute(outStream, new CommandExecutor.Method(),
"ffmpeg", new String[] {
+ "-i", inFile.toString(),
+ }
+ );
+ }
+
+
+ public FFMpegRecognizer clone() {
+ try {
+ return (FFMpegRecognizer) super.clone();
+ } catch (CloneNotSupportedException cnse) {
+ // I hate java
+ return null;
+ }
+ }
+
+ public String toString() {
+ return getClass().getName();
+ }
+
+
+ public static void main(String[] argv) throws Exception {
+ Logger logger = Logging.getLoggerInstance("RECOGNIZER");
+ logger.setLevel(Level.WARN);
+ Recognizer recognizer = new FFMpegRecognizer().clone();
+ Analyzer a = new FFMpegAnalyzer();
+ Node source = AnalyzerUtils.getTestNode();
+ ChainedLogger chain = new ChainedLogger(logger);
+ chain.addLogger(new AnalyzerLogger(a, source, null));
+ recognizer.analyze(new File(argv[0]).toURI(), chain);
+ a.ready(source, null);
+ //chain.addLogger(new AnalyzerLogger(a, source, dest));
+ //chain.setLevel(Level.DEBUG);
+ System.out.println("" + source.getNodeManager() + " " + source);
+
+
+ }
+}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -24,12 +24,21 @@
* @author Michiel Meeuwissen
* @version $Id$
*/
-...@settings({"format"})
+...@settings({"format", "acodec", "vcodec"})
public class FFMpegTranscoder extends CommandTranscoder {
private static final Logger log =
Logging.getLoggerInstance(FFMpegTranscoder.class);
+ String acodec = null;
+ String vcodec = null;
+ public void setAcodec(String a) {
+ acodec = a;
+ }
+ public void setVcodec(String v) {
+ vcodec = v;
+ }
+
public FFMpegTranscoder(String id) {
super(id);
format = Format.AVI;
@@ -49,10 +58,22 @@
File inFile = new File(in.getPath());
File outFile = new File(out.getPath());
- return new String[] { "-y",
- "-i", inFile.toString(),
- outFile.toString()
- };
+ List<String> args = new ArrayList<String>();
+ args.add("-y");
+ if (acodec != null) {
+ args.add("-acodec");
+ args.add(acodec);
+ }
+ if (vcodec != null) {
+ args.add("-vcodec");
+ args.add(vcodec);
+ }
+ args.add("-i");
+ args.add(inFile.toString());
+
+ args.add(outFile.toString());
+
+ return args.toArray(new String[args.size()]);
}
private static final Pattern PROGRESS = Pattern.compile(".*time
remaining.*");
Deleted:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/MimeType.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/MimeType.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/MimeType.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -1,54 +0,0 @@
-/*
-
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
-
-The license (Mozilla version 1.0) can be read at the MMBase site.
-See http://www.MMBase.org/license
-
-*/
-package org.mmbase.streams.transcoders;
-
-import org.mmbase.util.logging.*;
-import org.mmbase.bridge.*;
-
-
-/**
- *
- * @author Michiel Meeuwissen
- */
-
-public class MimeType {
-
- public static final String STAR = "*";
- public static final MimeType ANY = new MimeType(STAR, STAR);
-
- private final String type;
- private final String subType;
-
-
- public MimeType(String s) {
- String[] m = s.split("/", 2);
- type = m[0];
- if (m.length > 1) {
- subType = m[1];
- } else {
- subType = STAR;
- }
- }
- public MimeType(String t, String s) {
- type = t;
- subType = s;
- }
-
- public String getType() {
- return type;
- }
- public String getSubType() {
- return subType;
- }
-
- public String toString() {
- return type + "/" + subType;
- }
-}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Recognizer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Recognizer.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Recognizer.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -11,6 +11,7 @@
import org.mmbase.util.logging.*;
import java.net.*;
+import org.mmbase.applications.media.MimeType;
/**
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -9,8 +9,7 @@
*/
package org.mmbase.streams.transcoders;
-import org.mmbase.applications.media.Format;
-import org.mmbase.applications.media.Codec;
+import org.mmbase.applications.media.*;
import java.net.*;
import java.lang.reflect.*;
import java.io.*;
@@ -30,12 +29,14 @@
public class RecognizerTranscoder implements Transcoder {
final Recognizer recognizer;
- protected RecognizerTranscoder(Recognizer rec) {
+ final String id;
+ public RecognizerTranscoder(Recognizer rec, String id) {
recognizer = rec;
+ this.id = id;
}
public String getId() {
- return "";
+ return id;
}
protected boolean clone = false;
@@ -107,6 +108,11 @@
}
}
+ public String toString() {
+ return recognizer.toString();
+ }
+
+
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
2009-07-03 07:04:05 UTC (rev 36532)
@@ -11,8 +11,7 @@
import java.net.*;
-import org.mmbase.applications.media.Format;
-import org.mmbase.applications.media.Codec;
+import org.mmbase.applications.media.*;
import org.mmbase.util.logging.*;
Modified:
mmbase/trunk/applications/streams/src/main/resources/org/mmbase/streams/resources/createcaches.xsd
===================================================================
---
mmbase/trunk/applications/streams/src/main/resources/org/mmbase/streams/resources/createcaches.xsd
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/resources/org/mmbase/streams/resources/createcaches.xsd
2009-07-03 07:04:05 UTC (rev 36532)
@@ -20,7 +20,7 @@
<xsd:element ref="localhost" />
<xsd:element ref="server" />
</xsd:choice>
- <xsd:element ref="sourceanalyzer" minOccurs="0"
maxOccurs="unbounded" />
+ <xsd:element ref="recognizer" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="transcoder" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
@@ -33,7 +33,7 @@
<xsd:element ref="class" minOccurs="1" maxOccurs="1" />
<xsd:element ref="loganalyzer" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
- <xsd:attribute name="id" type="xsd:string" use="required" />
+ <xsd:attribute name="id" type="xsd:ID" use="required" />
<xsd:attribute name="in" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
Modified:
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
===================================================================
---
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
2009-07-03 07:03:20 UTC (rev 36531)
+++
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
2009-07-03 07:04:05 UTC (rev 36532)
@@ -22,7 +22,10 @@
<jsp:text>${_.state}</jsp:text>
${_.dimension}
</td>
- <td><a href="${_.URL}">${_.URL}</a></td>
+ <td>
+ <a href="${_.URL}">${_.URL}</a>
+ ${_.mimeType}
+ </td>
<c:choose>
<c:when test="${_.main}">
<td colspan="2">
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs