All Products
Search
Document Center

Intelligent Media Services:Subtitles and subtitle templates

Last Updated:Sep 11, 2026

Modify the Timeline parameter of SubmitMediaProducingJob to configure subtitles, word art, bubble text, and scrolling effects in your video productions.

Usage notes

  • Intelligent production supports editing and compositing, effect rendering, and templates for live streams, VOD files, and material files from Object Storage Service (OSS). For more information, see Overview of intelligent production.

  • You can produce a video from one or more videos, audio files, images, and subtitle materials by configuring Timeline parameters and calling the SubmitMediaProducingJob operation.

  • A timeline is created when you add materials and configure effects to create a video. A timeline consists of tracks, materials, and effects. For more information, see Timeline configurations.

  • For more information about how to use the IMS SDK to edit audio and video files, see Get started.

Add subtitles to a video

Note
  1. Add subtitles via a `SubtitleTracks` track or under `Effects`.

  2. Use `TimelineIn` and `TimelineOut` to define subtitle timing. Without these parameters, track subtitles span the full video duration. `Effects` subtitles default to the parent clip duration.

  3. Use `\N` or `\n` for multiline subtitles.

Effect

Timeline example

{
	"VideoTracks": [{
		"VideoTrackClips": [{
			"MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/h3.mp4",
			"Effects": [{
				"Type": "Background",
				"SubType": "Blur",
				"Radius": 0.1
			}]
		}]
	}],
	"SubtitleTracks": [{
		"SubtitleTrackClips": [{
			"Type": "Text",
			"X": 0,
			"Y": 200,
			"Content": "This is the title",
			"Alignment": "TopCenter",
			"FontSize": 80,
			"FontColorOpacity": 1,
			"EffectColorStyle": "CS0003-000011",
			"FontFace": {
				"Bold": true
			}
		}, {
			"Type": "Text",
			"X": 0,
			"Y": 320,
			"Font": "KaiTi",
			"Content": "This is the subtitle",
			"Alignment": "TopCenter",
			"FontSize": 45,
			"FontColor": "#ffffff",
			"FontFace": {
				"Italic": true,
				"Underline": true
			}
		}, {
			"Type": "Text",
			"X": 50,
			"Y": 740,
			"Font": "AlibabaPuHuiTi",
			"Content": "Angle rotation",
			"FontColor": "#FFD700",
			"Outline": 4,
			"Angle": 350,
			"OutlineColour": "#000000",
			"FontSize": 60,
			"FontFace": {
				"Bold": true
			}
		}, {
			"Type": "Text",
			"X": 0,
			"Y": 900,
			"Font": "AlibabaPuHuiTi",
			"Content": "This is a banner subtitle\nYou can add a line break for multiline display",
			"Outline": 1,
			"OutlineColour": "000000",
			"Alignment": "TopCenter",
			"FontSize": 40,
			"FontColor": "#ffffff",
			"FontFace": {
				"Bold": true,
				"Italic": false,
				"Underline": false
			}
		}, {
			"Type": "Text",
			"X": 0,
			"Y": 1000,
			"Font": "KaiTi",
			"Content": "Set subtitle entrance and exit times",
			"Alignment": "TopCenter",
			"FontSize": 40,
			"FontColor": "#ffffff",
			"TimelineIn": 3,
			"TimelineOut": 6,
			"FontFace": {
				"Bold": false,
				"Italic": true,
				"Underline": false
			}
		}]
	}]
}

Font, outline, shadow, and rotation

Note
  1. `FontSize` sets subtitle font size. Under `Effects`, use `FixedFontSize` to keep the size fixed regardless of video dimensions.

  2. Use `Font` for system fonts or `FontURL` for custom font files from OSS. When both are set, `FontURL` takes precedence.

  3. Use `Outline`, `OutlineColour`, `Shadow`, and `BackColour` for single-layer outline and shadow effects. For multilayer effects, see the custom word art example in the word art section.

  4. `Angle` sets the counterclockwise rotation angle.

Effect

