The way in which OpenVIP core processes multimedia files is based on a so-called network concept (as opposed to timeline concept employed in the GUI). We will use the following diagram to explain what networks are:

This is a scheme of a very simple network, which contains
    instructions for OpenVIP to load a video file called
    input.mpg, resize all its frames to 320x180 and save
    it to output.mpg. Each rectangle in the scheme is
    called a module. A module usually has some input or
    output connectors, which link it with other
    modules.
Let's explain it in terms of our example: There is a module called
    loader, which is of type Input.
    This module is indeed responsible of loading the file
    input.mpg (this is the value of parameter
    filename). The output connector
    video0 of loader is linked to the
    input connector video0 of a module called
    resize, which is of type
    VideoFilter. This module actually performs the
    resize operation - there is a parameter videofilter
    set to Resize, which tells the module what to do,
    and a couple of parameters width and
    height, which specify the new dimensions. Finally,
    the output connector video0 of module
    resize is linked to the input connector
    video0 of another module called
    saver, which is of type Output
    and as you expect, it saves the video in the file
    output.mpg.
Note that the output connector audio0 of module loader is linked directly to the input connector audio0 of module saver, which means that there is no audio processing.
To sum up: Each network consists of modules, which correspond to some actions, and connectors, which link the modules and specify the order of these actions. People who are familiar with graph theory would say that network is an acyclic oriented graph.
Networks are described using XML files which conform to the DTD file
    openvip-network.dtd. To see that the structure of
    such a file is really simple let's return to the example from previous
    section and have a look at its XML version:
<?xml version="1.0" ?>
<!DOCTYPE network PUBLIC
          "-//OPENVIP//DTD Network Format V1.0//EN" 
          "http://openvip.sourceforge.net/dtds/openvip-network.dtd">
<network xmlns="http://openvip.sourceforge.net/network-format" version="1.0">
    <module id="loader" class="Input">
        <param name="filename">input.mpg</param>
    </module>
    <module id="resize" class="VideoFilter">
        <param name="videofilter">Resize</param>
        <param name="width">320</param>
        <param name="height">180</param>
    </module>
    <module id="saver" class="Output">
        <param name="filename">output.mpg</param>
        <param name="format">FFMpeg</param>
    </module>
    <connect module_in="loader" conn_in="audio0" module_out="saver" conn_out="audio0"/>
    <connect module_in="loader" conn_in="video0" module_out="resize" conn_out="video0"/>
    <connect module_in="resize" conn_in="video0" module_out="saver" conn_out="video0"/>
</network>The interesting part is that between
    <network> and </network>
    tags.
Each module is described using a <module>
    element. The attribute id gives a unique module name
    (may be chosen arbitrarily), while class describes the
    type or specialization of the module. Every module can be passed one or
    more parameters specified using the <param>
    elements.
A link between the connectors of two modules is introduced using the
    <connect> element - it simply means that the
    output connector conn_in of module
    module_in should be linked to the input connector
    conn_out of module module_out. Most
    modules use standardized connector names such as
    audio0, audio1,
    video0, video1 etc.
With a network description at hand, let's see how to process it by
    OpenVIP. This is easily done with the OpenVIP commmand line interpreter.
    Assuming that our XML network description is stored in file
    test.openvip, the following command will do the
    job:
cli test.openvip
If everything goes well, you should see a progress indicator and
    after the processing finished, you will find the output file in the path
    specified as a parameter to Output module.
Our example showed how to apply a resize video filter. What other modules are available in the OpenVIP distribution?
The documentation includes a list of all video filters including a description of their parameters. You can of course apply more than one video filter on a single input - the output connector of the first filter is then linked to the input connector of the second filter etc.
Audio filters are easy to use,
    too. The module class is now AudioFilter and you
    use audio connectors (audio0 etc.) instead of video
    connectors. A chain of audio filters is built in the same way as with
    video filters.
Video transitions and audio transitions belong to class
    VideoTransition and AudioTransition,
    respectively. They always have two input connectors and a single output
    connector.
Input and output plugins
    are responsible of loading and saving multimedia files. Input modules are
    of class Input and they have no input connectors.
    OpenVIP implements several input modules each of which can read different
    file formats. You usually don't have to specify the input plugin type as
    OpenVIP tries to autodetect which one to use. It is however possible to
    deactivate the autodetection and specify which plugin to use in the
    format parameter:
<module id="loader" class="Input"> <param name="filename">input.mpg</param> <param name="format">FFMpeg</param> </module>
Output modules are of class Output and they have
    no output connectors. You must always choose an output plugin using the
    format parameter:
<module id="saver" class="Output"> <param name="filename">output.mpg</param> <param name="format">FFMpeg</param> </module>
There are also other useful modules included in the OpenVIP distribution.