This guide includes parts of a user case from one of our customers.


Customer asked;


"Please could you give me an example script that can dynamically add <output> groups for each pair of audio channels?
The profile I have below is for 4 channels, but I need one that does 2, 4, 6, up to 16.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
    <name>360ProxyAudioStream</name>
    <format>mp4</format>
    <audio>
        <output>
            <format>mp4</format>
            <codec>aac</codec>
            <bitrate>128000</bitrate>
            <channel>0</channel>
            <channel>1</channel>
            <stream>2</stream>
        </output>
        <output>
            <format>mp4</format>
            <codec>aac</codec>
            <bitrate>128000</bitrate>
            <channel>3</channel>
            <channel>4</channel>
            <stream>2</stream>
        </output>
    </audio>
    <video>
        <codec>h264</codec>
        <bitrate>1000000</bitrate>
        <resolution>
            <width>640</width>
            <height>360</height>
        </resolution>
    </video>
</TranscodePresetDocument>



Resolution;


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TranscodePresetDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <name>360ProxyAudioStream</name>
  <format>mp4</format>
  <audio>
    <output>
      <format>mp4</format>
      <codec>aac</codec>
      <bitrate>128000</bitrate>
      <channel>0</channel>
      <channel>1</channel>
      <stream>2</stream>
    </output>
  </audio>
  <video>
    <codec>h264</codec>
    <bitrate>1000000</bitrate>
    <resolution>
      <width>640</width>
      <height>360</height>
    </resolution>
  </video>
  <script>
var template = preset.getAudio().getOutput().get(0);
var initialChannels = preset.getAudio().getOutput().size() * 2;

var channelCount = 4;
for (i = initialChannels; i &lt; channelCount; i += 2) {
  var output = template.clone();
  output.getChannel().clear();
  output.getStream().clear();

  output.getChannel().add(new java.lang.Integer(i));
  output.getChannel().add(new java.lang.Integer(i+1));
  output.getStream().add(new java.lang.Integer(2));
  preset.getAudio().getOutput().add(output);
}
</script>
</TranscodePresetDocument>


To test the script against an item/shape, you can use;

GET /shape-tag/(tag-name)/item/(item-id)/shape/(shape-id)