Timeline example

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/h2.mp4",
          "Effects": [
            {
              "Type": "Background",
              "SubType": "Blur",
              "Radius": 0.1
            }
          ]
        }
      ]
    }
  ],
  "SubtitleTracks": [
    {
      "SubtitleTrackClips": [
        {
          "Type": "Text",
          "X": 0,
          "Y": 200,
          "Content": "Main title in font size 80",
          "Alignment": "TopCenter",
          "FontSize": 80,
          "FontColorOpacity": 1,
          "EffectColorStyle": "CS0003-000023",
          "FontFace": {
            "Bold": true
          }
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 320,
          "Font": "KaiTi",
          "Content": "Subtitle in KaiTi font",
          "Alignment": "TopCenter",
          "FontSize": 45,
          "FontColor": "#ffffff",
          "FontFace": {
            "Italic": true,
            "Underline": true
          }
        },
        {
          "Type": "Text",
          "X": 50,
          "Y": 740,
          "Font": "AlibabaPuHuiTi",
          "Content": "Angle rotation",
          "FontColor": "#FFD700",
          "Outline": 4,
          "Angle": 350,
          "OutlineColour": "#000000",
          "FontSize": 60,
          "FontFace": {
            "Bold": true
          }
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 900,
          "Content": "This is a banner subtitle that uses a custom font\nSet a black outline with a width of 1",
          "FontUrl": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/font/fangzhengfangsong.ttf",
          "Outline": 1,
          "OutlineColour": "000000",
          "Alignment": "TopCenter",
          "FontSize": 40,
          "FontColor": "#ffffff",
          "FontFace": {
            "Bold": true,
            "Italic": false,
            "Underline": false
          }
        },
        {
          "Type": "Text",
          "X": 20,
          "Y": 20,
          "Font": "KaiTi",
          "Content": "Set\nsubtitle\nshadow",
          "Alignment": "BottomRight",
          "FontSize": 40,
          "FontColor": "#ffffff",
          "Shadow": 3,
          "BackColour": "#000000",
          "FontFace": {
            "Bold": false,
            "Italic": true,
            "Underline": false
          }
        }
      ]
    }
  ]
}

Word art and custom word art

Note
  1. Use `EffectColorStyleId` to apply word art effects. Available styles are listed in Word art effect examples.

  2. Use `SubtitleEffects` for multilayer outline and shadow effects. For more information about the fields, see the SubtitleEffect section.

Effect

Timeline example

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaUrl": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/h3.mp4",
          "In": 0,
          "Out": 8
        }
      ]
    }
  ],
  "SubtitleTracks": [
    {
      "SubtitleTrackClips": [
        {
          "TimelineIn": 0,
          "TimelineOut": 2,
          "Type": "Text",
          "Y": 0.2,
          "Font": "WenQuanYi Zen Hei Mono",
          "Content": "Cloud intelligent editing",
          "Alignment": "TopCenter",
          "FontSize": 200,
          "FontColor": "#FFFFFF",
          "SubtitleEffects": [
            {
              "Color": "#0420B6",
              "Type": "Shadow",
              "XBord": 0.07,
              "YBord": 0.07,
              "YShift": 0.06
            },
            {
              "Color": "#F2213F",
              "Type": "Shadow",
              "XBord": 0.07,
              "YBord": 0.07,
              "YShift": 0.03
            },
            {
              "Color": "#000000",
              "Type": "Shadow",
              "XShift": 0.01,
              "YShift": 0.01
            },
            {
              "Color": "#000000",
              "Type": "Outline",
              "XBord": 0.01,
              "YBord": 0.01
            }
          ]
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 2,
          "Type": "Text",
          "Y": 0.6,
          "Content": "Advanced word art",
          "Alignment": "TopCenter",
          "FontSize": 150,
          "EffectColorStyle": "CS0001-000011"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.1,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0001-000004"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.3,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0001-000005"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.5,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0001-000014"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.7,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0001-000007"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.1,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0002-000002"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.3,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0002-000004"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.5,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0002-000009"
        },
        {
          "TimelineIn": 2,
          "TimelineOut": 5,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.7,
          "Content": "System word art",
          "FontSize": 150,
          "EffectColorStyle": "CS0002-000016"
        },
        {
          "Comment": "Add a left-offset shadow",
          "TimelineIn": 5,
          "TimelineOut": 8,
          "Type": "Text",
          "FontSize": 150,
          "Content": "Custom word art",
          "Y": 0.1,
          "Alignment": "TopCenter",
          "Font": "HappyZcool-2016",
          "FontColor": "#F688AA",
          "SubtitleEffects": [
            {
              "Color": "#F5D2CC",
              "Type": "Shadow",
              "XBord": 0,
              "YBord": 0,
              "XShift": -0.04,
              "Opacity": 1
            }
          ]
        },
        {
          "Comment": "Add a right-offset shadow",
          "TimelineIn": 5,
          "TimelineOut": 8,
          "Type": "Text",
          "FontSize": 150,
          "Content": "Custom word art",
          "Y": 0.3,
          "Alignment": "TopCenter",
          "Font": "HappyZcool-2016",
          "FontColor": "#F688AA",
          "SubtitleEffects": [
            {
              "Color": "#A33952",
              "Type": "Shadow",
              "XBord": 0,
              "YBord": 0,
              "XShift": 0.04,
              "Opacity": 1
            },
            {
              "Color": "#F5D2CC",
              "Type": "Shadow",
              "XBord": 0,
              "YBord": 0,
              "XShift": -0.04,
              "Opacity": 1
            }
          ]
        },
        {
          "Comment": "Add the first glow layer",
          "TimelineIn": 5,
          "TimelineOut": 8,
          "Type": "Text",
          "FontSize": 150,
          "Content": "Custom word art",
          "Y": 0.5,
          "Alignment": "TopCenter",
          "Font": "HappyZcool-2016",
          "FontColor": "#F688AA",
          "SubtitleEffects": [
            {
              "Color": "#FFFFA0",
              "Type": "Shadow",
              "Blur": 0.08,
              "XBord": 0.08,
              "YBord": 0.08
            },
            {
              "Color": "#A33952",
              "Type": "Shadow",
              "XBord": 0,
              "YBord": 0,
              "XShift": 0.04,
              "Opacity": 1
            },
            {
              "Color": "#F5D2CC",
              "Type": "Shadow",
              "XBord": 0,
              "YBord": 0,
              "XShift": -0.04,
              "Opacity": 1
            }
          ]
        },
        {
          "Comment": "Add the second glow layer",
          "TimelineIn": 5,
          "TimelineOut": 8,
          "Type": "Text",
          "FontSize": 150,
          "Content": "Custom word art",
          "Y": 0.7,
          "Alignment": "TopCenter",
          "Font": "HappyZcool-2016",
          "FontColor": "#F688AA",
          "SubtitleEffects": [
            {
              "Color": "#F688AA",
              "Type": "Shadow",
              "Blur": 0.3,
              "XBord": 0.15,
              "YBord": 0.15
            },
            {
              "Color": "#FFFFA0",
              "Type": "Shadow",
              "Blur": 0.08,
              "XBord": 0.08,
              "YBord": 0.08
            },
            {
              "Color": "#A33952",
              "Type": "Shadow",
              "XBord": 0,
              "YBord": 0,
              "XShift": 0.04,
              "Opacity": 1
            },
            {
              "Color": "#F5D2CC",
              "Type": "Shadow",
              "XBord": 0,
              "YBord": 0,
              "XShift": -0.04,
              "Opacity": 1
            }
          ]
        }
      ]
    }
  ]
}

