Author: michiel
Date: 2009-05-15 15:29:01 +0200 (Fri, 15 May 2009)
New Revision: 35197
Added:
speeltuin/mihxil/streams/blocks/admin.jspx
speeltuin/mihxil/streams/blocks/myfragments.jspx
speeltuin/mihxil/streams/blocks/myjobs.jspx
speeltuin/mihxil/streams/config/functions/
speeltuin/mihxil/streams/config/functions/functionsets.xml
speeltuin/mihxil/streams/config/functions/streams.xml
speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
Modified:
speeltuin/mihxil/streams/config/builders/streams/streamsources.xml
speeltuin/mihxil/streams/config/components/streams.xml
speeltuin/mihxil/streams/pom.xml
speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java
Log:
user feedback
Added: speeltuin/mihxil/streams/blocks/admin.jspx
===================================================================
--- speeltuin/mihxil/streams/blocks/admin.jspx (rev 0)
+++ speeltuin/mihxil/streams/blocks/admin.jspx 2009-05-15 13:29:01 UTC (rev
35197)
@@ -0,0 +1,41 @@
+<div
+ class="mm_c c_streams b_admin ${requestScope.componentClassName}"
+ id="${requestScope.componentId}"
+ xmlns:c="http://java.sun.com/jsp/jstl/core"
+ xmlns:mm-res="urn:jsptagdir:/WEB-INF/tags/mm/resources"
+ xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+ xmlns:jsp="http://java.sun.com/JSP/Page"
+ xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0">
+ <jsp:output omit-xml-declaration="true" />
+ <mm:cloud rank="basic user">
+
<h3>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.title)}</h3>
+
<p>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.description)}</p>
+
+ <mm:import from="request" externid="trigger" />
+ <mm:listnodescontainer type="streamsources" id="q" >
+ SIZE <mm:size /> (${q.sql})
+ <mm:listnodes>
+ BLa
+ <mm:field name="number" />
+ <div class="stream" title="">
+ <h4>
+
+
+ </h4>
+
+ URL: <mm:function name="url" />
+ <mm:present referid="trigger">
+ <mm:voidfunction name="trigger" />
+ Triggered conversion
+ </mm:present>
+ <mm:present referid="trigger" inverse="true">
+ <mm:link>
+ <mm:param name="trigger" />
+ <a href="${_}">Trigger</a>
+ </mm:link>
+ </mm:present>
+ </div>
+ </mm:listnodes>
+ </mm:listnodescontainer>
+ </mm:cloud>
+</div>
Added: speeltuin/mihxil/streams/blocks/myfragments.jspx
===================================================================
--- speeltuin/mihxil/streams/blocks/myfragments.jspx
(rev 0)
+++ speeltuin/mihxil/streams/blocks/myfragments.jspx 2009-05-15 13:29:01 UTC
(rev 35197)
@@ -0,0 +1,32 @@
+<div
+ class="mm_c c_streams b_myfragments ${requestScope.componentClassName}"
+ id="${requestScope.componentId}"
+ xmlns:c="http://java.sun.com/jsp/jstl/core"
+ xmlns:mm-res="urn:jsptagdir:/WEB-INF/tags/mm/resources"
+ xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+ xmlns:jsp="http://java.sun.com/JSP/Page"
+ xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0">
+ <jsp:output omit-xml-declaration="true" />
+
+
+ <p><mm:cloudinfo type="user" id="currentuser" /></p>
+ <mm:listnodescontainer type="mediafragments">
+ <mm:constraint field="owner"
value="${requestScope['org.mmbase.currentuser']}" />
+ <ul>
+ <mm:listnodes>
+ <li>
+ <mm:field name="number" />
+ <jsp:text> </jsp:text>
+ <mm:field name="title" />
+ <ul>
+ <mm:listfunction name="urls">
+ <li>u: ${_}</li>
+ </mm:listfunction>
+ </ul>
+ </li>
+ </mm:listnodes>
+ </ul>
+ </mm:listnodescontainer>
+
+
+</div>
Added: speeltuin/mihxil/streams/blocks/myjobs.jspx
===================================================================
--- speeltuin/mihxil/streams/blocks/myjobs.jspx (rev 0)
+++ speeltuin/mihxil/streams/blocks/myjobs.jspx 2009-05-15 13:29:01 UTC (rev
35197)
@@ -0,0 +1,32 @@
+<div
+ class="mm_c c_streams b_myfragments ${requestScope.componentClassName}"
+ id="${requestScope.componentId}"
+ xmlns:c="http://java.sun.com/jsp/jstl/core"
+ xmlns:mm-res="urn:jsptagdir:/WEB-INF/tags/mm/resources"
+ xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+ xmlns:jsp="http://java.sun.com/JSP/Page"
+ xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0">
+ <jsp:output omit-xml-declaration="true" />
+
+
+ <ul>
+ <mm:listfunction set="streams" name="myJobs">
+ <li>
+ <span>${_.transcoder} (${_.progress})</span>
+ <p>
+ <span class="in">${_.transcoder.in}</span>
+ <jsp:text> -&gt; </jsp:text>
+ <span class="out">${_.transcoder.out}</span>
+ </p>
+ <div class="log">
+ ${_.logger}
+ <pre>
+ ${_.logger.debugList}
+ </pre>
+ </div>
+ </li>
+ </mm:listfunction>
+ </ul>
+
+
+</div>
Modified: speeltuin/mihxil/streams/config/builders/streams/streamsources.xml
===================================================================
--- speeltuin/mihxil/streams/config/builders/streams/streamsources.xml
2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/config/builders/streams/streamsources.xml
2009-05-15 13:29:01 UTC (rev 35197)
@@ -74,5 +74,10 @@
</fieldlist>
+ <functionlist>
+ <function name="trigger">
+ <class>org.mmbase.streams.CreateCachesFunction</class>
+ </function>
+ </functionlist>
</builder>
Modified: speeltuin/mihxil/streams/config/components/streams.xml
===================================================================
--- speeltuin/mihxil/streams/config/components/streams.xml 2009-05-15
13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/config/components/streams.xml 2009-05-15
13:29:01 UTC (rev 35197)
@@ -14,16 +14,38 @@
<dependency component="media" version="1" />
<block name="recent"
- classification="mmbase.examples:90 strams"
+ classification="mmbase.examples:90 mmbase.streams"
mimetype="text/html">
<title xml:lang="en">Recent </title>
<title xml:lang="nl">Recente resources</title>
<description xml:lang="en">Displays recent streams in MMBase</description>
<description xml:lang="nl">Toont recent in MMBase ingevoerde
streams</description>
- <head jsp="head.jspx" />
<body jsp="recent.jspx">
<param name="nodetypes" />
</body>
</block>
+ <block name="admin"
+ classification="mmbase.examples:90 mmbase.streams"
+ mimetype="text/html">
+ <title xml:lang="en">Streams admin</title>
+ <title xml:lang="nl">Streams admin</title>
+ <description xml:lang="en">Displays streams configuration</description>
+ <body jsp="admin.jspx">
+ <param name="trigger" />
+ </body>
+ </block>
+
+ <block name="myfragments"
+ classification="mmbase.examples:90 mmbase.streams"
+ mimetype="text/html">
+ <body jsp="myfragments.jspx" />
+ </block>
+
+ <block name="myjobs"
+ classification="mmbase.examples:90 mmbase.streams"
+ mimetype="text/html">
+ <body jsp="myjobs.jspx" />
+ </block>
+
</component>
Added: speeltuin/mihxil/streams/config/functions/functionsets.xml
===================================================================
--- speeltuin/mihxil/streams/config/functions/functionsets.xml
(rev 0)
+++ speeltuin/mihxil/streams/config/functions/functionsets.xml 2009-05-15
13:29:01 UTC (rev 35197)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE functionsets PUBLIC "-//MMBase//DTD functionsets config 1.0//EN"
"http://www.mmbase.org/dtd/functionsets_1_0.dtd">
+<functionsets>
+ <functionset name="streams" resource="streams.xml" />
+</functionsets>
Added: speeltuin/mihxil/streams/config/functions/streams.xml
===================================================================
--- speeltuin/mihxil/streams/config/functions/streams.xml
(rev 0)
+++ speeltuin/mihxil/streams/config/functions/streams.xml 2009-05-15
13:29:01 UTC (rev 35197)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE functionset PUBLIC "//MMBase - functionset //"
"http://www.mmbase.org/dtd/functionset_1_0.dtd">
+<functionset>
+ <description>
+ </description>
+
+ <function name="myJobs">
+ <type>class</type>
+ <class>org.mmbase.streams.CreateCachesProcessor</class>
+ <method>myJobs</method>
+ <param name="user" type="org.mmbase.security.UserContext" />
+ </function>
+
+</functionset>
Modified: speeltuin/mihxil/streams/pom.xml
===================================================================
--- speeltuin/mihxil/streams/pom.xml 2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/pom.xml 2009-05-15 13:29:01 UTC (rev 35197)
@@ -15,7 +15,7 @@
<packaging>war</packaging>
<description>
- Support for maintenance of media files in MMBase itself. Uploaded,
transcoding, and serving.
+ Support for maintenance of media files in MMBase itself. Uploading,
transcoding, and serving.
</description>
Added: speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java
===================================================================
--- speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java
(rev 0)
+++ speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesFunction.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -0,0 +1,41 @@
+/*
+
+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;
+
+import org.mmbase.util.functions.*;
+import org.mmbase.bridge.*;
+import org.mmbase.datatypes.processors.CommitProcessor;
+
+/**
+ * Retriggers creation of the caches.
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: CreateCachesProcessor.java 35037 2009-05-07 15:45:11Z michiel
$
+ */
+
+public class CreateCachesFunction extends NodeFunction<Boolean> {
+
+ public CreateCachesFunction() {
+ super("createcaches");
+ }
+
+ @Override
+ protected Boolean getFunctionValue(Node node, Parameters parameters) {
+ Field url = node.getNodeManager().getField("url");
+
+ CommitProcessor deleteCaches = url.getDataType().getDeleteProcessor();
+ deleteCaches.commit(node, url);
+
+ CommitProcessor createCaches = url.getDataType().getCommitProcessor();
+ createCaches.commit(node, url);
+ return true;
+ }
+
+}
Modified:
speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java
===================================================================
--- speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java
2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/src/org/mmbase/streams/CreateCachesProcessor.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -14,6 +14,7 @@
import org.mmbase.bridge.Node;
import org.mmbase.bridge.NodeList;
import org.mmbase.storage.search.*;
+import org.mmbase.security.UserContext;
import org.mmbase.bridge.util.Queries;
import org.mmbase.util.*;
import org.mmbase.util.xml.*;
@@ -157,6 +158,21 @@
+ private static final Set<Job> runningJobs =
Collections.synchronizedSet(new HashSet<Job>());
+
+
+ public static Set<Job> myJobs(UserContext u) {
+ Set<Job> myjobs = new HashSet<Job>();
+ synchronized(runningJobs) {
+ for (Job j : runningJobs) {
+ if (j.user.equals(u.getIdentifier())) {
+ myjobs.add(j);
+ }
+ }
+ }
+ return myjobs;
+ }
+
public void commit(final Node node, final Field field) {
if (node.getNumber() > 0) {
@@ -164,12 +180,15 @@
// mediafragment if it does not yet
exist
LOG.info("Field '" + field + " was changed. Triggering caches for
" + list);
+
final ChainedLogger logger = new ChainedLogger();
- logger.addLogger(Logging.getLoggerInstance("CACHES." +
node.getCloud().getUser().getIdentifier()));
logger.addLogger(LOG);
- final Future<Integer> future = transcoderExecutor.submit(new
Callable<Integer>() {
+ final Job thisJob = new Job(node.getCloud().getUser(), logger,
list.size());
+ runningJobs.add(thisJob);
+ thisJob.setFuture(transcoderExecutor.submit(new
Callable<Integer>() {
+
public Integer call() {
List<Transcoder> clones = new ArrayList<Transcoder>();
try {
@@ -185,16 +204,20 @@
logger.error(e.getMessage());
}
int result = 0;
+ LOG.debug("Using " + clones);
for (Transcoder t : clones) {
- logger.service("Creating with " + t);
+ LOG.debug("" + t);
+ thisJob.setTranscoder(t);
Node cacheNode =
CreateCachesProcessor.this.getCacheNode(node, t, logger);
File inFile = new File(FileServlet.getDirectory(),
node.getStringValue("url"));
URI in = inFile.toURI();
StringBuilder buf = new StringBuilder();
org.mmbase.storage.implementation.database.DatabaseStorageManager.appendDirectory(buf,
cacheNode.getNumber(), "/");
buf.append("/").append(cacheNode.getNumber()).append(".");
-
buf.append(ResourceLoader.getName(inFile.getName())).append(".").append(t.getExtension());
+
buf.append(ResourceLoader.getName(inFile.getName())).append(".").append(t.getFormat().toString().toLowerCase());
File outFile = new
File(FileServlet.getDirectory(), buf.toString().replace("/", File.separator));
+ logger.service("Transcoding with " + t + " for " +
in + " -> " + outFile);
+
try {
cacheNode.setIntValue("state",
State.BUSY.getValue());
cacheNode.setStringValue("url",
buf.toString());
@@ -218,7 +241,7 @@
}
}
- t.transcode(in, outFile.toURI(),
t.getLogger());
+ t.transcode(in, outFile.toURI(), logger);
cacheNode.setIntValue("state",
State.DONE.getValue());
cacheNode.commit();
@@ -231,21 +254,26 @@
logger.service("Interrupted");
break;
} catch (Exception e) {
- logger.error(e.getMessage());
+ logger.error(e.getMessage(), e);
}
}
+ logger.service("READY");
+ runningJobs.remove(thisJob);
return result;
}
- });
+ })
+ );
+
+
// If the node happens to be deleted before the future with cache
creations is ready, cancel the future
EventManager.getInstance().addEventListener(new
WeakNodeEventListener() {
public void notify(NodeEvent event) {
if (event.getNodeNumber() == node.getNumber() &&
event.getType() == Event.TYPE_DELETE) {
- if (future.cancel(true)) {
- logger.info("Canceled " + future + " for " +
event.getBuilderName() + " " + event.getNodeNumber());
+ if (thisJob.future.cancel(true)) {
+ logger.info("Canceled " + thisJob.future + "
for " + event.getBuilderName() + " " + event.getNodeNumber());
}
}
}
@@ -259,5 +287,42 @@
}
+ public class Job {
+ private final String user;
+ private final BufferedLogger logger;
+ private final int size;
+
+ private int busy = 0;;
+
+ private Future<Integer> future;
+ private Transcoder transcoder;
+
+ public Job(UserContext u, ChainedLogger chain, int s) {
+ user = u.getIdentifier();
+ logger = new BufferedLogger();
+ logger.setLevel(Level.DEBUG);
+ logger.setMaxSize(100);
+ logger.setMaxAge(60000);
+ chain.addLogger(logger);
+ size = s;
+ }
+ public void setFuture(Future<Integer> f) {
+ future = f;
+ }
+ public Logger getLogger() {
+ return logger;
+ }
+ public void setTranscoder(Transcoder t) {
+ transcoder = t;
+ busy++;
+ }
+ public Transcoder getTranscoder() {
+ return transcoder;
+ }
+ public String getProgress() {
+ return "" + busy + "/" + size;
+ }
+ }
+
}
Added:
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
===================================================================
---
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
(rev 0)
+++
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/AbstractTranscoder.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -0,0 +1,88 @@
+/*
+
+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.Format;
+import java.net.*;
+import java.io.*;
+import org.mmbase.util.externalprocess.*;
+import org.mmbase.util.WriterOutputStream;
+
+import org.mmbase.util.logging.*;
+
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: CommandTranscoder.java 35048 2009-05-08 13:10:31Z michiel $
+ */
+
+public abstract class AbstractTranscoder implements Transcoder {
+
+ public static final Logger LOG =
Logging.getLoggerInstance(AbstractTranscoder.class);
+
+ protected boolean clone = false;
+
+ protected URI in;
+ protected URI out;
+
+ protected Format format;
+
+ public void setFormat(String f) {
+ format = Format.valueOf(f);
+ }
+
+ public Format getFormat() {
+ return format;
+ }
+
+ public String getKey() {
+ return getClass().getName();
+ }
+
+ public final void transcode(final URI in, final URI out, final Logger log)
throws Exception {
+ if (in == null) throw new IllegalArgumentException();
+ if (out == null) throw new IllegalArgumentException();
+ this.in = in;
+ this.out = out;
+ if (! clone) {
+ throw new IllegalStateException("Clone this transcoder before
useage!");
+ }
+ log.info("Transcoding " + in + " -> " + out);
+ transcode(log);
+ }
+
+ protected abstract void transcode(final Logger log) throws Exception;
+
+
+ public String toString() {
+ return getKey();
+ }
+
+ public URI getIn() {
+ return in;
+ }
+ public URI getOut() {
+ return out;
+ }
+
+ public AbstractTranscoder clone() {
+ try {
+ AbstractTranscoder c = (AbstractTranscoder) super.clone();
+ c.clone = true;
+ return c;
+ } catch (CloneNotSupportedException cnse) {
+ throw new RuntimeException(cnse);
+ }
+ }
+
+
+
+}
Modified:
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
===================================================================
---
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
2009-05-15 13:28:11 UTC (rev 35196)
+++
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/CommandTranscoder.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -25,12 +25,11 @@
* @version $Id$
*/
-public abstract class CommandTranscoder implements Transcoder {
+public abstract class CommandTranscoder extends AbstractTranscoder {
- private boolean clone = false;
-
private CommandExecutor.Method method = new CommandExecutor.Method();
+
public void setMethod(CommandExecutor.Method m) {
method = m;
}
@@ -40,34 +39,20 @@
protected String[] getEnvironment() {
return new String[0];
}
- protected abstract String[] getArguments(URI in, URI out);
+ protected abstract String[] getArguments();
protected LoggerWriter getOutputWriter(Logger log) {
return new LoggerWriter(log, Level.SERVICE);
}
- public String getKey() {
- return getClass().getName();
- }
-
- public void transcode(final URI in, final URI out, final Logger log)
throws Exception {
- if (! clone) throw new IllegalStateException("Clone this transcoder
before useage!");
+ protected void transcode(final Logger log) throws Exception {
OutputStream outStream = new WriterOutputStream(getOutputWriter(log),
System.getProperty("file.encoding"));
- CommandExecutor.execute(outStream, method, getCommand(),
getArguments(in, out));
+ CommandExecutor.execute(outStream, method, getCommand(),
getArguments());
}
- public String toString() {
- return getKey();
- }
public CommandTranscoder clone() {
- try {
- CommandTranscoder c = (CommandTranscoder) super.clone();
- c.clone = true;
- return c;
- } catch (CloneNotSupportedException cnse) {
- throw new RuntimeException(cnse);
- }
+ return (CommandTranscoder) super.clone();
}
Modified:
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
===================================================================
---
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
2009-05-15 13:28:11 UTC (rev 35196)
+++
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -10,6 +10,7 @@
package org.mmbase.streams.transcoders;
+import org.mmbase.applications.media.Format;
import java.net.*;
import java.io.*;
import java.util.regex.*;
@@ -30,13 +31,13 @@
private static final Logger log =
Logging.getLoggerInstance(FFMpeg2TheoraTranscoder.class);
+ {
+ format = Format.OGV;
+ }
+
private int videoQuality = 5;
private int keyInt = 64;
- public Logger getLogger() {
- return log;
- }
-
public void setVideoQuality(int vq) {
videoQuality = vq;
}
@@ -56,7 +57,7 @@
}
@Override
- protected String[] getArguments(URI in, URI out) {
+ protected String[] getArguments() {
if (! in.getScheme().equals("file")) throw new
UnsupportedOperationException();
if (! out.getScheme().equals("file")) throw new
UnsupportedOperationException();
@@ -89,9 +90,6 @@
return w;
}
- public String getExtension() {
- return "ogv";
- }
public static void main(String[] argv) throws Exception {
CommandTranscoder transcoder = new FFMpeg2TheoraTranscoder();
Modified:
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
===================================================================
---
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
2009-05-15 13:28:11 UTC (rev 35196)
+++
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/FFMpegTranscoder.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -9,7 +9,7 @@
*/
package org.mmbase.streams.transcoders;
-
+import org.mmbase.applications.media.Format;
import java.net.*;
import java.io.*;
import org.mmbase.util.logging.*;
@@ -26,24 +26,17 @@
private static final Logger log =
Logging.getLoggerInstance(FFMpegTranscoder.class);
- public Logger getLogger() {
- return log;
+ {
+ format = Format.AVI;
}
- private String extension = "avi";
-
-
- public void setExtension(String e) {
- extension = e;
- }
-
@Override
protected String getCommand() {
return "ffmpeg";
}
@Override
- protected String[] getArguments(URI in, URI out) {
+ protected String[] getArguments() {
if (! in.getScheme().equals("file")) throw new
UnsupportedOperationException();
if (! out.getScheme().equals("file")) throw new
UnsupportedOperationException();
@@ -65,20 +58,15 @@
if (PROGRESS.matcher(line).matches()) {
return Level.DEBUG;
}
- log.info("Not matching " + PROGRESS);
return null;
}
};
- log.info("Returning " + w);
+ log.debug("Returning " + w);
return w;
}
- public String getExtension() {
- return extension;
- }
-
public static void main(String[] argv) throws Exception {
CommandTranscoder transcoder = new FFMpeg2TheoraTranscoder();
Logger logger = Logging.getLoggerInstance("FFMPEG");
Added:
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
===================================================================
---
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
(rev 0)
+++
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/InfiniteTranscoder.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -0,0 +1,50 @@
+/*
+
+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.Format;
+import java.net.*;
+import java.io.*;
+
+import org.mmbase.util.logging.*;
+
+
+/**
+ * This is a transcoder that does nothing. It will simply stall infinitely,
and log some bogus. This is for testing only.
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: CommandTranscoder.java 35048 2009-05-08 13:10:31Z michiel $
+ */
+
+public class InfiniteTranscoder extends AbstractTranscoder {
+ private static final Logger LOG =
Logging.getLoggerInstance(InfiniteTranscoder.class);
+ private int seq = 0;
+ {
+ format = Format.UNKNOWN;
+ }
+
+ protected void transcode(final Logger log) throws Exception {
+ LOG.info("Logging to " + log);
+
+ while(true) {
+ Thread.sleep(1000);
+ if (Thread.currentThread().interrupted()) {
+ break;
+ }
+ LOG.info("Logging to " + log);
+
+ log.service("" + (seq++) + " " + in + " -> " + out);
+ }
+ }
+
+
+
+
+}
Modified:
speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java
===================================================================
--- speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java
2009-05-15 13:28:11 UTC (rev 35196)
+++ speeltuin/mihxil/streams/src/org/mmbase/streams/transcoders/Transcoder.java
2009-05-15 13:29:01 UTC (rev 35197)
@@ -11,7 +11,7 @@
import java.net.*;
-
+import org.mmbase.applications.media.Format;
import org.mmbase.util.logging.*;
@@ -24,15 +24,16 @@
public interface Transcoder extends
org.mmbase.util.PublicCloneable<Transcoder> {
- Logger getLogger();
-
String getKey();
- String getExtension();
+ Format getFormat();
/**
*
*/
void transcode(URI in, URI out, Logger logger) throws Exception;
+ URI getIn();
+ URI getOut();
+
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs