Platform Explorer / Nuxeo Platform LTS 2019 10.10

Component org.nuxeo.ecm.platform.video.tools.commandlines

Services

Extension points

Contributions

XML source

<component name="org.nuxeo.ecm.platform.video.tools.commandlines">

  <require>org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib</require>

  <extension
      target="org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent"
      point="command">

    <command name="videoClosedCaptionsExtractor" enabled="true">
      <commandLine>ccextractor</commandLine>
      <parameterString>#{sourceFilePath} -out=#{outFormat} -trim -o #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ccextractor.</installationDirective>
    </command>

    <command name="videoPartClosedCaptionsExtractor" enabled="true">
      <commandLine>ccextractor</commandLine>
      <parameterString>#{sourceFilePath} -out=#{outFormat} -startat #{startAt} -endat #{endAt} -trim -o #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ccextractor.</installationDirective>
    </command>

    <command name="videoConcat" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -f concat -safe 0 -i #{listFilePath} -c copy #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- This one is very fast, but you may miss frames. Use it when you are sure you'll get the correct cut -->
    <command name="videoSlicerByCopy" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} -c copy #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- This on is the basic slicing. It re-encodes the video, so it it is slower than videoSlicerCopy -->
    <command name="videoSlicer" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>
  
    <!-- This enables video slicing starting from the specific time -->
    <command name="videoSlicerStartAt" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- Slices in n segment of #duration each. outFilePath is an expression
         (OUT%03d.mp4 for example) so ffmpeg creates one file/segment -->
    <command name="videoSlicerSegments" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -map 0 -c copy -f segment -segment_time #{duration} -reset_timestamps 1
        #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- filterComplex is the full filter. For example: "overlay=10:10" -->
    <command name="videoWatermarkWithPicture" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -i #{pictureFilePath} -filter_complex #{filterComplex} #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

  </extension>

</component>

Documentation