Partial subtitle overrides

Note

Add override tags to the `Content` field to apply effects to specific parts of a subtitle:

  • Override tags start with two backslashes (\\).

  • Enclose local override tags in braces (`{}`). Multiple tags can share one pair of braces.

  • Each tag applies to the text that follows it. Add a closing tag to end the effect.

Override parameters:

Override parameter

Description

Content parameter example

  • \\1c&[BBGGRR]&

  • \\3c&[BBGGRR]&

  • \\4c&[BBGGRR]&

  • `1c`, `3c`, and `4c` specify the colors of the font, border, and shadow, respectively.

  • `[BBGGRR]` specifies the hexadecimal color value in BGR format. The color order is the reverse of the standard RGB format.

"Set the text to {\\1c&00FF7F&}green{\\1c}"

  • \\bord[width]

  • \\xbord[width]

  • \\ybord[width]

`bord`, `xbord`, and `ybord` specify the width of the border, the border along the x-axis, and the border along the y-axis, respectively. The unit is pixels.

"Set the {\\bord3\\3c&EBCE87&}outline width{\\bord\\3c}, color, and size"

\\b1 \\b0

`b1` applies bold. `b0` removes bold.

"Apply a {\\b1}bold{\\b0} effect",

\\i1 \\i0

`i1` applies italics. `i0` removes italics.

"Apply an {\\i1}italic{\\i0} effect"

\\u1 \\u0

`u1` applies an underline. `u0` removes the underline.

"Apply an {\\u1}underline{\\u0} effect"

\\s1 \\s0

`s1` applies a strikethrough. `s0` removes the strikethrough.

"Apply a {\\s1}strikethrough{\\s0} effect"

\\fs[font size]

The font size of the subtitle. The unit is pixels.

"Set the font size to {\\fs100}100{\\fs}"

\\fn[font name]

Custom fonts are not supported for caption names.

"Set the font to {\\fnKaiTi}Heiti{\\fn}"

Effect

