AnsweredAssumed Answered

Convertir Avi a flv usando ffmpeg

Question asked by masanchez on Oct 18, 2011
Latest reply on Nov 14, 2011 by cristinamr
Buenas a todos tengo un ligero problema que no soy capaz de solucionar.

Mi problema consiste en que he de transformar los diferentes formatos de vídeo que se suben a al alfresco mediante unos webservice a .flv

el código que utilizo es el siguiente:
avi2flv-transform-context.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
   <bean id="transformer.ffmpeg.avi.worker" class="org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerWorker">
      <property name="mimetypeService">
         <ref bean="mimetypeService" />
      </property>
      <property name="checkCommand">
         <bean name="transformer.ffmpeg.avi.checkcommand" class="org.alfresco.util.exec.RuntimeExec">
            <property name="commandsAndArguments">
               <map>
                  <entry key=".*">
                     <list>
                        <value>ffmpeg</value>
                        <value>-version</value>
                     </list>
                  </entry>
               </map>
            </property>
            <property name="errorCodes">
               <value>1</value>
            </property>
         </bean>
      </property>
      <property name="transformCommand">
         <bean class="org.alfresco.util.exec.RuntimeExec">
            <property name="commandMap">
               <map>
                  <entry key="Linux">
                     <value>ffmpeg -i '${target}' ${flv.encoder.params} '${source}'</value>
                  </entry>
               </map>
            </property>
            <property name="errorCodes">
               <value>1,2</value>
            </property>
            <property name="waitForCompletion">
               <value>true</value>
            </property>
            <property name="defaultProperties">
               <props>
                  <prop key="flv.encoder.params">-vcodec flv</prop>
               </props>
            </property>
         </bean>
      </property>
      <property name="explicitTransformations">
         <list>
<bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/avi</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/x-msvideo</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/mpeg</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/mp4</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/mpeg2</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/x-sgi-movie</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/quicktime</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/x-ms-asf</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/x-ms-wmv</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/x-rad-screenplay</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
            <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
               <property name="sourceMimetype">
                  <value>video/ogg</value>
               </property>
               <property name="targetMimetype">
                  <value>video/x-flv</value>
               </property>
            </bean>
         </list>
      </property>
   </bean>
   <bean id="transformer.ffmpeg.avi" class="org.alfresco.repo.content.transform.ProxyContentTransformer" parent="baseContentTransformer">
      <property name="worker">
         <ref bean="transformer.ffmpeg.avi.worker" />
      </property>
   </bean>
</beans>
y en el webservice:

if(getFile(folderVIDEO, field.filename) == null)
{
                     if(file_test_node=folderVIDEO.createFile(nombrefichero+field.filename)){
                        model.mensajes.push('Se ha creado el fichero '+nombrefichero+field.filename);
                     }else
                        model.mensajes.push('Ha ocurrido un error cuando se intentaba crear el fichero '+nombrefichero+field.filename);
                     file_test_node.properties.content.write(field.content);
                     folderVIDEO = getFolder(search.findNode("workspace://SpacesStore/"+fondoid),nameFolderVIDEO);
                     var action = actions.create("transform");
                     // Store the transformed version in the same folder as the source
                     action.parameters["destination-folder"] = file_test_node.parent;
                     action.parameters["assoc-type"] = "{http://www.alfresco.org/model/content/1.0}contains";
                     action.parameters["assoc-name"] = file_test_node.name + "transformed";
                     action.parameters["mime-type"] = "video/x-flv";
                     // Execute
                     action.execute(file_test_node);
                  }

el error que me da es el siguiente:

The Web Script /alfresco/s/gcd/fondo has responded with a status of 500 - Internal Error.

500 Description:    An error inside the HTTP server which prevented it from fulfilling the request.

Message:   09180016 Wrapped Exception (with status template): 09180029 Failed to execute script '/com/inventiaplus/gcd/fondo/creado.post.js (in repository store workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions)': 09180028 Content conversion failed: reader: ContentAccessor[ contentUrl=store://2011/10/18/20/56/65b3457f-c37c-4404-b4b7-9abac30f018d.bin, mimetype=video/x-msvideo, size=1614694, encoding=null, locale=es_ES] writer: ContentAccessor[ contentUrl=store://2011/10/18/20/56/e92d00e2-7bd8-4bdd-8d50-b61fe4bac903.bin, mimetype=video/x-flv, size=0, encoding=null, locale=es_ES] options: org.alfresco.service.cmr.repository.TransformationOptions@745ce55


Exception:   org.alfresco.service.cmr.repository.ContentIOException - 09180027 Transformation failed - status indicates an error: Execution result: os: Linux command: [ffmpeg, -i, '/home/inventiaplus/alfresco/tomcat/temp/Alfresco/RuntimeExecutableContentTransformerWorker_target_3008293789769608319.flv', -vcodec flv, '/home/inventiaplus/alfresco/tomcat/temp/Alfresco/RuntimeExecutableContentTransformerWorker_source_5021918644492976031.avi'] succeeded: false exit code: 1 out: err: FFmpeg version SVN-r0.5.1-4:0.5.1-1ubuntu1.2, Copyright © 2000-2009 Fabrice Bellard, et al. configuration: –extra-version=4:0.5.1-1ubuntu1.2 –prefix=/usr –enable-avfilter –enable-avfilter-lavf –enable-vdpau –enable-bzlib –enable-libgsm –e



org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerWorker.transform(RuntimeExecutableContentTransformerWorker.java:272)

org.alfresco.repo.content.transform.ProxyContentTransformer.transformInternal(ProxyContentTransformer.java:68)

org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:161)

