view ffmpeg.xml @ 19:e18b095d1c2c draft

Uploaded
author greg
date Wed, 18 Oct 2017 13:55:15 -0400
parents f8a2a94102b4
children c1705fd38212
line wrap: on
line source

<tool id="ffmpeg" name="FFMPEG" version="3.2.4">
    <description> video / image converter</description>
    <requirements>
        <requirement type="package" version="3.2.4">ffmpeg</requirement>
    </requirements>
    <command detect_errors="exit_code"><![CDATA[
mkdir output &&
#if str($conversion_cond.conversion) == "video":
    #if str($output_process_log) == 'yes':
        ffmpeg -i '$conversion_cond.input' -filter:v fps=fps=1/$conversion_cond.sbf 2>$output_log output/%05d.jpg
    #else:
        ffmpeg -i '$conversion_cond.input' -filter:v fps=fps=1/$conversion_cond.sbf 2>/dev/null output/%05d.jpg
    #end if
#else:
    ## str($conversion_cond.conversion) == "images"
    mkdir input_dir &&
    #for $i in $conversion_cond.input:
        #set input_filename = $i.file_name
        #set full_name = $i.name
        #set ext = $i.ext
        ln -s $input_filename input_dir/$full_name &&
        #if str($ext) != 'jpg':
            #set base_name = $full_name.split('.')[0]
            #set jpg_name = '%s.jpg' % $base_name
            ffmpeg -i input_dir/$full_name input_dir/$jpg_name &&
            rm input_dir/$full_name &&
        #end if
    #end for
    #if str($output_process_log) == 'yes':
        ffmpeg -r $conversion_cond.frame_rate -f mp4 -s 1920x1080 -i input_dir/%05d_predictions.jpg -vcodec libx264 -crf $conversion_cond.quality -pix_fmt yuv420p 2>$output_log $output_video
    #else:
        ffmpeg -r $conversion_cond.frame_rate -f mp4 -s 1920x1080 -i input_dir/%05d_predictions.jpg -vcodec libx264 -crf $conversion_cond.quality -pix_fmt yuv420p 2>/dev/null $output_video
    #end if
#end if
    ]]></command>
    <inputs>
        <conditional name="conversion_cond">
            <param name="conversion" type="select" label="Convert">
                <option value="video" selected="true">video to images</option>
                <option value="images">images to video</option>
            </param>
            <when value="video">
                <param name="input" type="data" format="avi,mpg,mp4" label="Select input video"/>
                <param name="sbf" type="integer" value="1" label="Number of seconds between frames"/>
            </when>
            <when value="images">
                <param name="input" type="data_collection" collection_type="list" format="jpg,png" label="Select input images"/>
                <param name="frame_rate" type="integer" value="60" label="Number of frames per second"/>
                <param name="quality" type="integer" value="15" label="Image quality" help="Lower means better quality, 15-25 is usually good"/>
            </when>
        </conditional>
        <param name="output_process_log" type="select" display="radio" label="Output process log?">
            <option value="no" selected="true">No</option>
            <option value="yes">Yes</option>
        </param>
    </inputs>
    <outputs>
        <data name="output_log" format="txt" label="${tool.name} (process log) on ${on_string}">
            <filter>output_process_log == 'yes'</filter>
        </data>
        <collection name="output_from_video" type="list" label="${tool.name} (images) on ${on_string}">
            <discover_datasets pattern="__name__" directory="output" format="jpg"/>
            <filter>conversion_cond['conversion'] == 'video'</filter>
        </collection>
        <data name="output_video" format="mp4" label="${tool.name} (video) on ${on_string}">
            <filter>conversion_cond['conversion'] == 'images'</filter>
        </data>
    </outputs>
    <tests>
        <test>
        </test>
    </tests>
    <help>
**What it does**

Converts video files to images and image files to video files.

-----

**Options**

    </help>
    <citations>
    </citations>
</tool>