Timeline example

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/v1.mp4"
        }
      ]
    }
  ],
  "SubtitleTracks": [
    {
      "SubtitleTrackClips": [
        {
          "Type": "Text",
          "X": 0,
          "Y": 150,
          "Font": "FZKai-Z03S",
          "Content": "Set the color to {\\1c&0801ea&\\3c&f7fcff&}dark red{\\1c\\3c}",
          "Alignment": "TopCenter",
          "FontSize": 65,
          "FontColor": "#F5FFFA",
          "TimelineIn": 0,
          "TimelineOut": 10,
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 300,
          "Font": "FZKai-Z03S",
          "Content": "Set the font size to {\\fs100}100{\\fs}",
          "Alignment": "TopCenter",
          "FontColor": "#F5FFFA",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "Y": 450,
          "Font": "FZKai-Z03S",
          "Content": "Set the {\\bord3\\3c&CD0000&}outline{\\bord\\3c} color and size",
          "Alignment": "TopCenter",
          "FontSize": 65,
          "FontColor": "#F5FFFA",
          "TimelineIn": 0,
          "TimelineOut": 10,
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "Y": 600,
          "Content": "Set the {\\bord3\\3c&701919&}opaque background{\\bord\\3c} color and size",
          "Comment": "To set an opaque background, you must set BorderStyle to 3. ",
          "Font": "FZKai-Z03S",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "Alignment": "TopCenter",
          "FontColor": "#F5FFFA",
          "BorderStyle": 3,
          "Outline": 0,
          "OutlineColour": "#0000CD"
        },
        {
          "Type": "Text",
          "Y": 750,
          "Font": "FZKai-Z03S",
          "Content": "Set the font to {\\fnKaiTi}KaiTi{\\fn}",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "FontColor": "#F5FFFA",
          "Alignment": "TopCenter",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "Y": 900,
          "Font": "FZKai-Z03S",
          "Content": "Apply a {\\b1}bold{\\b0} effect",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "FontColor": "#F5FFFA",
          "Alignment": "TopCenter",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "Y": 1050,
          "Font": "FZKai-Z03S",
          "Content": "Apply an {\\i1}italic{\\i0} effect",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "FontColor": "#F5FFFA",
          "Alignment": "TopCenter",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "Y": 1200,
          "Font": "FZKai-Z03S",
          "Content": "Apply an {\\u1}underline{\\u0} effect",
          "FontColor": "#F5FFFA",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "Alignment": "TopCenter",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "Y": 1350,
          "Font": "FZKai-Z03S",
          "Content": "Apply a {\\s1}strikethrough{\\s0} effect",
          "FontColor": "#F5FFFA",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "Alignment": "TopCenter",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "Y": 1500,
          "Font": "FZKai-Z03S",
          "Content": "Apply a {\\1c&00FF00&\\b1\\fs100\\i1}combined{\\1c\\b0\\fs\\i0} effect",
          "FontColor": "#F5FFFA",
          "FontSize": 65,
          "TimelineIn": 0,
          "TimelineOut": 10,
          "Alignment": "TopCenter",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        }
      ]
    }
  ]
}

Subtitle auto-wrapping

Note
  1. Set `AdaptMode` to `AutoWrap` to wrap subtitles that exceed canvas boundaries. Use `TextWidth` to control wrapping within a specific width (absolute pixels or percentage of canvas width).

  2. For English text, set `AdaptMode` to `AutoWrapAtSpaces` to break lines at spaces only.

Effect

Timeline example

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/v1.mp4"
        }
      ]
    }
  ],
  "SubtitleTracks": [
    {
      "SubtitleTrackClips": [
        {
          "Type": "Text",
          "X": 0,
          "Y": 200,
          "Font": "FZKai-Z03S",
          "Content": "If auto wrap is not set, long subtitles will extend beyond the video canvas.",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 600,
          "Font": "FZKai-Z03S",
          "Content": "Auto wrap is triggered when the subtitle exceeds the video canvas width.",
          "AdaptMode": "AutoWrap",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 1000,
          "Font": "FZKai-Z03S",
          "Content": "Set TextWidth to auto wrap within a specified range.",
          "TextWidth": 0.7,
          "AdaptMode": "AutoWrap",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 1400,
          "Content": "Subtitles only automatically wrap at spaces.",
          "AdaptMode": "AutoWrapAtSpaces",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100"
        }
      ]
    }
  ]
}