org.alfresco.repo.content.ContentServiceImpl.transform(ContentServiceImpl.java:555)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)

org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)

org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.alfresco.repo.model.ml.MLContentInterceptor.invoke(MLContentInterceptor.java:125)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:44)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.alfresco.repo.audit.AuditMethodInterceptor.proceed(AuditMethodInterceptor.java:160)

org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:137)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

$Proxy42.transform(Unknown Source)

org.alfresco.repo.action.executer.TransformActionExecuter.doTransform(TransformActionExecuter.java:305)

org.alfresco.repo.action.executer.TransformActionExecuter.executeImpl(TransformActionExecuter.java:270)

org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:133)

org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:749)

org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:675)

org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:540)

org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:526)

org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:758)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)

org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)

org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:34)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:44)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.alfresco.repo.audit.AuditMethodInterceptor.proceedWithAudit(AuditMethodInterceptor.java:217)

org.alfresco.repo.audit.AuditMethodInterceptor.proceed(AuditMethodInterceptor.java:184)

org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:137)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

$Proxy34.executeAction(Unknown Source)

org.alfresco.repo.jscript.ScriptAction.executeImpl(ScriptAction.java:147)

org.alfresco.repo.jscript.ScriptAction.execute(ScriptAction.java:136)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)

org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)

org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)

org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)

org.mozilla.javascript.gen.c59._c9(workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions/com/inventiaplus/gcd/fondo/creado.post.js:459)

org.mozilla.javascript.gen.c59.call(workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions/com/inventiaplus/gcd/fondo/creado.post.js)

org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)

org.mozilla.javascript.gen.c59._c0(workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions/com/inventiaplus/gcd/fondo/creado.post.js:271)

org.mozilla.javascript.gen.c59.call(workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions/com/inventiaplus/gcd/fondo/creado.post.js)

org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)

org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)

org.mozilla.javascript.gen.c59.call(workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions/com/inventiaplus/gcd/fondo/creado.post.js)

org.mozilla.javascript.gen.c59.exec(workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions/com/inventiaplus/gcd/fondo/creado.post.js)

org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:472)

org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:190)

org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:282)

org.alfresco.repo.web.scripts.RepositoryScriptProcessor.executeScript(RepositoryScriptProcessor.java:102)

org.springframework.extensions.webscripts.AbstractWebScript.executeScript(AbstractWebScript.java:981)

org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:86)

org.alfresco.repo.web.scripts.RepositoryContainer$2.execute(RepositoryContainer.java:383)

org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)

org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:436)

org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466)

org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304)

org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)

org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)

org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

java.lang.Thread.run(Thread.java:619)


Exception:   org.alfresco.service.cmr.repository.ContentIOException - 09180028 Content conversion failed: reader: ContentAccessor[ contentUrl=store://2011/10/18/20/56/65b3457f-c37c-4404-b4b7-9abac30f018d.bin, mimetype=video/x-msvideo, size=1614694, encoding=null, locale=es_ES] writer: ContentAccessor[ contentUrl=store://2011/10/18/20/56/e92d00e2-7bd8-4bdd-8d50-b61fe4bac903.bin, mimetype=video/x-flv, size=0, encoding=null, locale=es_ES] options: org.alfresco.service.cmr.repository.TransformationOptions@745ce55



org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:177)


Exception:   org.alfresco.scripts.ScriptException - 09180029 Failed to execute script '/com/inventiaplus/gcd/fondo/creado.post.js (in repository store workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions)': 09180028 Content conversion failed: reader: ContentAccessor[ contentUrl=store://2011/10/18/20/56/65b3457f-c37c-4404-b4b7-9abac30f018d.bin, mimetype=video/x-msvideo, size=1614694, encoding=null, locale=es_ES] writer: ContentAccessor[ contentUrl=store://2011/10/18/20/56/e92d00e2-7bd8-4bdd-8d50-b61fe4bac903.bin, mimetype=video/x-flv, size=0, encoding=null, locale=es_ES] options: org.alfresco.service.cmr.repository.TransformationOptions@745ce55



org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:194)


Exception:   org.springframework.extensions.webscripts.WebScriptException - 09180016 Wrapped Exception (with status template): 09180029 Failed to execute script '/com/inventiaplus/gcd/fondo/creado.post.js (in repository store workspace://SpacesStore/Company Home/Data Dictionary/Web Scripts Extensions)': 09180028 Content conversion failed: reader: ContentAccessor[ contentUrl=store://2011/10/18/20/56/65b3457f-c37c-4404-b4b7-9abac30f018d.bin, mimetype=video/x-msvideo, size=1614694, encoding=null, locale=es_ES] writer: ContentAccessor[ contentUrl=store://2011/10/18/20/56/e92d00e2-7bd8-4bdd-8d50-b61fe4bac903.bin, mimetype=video/x-flv, size=0, encoding=null, locale=es_ES] options: org.alfresco.service.cmr.repository.TransformationOptions@745ce55



org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:758)


Server:   Community v3.4.0 (c 3335) schema 4,113
Time:   Oct 18, 2011 8:56:51 PM


Diagnostics:   Inspect Web Script (com/inventiaplus/gcd/fondo/creado.post)
Agradecería cualquier ayuda que me ayudara a solucionar este problema.

Muchas Gracias

Outcomes