Subtitle alignment

  • Subtitle positioning depends on the `Alignment` value. Alignment modes and default anchor points:

    Alignment

    Alignment

    Default position

    TopLeft

    Align left

    Top-left corner of the video

    TopCenter

    Align center

    Top edge, centered horizontally

    TopRight

    Align right

    Top-right corner of the video

    CenterLeft

    Align left

    The left side of the horizontal central axis of the video

    CenterCenter

    Align center

    On the horizontal axis, to the right of the center of the video.

    CenterRight

    Align right

    To the right of the video's horizontal centerline

    BottomLeft

    Align left

    Bottom-left corner of the video

    BottomCenter

    Align center

    Bottom edge, centered horizontally

    BottomRight

    Align right

    Bottom-right corner of the video

  • For precise positioning, set `Alignment` to `Left`, `Center`, or `Right`. Anchor points:

    Alignment

    Alignment

    Positioning anchor point

    Left

    Align left

    Top-left vertex of the subtitle text box

    Center

    Align center

    Midpoint of the top border of the subtitle text box

    Right

    Align right

    Top-right vertex of the subtitle text box

  • Positioning anchor points for each `Alignment` value:

    image

Effect

Timeline example

{
    "VideoTracks": [
        {
            "VideoTrackClips": [
                {
                    "MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/h3.mp4"
                }
            ]
        }
    ],
    "SubtitleTracks": [
        {
            "SubtitleTrackClips": [
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nTopLeft",
                    "Alignment": "TopLeft",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nTopCenter",
                    "Alignment": "TopCenter",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nTopRight",
                    "Alignment": "TopRight",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nCenterLeft",
                    "Alignment": "CenterLeft",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nCenterCenter",
                    "Alignment": "CenterCenter",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nCenterRight",
                    "Alignment": "CenterRight",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nBottomLeft",
                    "Alignment": "BottomLeft",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nBottomCenter",
                    "Alignment": "BottomCenter",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nBottomRight",
                    "Alignment": "BottomRight",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 0,
                    "TimelineOut": 4
                }
            ]
        },
        {
            "SubtitleTrackClips": [
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nLeft",
                    "X": 100,
                    "Y": 500,
                    "Alignment": "TopLeft",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 4,
                    "TimelineOut": 8
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "Content": "Alignment\nCenter",
                    "X": 950,
                    "Y": 500,
                    "Alignment": "Center",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 4,
                    "TimelineOut": 8
                },
                {
                    "Type": "Text",
                    "Font": "FZKai-Z03S",
                    "X": 1820,
                    "Y": 500,
                    "Content": "Alignment\nRight",
                    "Alignment": "Right",
                    "FontSize": 70,
                    "FontColor": "#F5FFFA",
                    "Outline": 2,
                    "OutlineColour": "#0e0100",
                    "TimelineIn": 4,
                    "TimelineOut": 8
                }
            ]
        }
    ]
}

Entrance, exit, and loop effects

Note
  1. Specify duration for entrance and exit effects, or speed for loop effects.

  2. Entrance/exit effects and loop effects are mutually exclusive.

Effect

Timeline example

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/v1.mp4"
        }
      ]
    }
  ],
  "SubtitleTracks": [
    {
      "SubtitleTrackClips": [
        {
          "Type": "Text",
          "X": 0,
          "Y": 200,
          "Font": "HappyZcool-2016",
          "Content": "Entrance effect, 2s duration",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100",
          "AaiMotionInEffect": "rotateflip_in",
          "AaiMotionIn": 2
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 600,
          "Font": "HappyZcool-2016",
          "Content": "Exit effect, 2s duration",
          "AdaptMode": "AutoWrap",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100",
          "AaiMotionOutEffect": "slide_down_out",
          "AaiMotionOut": 2
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 1000,
          "Font": "HappyZcool-2016",
          "Content": "Loop effect, 2x speed",
          "TextWidth": 0.7,
          "AdaptMode": "AutoWrap",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100",
          "AaiMotionLoopEffect": "rainbrush_display",
          "Ratio": 2
        },
        {
          "Type": "Text",
          "X": 0,
          "Y": 1400,
          "Font": "HappyZcool-2016",
          "Content": "Combined entrance and exit effects",
          "AdaptMode": "AutoWrapAtSpaces",
          "Alignment": "TopCenter",
          "FontSize": 70,
          "FontColor": "#F5FFFA",
          "Outline": 2,
          "OutlineColour": "#0e0100",
          "AaiMotionInEffect": "zoomin_i",
          "AaiMotionIn": 2,
          "AaiMotionOutEffect": "dissolve_out",
          "AaiMotionOut": 2
        }
      ]
    }
  ]
}

Subtitle background

Note

Use the `Box` field in `SubtitleEffects` to add a solid color background. Combine with word art and line wrapping as needed.

Effect

Timeline example

{
    "VideoTracks": [
      {
        "VideoTrackClips": [
          {
            "MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/v1.mp4"
          }
        ]
      }
    ],
    "SubtitleTracks": [
      {
        "SubtitleTrackClips": [
          {
            "Type": "Text",
            "X": 0,
            "Y": 150,
            "Font": "HappyZcool-2016",
            "Content": "Set the offset, width, height,\nand border radius of the solid color background",
            "AdaptMode": "AutoWrap",
            "Alignment": "TopCenter",
            "FontSize": 70,
            "FontColor": "#F5FFFA",
            "SubtitleEffects": [
              {
                "Type": "Box",
                "Color": "1E90FF",
                "XShift": 20,
                "YShift": -20,
                "Bord": 20,
                "Radius": 20
              }
            ]
          }
        ]
      },
      {
        "SubtitleTrackClips": [
          {
            "Type": "Text",
            "X": 0,
            "Y": 500,
            "Font": "HappyZcool-2016",
            "Content": "Set the opacity of the subtitle background",
            "AdaptMode": "AutoWrap",
            "Alignment": "TopCenter",
            "FontSize": 70,
            "FontColor": "#F5FFFA",
            "SubtitleEffects": [
              {
                "Type": "Box",
                "Color": "1E90FF",
                "Opacity": "0.5",
                "Bord": 20
              }
            ]
          }
        ]
      },
      {
        "SubtitleTrackClips": [
          {
            "Type": "Text",
            "X": 0,
            "Y": 850,
            "Font": "HappyZcool-2016",
            "Content": "Set a solid color background for subtitles with line wrapping",
            "AdaptMode": "AutoWrap",
            "TextWidth": 0.6,
            "Alignment": "TopCenter",
            "FontSize": 70,
            "FontColor": "#F5FFFA",
            "SubtitleEffects": [
              {
                "Type": "Box",
                "Color": "1E90FF",
                "Bord": 20
              }
            ]
          }
        ]
      },
      {
        "SubtitleTrackClips": [
          {
            "Type": "Text",
            "X": 0,
            "Y": 1200,
            "Font": "HappyZcool-2016",
            "Content": "Set a solid color background with word art and effects",
            "AdaptMode": "AutoWrapAtSpaces",
            "Alignment": "TopCenter",
            "FontSize": 70,
            "EffectColorStyle": "CS0003-000006",
            "AaiMotionInEffect": "zoomin_i",
            "AaiMotionIn": 2,
            "AaiMotionOutEffect": "dissolve_out",
            "AaiMotionOut": 2,
            "SubtitleEffects": [
              {
                "Type": "Box",
                "Color": "1E90FF",
                "Bord": 20
              }
            ]
          }
        ]
      },
      {
        "SubtitleTrackClips": [
          {
            "Type": "Text",
            "X": 0,
            "Y": 1550,
            "Font": "HappyZcool-2016",
            "Content": "Set a texture map for the subtitle background\nand a border radius effect",
            "AdaptMode": "AutoWrapAtSpaces",
            "Alignment": "TopCenter",
            "FontSize": 70,
            "EffectColorStyle": "CS0003-000006",
            "AaiMotionInEffect": "zoomin_i",
            "AaiMotionIn": 2,
            "AaiMotionOutEffect": "dissolve_out",
            "AaiMotionOut": 2,
            "SubtitleEffects": [
              {
                "Type": "Box",
                "Color": "1E90FF",
                "Bord": 20,
                "Radius": 20,
                "ImageURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/image/subtitle_background.png"
              }
            ]
          }
        ]
      }
    ]
  }

Bubble text

Note
  1. Set `BubbleStyleId` to apply a bubble style. For more information about bubble styles, see Text bubble effect examples.

  2. Set `BubbleWidth` and `BubbleHeight` to control bubble dimensions. `X` and `Y` specify the top-left corner of the bubble relative to the video origin.

  3. Under `SubtitleEffects`, use the `Box` type with an image to create custom bubble text. Specify `Width` and `Height` for the bubble image, and `TextArea` (top-left x, top-left y, width, height) for the text box position within the bubble.

  4. Bubble text auto-wraps and scales within the bubble.

Effect

Timeline example

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaUrl": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/h3.mp4"
        }
      ]
    }
  ],
  "SubtitleTracks": [
    {
      "SubtitleTrackClips": [
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.1,
          "Y": 0,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0001-000001"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.2,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0001-000002"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.4,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0001-000003"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.6,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0001-000004"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.1,
          "Y": 0.8,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0001-000005"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.6,
          "Y": 0,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0002-000001"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.2,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0002-000002"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.4,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0002-000003"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.6,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0002-000004"
        },
        {
          "TimelineIn": 0,
          "TimelineOut": 4,
          "Type": "Text",
          "X": 0.6,
          "Y": 0.8,
          "FontSize": 150,
          "BubbleHeight": 0.18,
          "Alignment": "TopCenter",
          "BubbleStyleId": "BS0002-000005"
        },
        {
          "TimelineIn": 4,
          "TimelineOut": 8,
          "Type": "Text",
          "Content": "Custom bubble text",
          "FontColor": "#000000",
          "X": 0.1,
          "Y": 0.3,
          "BubbleWidth": 0.8,
          "Alignment": "TopCenter",
          "SubtitleEffects": [
            {
              "Type": "Box",
              "Width": 1050,
              "Height": 250,
              "TextArea": "0.1,0.2,0.8,0.6",
              "ImageURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/image/round_rectangle.png"
            }
          ]
        }
      ]
    }
  ]
}

Subtitle scrolling examples

Note
  • Set `ScrollStartY` and `ScrollEndY` for vertical scroll boundaries. `ScrollSpeed` controls speed in pixels.

  • For vertical scrolling, if `TimelineOut` is omitted, duration is auto-estimated from the scroll period. Configure positions (`ScrollStartY`, `ScrollEndY`), freeze times (`ScrollStartFreeze`, `ScrollEndFreeze`), offsets (`ScrollStartShift`, `ScrollEndShift`), and speed (`ScrollSpeed`).

  • For horizontal scrolling, configure positions (`ScrollStartX`, `ScrollEndX`), speed (`ScrollSpeed`), and loop mode (`ScrollLoop`).

  • To align assets with vertical scrolling subtitles, set `ClipId` to `ScrollSubtitle` on the subtitle clip. Other assets (background image, audio, banner text) must set `ReferenceClipId` to `ScrollSubtitle`. The subtitle start time must equal the opening sequence duration, or alignment fails.

Effect

Timeline example

{
	"VideoTracks": [{
			"VideoTrackClips": [{
					"Type": "Image",
					"MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/image/a1.png",
					"AdaptMode": "Cover",
					"Comment": "Opening",
					"Width": 1,
					"Height": 1,
					"Duration": 3
				},
				{
					"Type": "Image",
					"MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/image/back.png",
					"AdaptMode": "Cover",
					"Comment": "Background image",
					"Width": 1,
					"Height": 1,
					"ReferenceClipId": "ScrollSubtitle"
				},
				{
					"Type": "Image",
					"MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/image/01.jpg",
					"AdaptMode": "Cover",
					"Comment": "Outro",
					"Width": 1,
					"Height": 1,
					"Duration": 3
				}
			]
		},
		{
			"VideoTrackClips": [{
				"Type": "GlobalImage",
				"MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/aliyun_logo_white.png",
				"Comment": "logo",
				"X": 10,
				"Y": 10,
				"Width": 247,
				"Height": 74
			}]
		}
	],
	"SubtitleTracks": [{
			"SubtitleTrackClips": [{
				"TimelineIn": 3,
				"ClipId": "ScrollSubtitle",
				"Type": "Text",
				"Content": "Alibaba Cloud Intelligent Media Services is a comprehensive multimedia processing solution that integrates cloud computing, big data, and artificial intelligence technologies. It provides users with efficient and convenient features such as video on demand, live streaming, content moderation, and intelligent editing. The service aims to help enterprises and developers easily build and manage multimedia applications, improve user experience, and reduce operational costs.\n\nKey features include the following:\n\nVideo on demand: Provides a one-stop service from video upload, transcoding, and storage to distribution. It supports multiple format conversions and can automatically select the optimal node for playback based on the user's location to ensure a smooth experience.\n\nWeb Real-Time Communication: Implements low-latency, high-definition audio and video calls or conference services based on WebRTC technology, suitable for various scenarios such as online education and telemedicine.\n\nLive streaming service: Covers the entire process from stream ingest, transcoding, and recording to playback. It supports ultra-large-scale concurrent viewing to meet the needs of large events such as sports games and concerts.\n\nContent moderation: Uses AI algorithms to automatically detect content such as images, text, and videos to identify non-compliant information such as pornography and violence, helping enterprises quickly respond to regulatory requirements.\n\nIntelligent editing and effects: Automatically analyzes video content to generate highlight clips or adds elements such as captions and background music to enhance viewability through AI technology.\n\nData analytics: Provides detailed access statistics reports to help users understand viewer behavior and preferences and optimize content strategies.\n\nScenarios:\n\nOnline education platforms\n\nSocial entertainment platforms\n\nCorporate training systems\n\nProduct displays on e-commerce websites\n\nContent publishing for news media\n\nAdvantages and features:\n\nHighly scalable: Flexibly adjust resource scale as needed.\n\nSecure and reliable: Uses multiple encryption measures to protect data security.\n\nCost-effective: The pay-as-you-go model effectively controls expenses.\n\nEasy to integrate: Provides rich API operations for easy integration with other systems.\n\nIn summary, Alibaba Cloud Intelligent Media Services, with its powerful technical strength and service capabilities, has been widely used in multiple fields, helping enterprises accelerate their digital transformation.",
				"Comment": "Vertical scrolling",
				"FontSize": 50,
				"FontColorOpacity": 1,
				"Spacing": 0,
				"LineSpacing": 10,
				"AdaptMode": "AutoWrap",
				"FontColor": "#ffffff",
				"Font": "Alibaba PuHuiTi",
				"X": 0.1,
				"TextWidth": 0.8,
				"ScrollStartY": 1120,
				"ScrollEndY": 200,
				"ScrollSpeed": 75,
				"ScrollLoopTime": 1,
				"ScrollStartShift": 800,
				"ScrollEndShift": 400,
				"ScrollStartFreeze": 2,
				"ScrollEndFreeze": 2
			}]
		},
		{
			"SubtitleTrackClips": [{
				"ReferenceClipId": "ScrollSubtitle",
				"Type": "Text",
				"Content": "Alibaba Cloud Intelligent Media Services",
				"Comment": "Horizontal scrolling",
				"Font": "Alibaba PuHuiTi",
				"AdaptMode": "AutoWrap",
				"FontSize": 50,
				"TextWidth": 0.8,
				"ScrollDirection": "Left",
				"ScrollStartX": 620,
				"ScrollEndX": 50,
				"ScrollSpeed": 100,
				"ScrollLoop": true,
				"Y": 1200
			}]
		}
	],
	"AudioTracks": [{
		"AudioTrackClips": [{
			"ReferenceClipId": "ScrollSubtitle",
      "Comment": "Background music",
			"MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/music/m2.wav",
			"LoopMode": true,
			"In": 4,
			"Out": 24
		}]
	}]
}

Consistent font size across resolutions (FECanvas)

Note

`FontSize` is the subtitle height in pixels. The same value occupies different proportions at different resolutions — for example, 100px appears larger in 480p than 720p. To maintain consistent proportions across resolutions, set `FECanvas` in the timeline.

Effect

Timeline example

{
    "FECanvas": {
        "Height": 1280,
        "Width": 720
      },
    "VideoTracks": [
      {
        "VideoTrackClips": [
          {
            "MediaURL": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/h2.mp4",
            "Effects": [
              {
                "Type": "Background",
                "SubType": "Blur",
                "Radius": 0.1
              }
            ]
          }
        ]
      }
    ],
    "SubtitleTracks": [
      {
        "SubtitleTrackClips": [
          {
            "Type": "Text",
            "X": 0,
            "Y": 200,
            "Content": "Main title in font size 80",
            "Alignment": "TopCenter",
            "FontSize": 80,
            "FontColorOpacity": 1,
            "EffectColorStyle": "CS0003-000023",
            "FontFace": {
              "Bold": true
            }
          },
          {
            "Type": "Text",
            "X": 0,
            "Y": 320,
            "Font": "KaiTi",
            "Content": "Subtitle in KaiTi font",
            "Alignment": "TopCenter",
            "FontSize": 45,
            "FontColor": "#ffffff",
            "FontFace": {
              "Italic": true,
              "Underline": true
            }
          },
          {
            "Type": "Text",
            "X": 50,
            "Y": 740,
            "Font": "AlibabaPuHuiTi",
            "Content": "Angle rotation",
            "FontColor": "#FFD700",
            "Outline": 4,
            "Angle": 350,
            "OutlineColour": "#000000",
            "FontSize": 60,
            "FontFace": {
              "Bold": true
            }
          },
          {
            "Type": "Text",
            "X": 0,
            "Y": 900,
            "Content": "This is a banner subtitle that uses a custom font\nSet a black outline with a width of 1",
            "FontUrl": "https://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/font/fangzhengfangsong.ttf",
            "Outline": 1,
            "OutlineColour": "000000",
            "Alignment": "TopCenter",
            "FontSize": 40,
            "FontColor": "#ffffff",
            "FontFace": {
              "Bold": true,
              "Italic": false,
              "Underline": false
            }
          },
          {
            "Type": "Text",
            "X": 20,
            "Y": 20,
            "Font": "KaiTi",
            "Content": "Set\nsubtitle\nshadow",
            "Alignment": "BottomRight",
            "FontSize": 40,
            "FontColor": "#ffffff",
            "Shadow": 3,
            "BackColour": "#000000",
            "FontFace": {
              "Bold": false,
              "Italic": true,
              "Underline": false
            }
          }
        ]
      }
    ]
  }