Tous les produits
Search
Centre de documentation

Intelligent Media Services:Subtitles and subtitle templates

Dernière mise à jour :Sep 12, 2026

Modifiez le paramètre Timeline de l'opération SubmitMediaProducingJob pour configurer des sous-titres, du texte artistique, des bulles de dialogue et des effets de défilement dans vos productions vidéo.

Notes d'utilisation

  • La production intelligente prend en charge le montage et le compositing, le rendu des effets ainsi que les modèles pour les flux en direct, les fichiers VOD et les fichiers de ressources provenant d'Object Storage Service (OSS). Pour plus d'informations, consultez la rubrique Présentation de la production intelligente.

  • Vous pouvez produire une vidéo à partir d'une ou plusieurs vidéos, de fichiers audio, d'images et de ressources de sous-titres en configurant les paramètres Timeline et en appelant l'opération SubmitMediaProducingJob.

  • Une timeline est créée lorsque vous ajoutez des ressources et configurez des effets pour créer une vidéo. Une timeline se compose de pistes, de ressources et d'effets. Pour plus d'informations, consultez la rubrique Configurations de la timeline.

  • Pour savoir comment utiliser le SDK IMS afin de modifier des fichiers audio et vidéo, consultez le guide Premiers pas.

Ajouter des sous-titres à une vidéo

Remarque
  1. Ajoutez des sous-titres via une piste SubtitleTracks ou sous Effects.

  2. Utilisez TimelineIn et TimelineOut pour définir le minutage des sous-titres. Sans ces paramètres, les sous-titres de piste s'étendent sur toute la durée de la vidéo. Les sous-titres Effects utilisent par défaut la durée du clip parent.

  3. Utilisez \N ou \n pour les sous-titres multilignes.

Effet

Exemple de timeline

{
	"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
			}
		}]
	}]
}

Police, contour, ombre et rotation

Remarque
  1. FontSize définit la taille de la police des sous-titres. Sous Effects, utilisez FixedFontSize pour maintenir la taille fixe indépendamment des dimensions de la vidéo.

  2. Utilisez Font pour les polices système ou FontURL pour les fichiers de polices personnalisés depuis OSS. Lorsque les deux sont définis, FontURL est prioritaire.

  3. Utilisez Outline, OutlineColour, Shadow et BackColour pour les effets de contour et d'ombre monocouche. Pour les effets multicouches, consultez l'exemple de texte artistique personnalisé dans la section dédiée au texte artistique.

  4. Angle définit l'angle de rotation dans le sens inverse des aiguilles d'une montre.

Effet

Exemple de timeline

{
  "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
          }
        }
      ]
    }
  ]
}

Texte artistique et texte artistique personnalisé

Remarque
  1. Utilisez EffectColorStyleId pour appliquer des effets de texte artistique. Les styles disponibles sont répertoriés dans la rubrique Exemples d'effets de texte artistique.

  2. Utilisez SubtitleEffects pour les effets de contour et d'ombre multicouches. Pour plus d'informations sur les champs, consultez la section SubtitleEffect.

Effet

Exemple de timeline

{
  "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
            }
          ]
        }
      ]
    }
  ]
}

Remplacements partiels de sous-titres

Remarque

Ajoutez des balises de remplacement au champ Content pour appliquer des effets à des parties spécifiques d'un sous-titre :

  • Les balises de remplacement commencent par deux barres obliques inverses (\\).

  • Entourez les balises de remplacement locales d'accolades ({}). Plusieurs balises peuvent partager une seule paire d'accolades.

  • Chaque balise s'applique au texte qui la suit. Ajoutez une balise de fermeture pour mettre fin à l'effet.

Paramètres de remplacement :

Paramètre de remplacement

Description

Exemple de paramètre Content

  • \\1c&[BBGGRR]&

  • \\3c&[BBGGRR]&

  • \\4c&[BBGGRR]&

  • 1c, 3c et 4c spécifient respectivement les couleurs de la police, de la bordure et de l'ombre.

  • [BBGGRR] spécifie la valeur de couleur hexadécimale au format BGR. L'ordre des couleurs est l'inverse du format RGB standard.

« Définir le texte en {\\1c&00FF7F&}vert{\\1c} »

  • \\bord[width]

  • \\xbord[width]

  • \\ybord[width]

bord, xbord et ybord spécifient respectivement la largeur de la bordure, la bordure le long de l'axe x et la bordure le long de l'axe y. L'unité est le pixel.

« Définir la {\\bord3\\3c&EBCE87&}largeur du contour{\\bord\\3c}, la couleur et la taille »

\\b1 \\b0

b1 applique le gras. b0 supprime le gras.

« Appliquer un effet {\\b1}gras{\\b0} »,

\\i1 \\i0

i1 applique l'italique. i0 supprime l'italique.

« Appliquer un effet {\\i1}italique{\\i0} »

\\u1 \\u0

u1 applique un soulignement. u0 supprime le soulignement.

« Appliquer un effet de {\\u1}soulignement{\\u0} »

\\s1 \\s0

s1 applique un barré. s0 supprime le barré.

« Appliquer un effet {\\s1}barré{\\s0} »

\\fs[font size]

Taille de la police du sous-titre. L'unité est le pixel.

« Définir la taille de police à {\\fs100}100{\\fs} »

\\fn[font name]

Les polices personnalisées ne sont pas prises en charge pour les noms de légendes.

« Définir la police sur {\\fnKaiTi}Heiti{\\fn} »

Effet

Exemple de timeline

{
  "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"
        }
      ]
    }
  ]
}

Césure automatique des sous-titres

Remarque
  1. Définissez AdaptMode sur AutoWrap pour effectuer la césure des sous-titres qui dépassent les limites du canevas. Utilisez TextWidth pour contrôler la césure dans une largeur spécifique (pixels absolus ou pourcentage de la largeur du canevas).

  2. Pour le texte en anglais, définissez AdaptMode sur AutoWrapAtSpaces pour effectuer les sauts de ligne uniquement aux espaces.

Effet

Exemple de timeline

{
  "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"
        }
      ]
    }
  ]
}

Alignement des sous-titres

  • Le positionnement du sous-titre dépend de la valeur Alignment. Modes d'alignement et points d'ancrage par défaut :

    Alignment

    Alignement

    Position par défaut

    TopLeft

    Aligner à gauche

    Coin supérieur gauche de la vidéo

    TopCenter

    Centrer

    Bord supérieur, centré horizontalement

    TopRight

    Aligner à droite

    Coin supérieur droit de la vidéo

    CenterLeft

    Aligner à gauche

    Côté gauche de l'axe central horizontal de la vidéo

    CenterCenter

    Centrer

    Sur l'axe horizontal, à droite du centre de la vidéo.

    CenterRight

    Aligner à droite

    À droite de la ligne médiane horizontale de la vidéo

    BottomLeft

    Aligner à gauche

    Coin inférieur gauche de la vidéo

    BottomCenter

    Centrer

    Bord inférieur, centré horizontalement

    BottomRight

    Aligner à droite

    Coin inférieur droit de la vidéo

  • Pour un positionnement précis, définissez Alignment sur Left, Center ou Right. Points d'ancrage :

    Alignment

    Alignement

    Point d'ancrage de positionnement

    Left

    Aligner à gauche

    Sommet supérieur gauche de la zone de texte du sous-titre

    Center

    Centrer

    Point médian du bord supérieur de la zone de texte du sous-titre

    Right

    Aligner à droite

    Sommet supérieur droit de la zone de texte du sous-titre

  • Points d'ancrage de positionnement pour chaque valeur Alignment :

    image

Effet

Exemple de timeline

{
    "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
                }
            ]
        }
    ]
}

Effets d'entrée, de sortie et en boucle

Remarque
  1. Spécifiez la durée des effets d'entrée et de sortie, ou la vitesse des effets en boucle.

  2. Les effets d'entrée/sortie et les effets en boucle sont mutuellement exclusifs.

Effet

Exemple de timeline

{
  "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
        }
      ]
    }
  ]
}

Arrière-plan des sous-titres

Remarque

Utilisez le champ Box dans SubtitleEffects pour ajouter un arrière-plan de couleur unie. Combinez-le avec des effets de texte artistique et le retour à la ligne selon vos besoins.

Effet

Exemple de timeline

{
    "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"
              }
            ]
          }
        ]
      }
    ]
  }

Texte en bulle

Remarque
  1. Définissez BubbleStyleId pour appliquer un style de bulle. Pour plus d'informations sur les styles de bulles, consultez Exemples d'effets de bulles de texte.

  2. Définissez BubbleWidth et BubbleHeight pour contrôler les dimensions de la bulle. X et Y spécifient le coin supérieur gauche de la bulle par rapport à l'origine de la vidéo.

  3. Sous SubtitleEffects, utilisez le type Box avec une image pour créer un texte en bulle personnalisé. Spécifiez Width et Height pour l'image de la bulle, et TextArea (x en haut à gauche, y en haut à gauche, largeur, hauteur) pour la position de la zone de texte dans la bulle.

  4. Le texte en bulle s'enroule automatiquement et s'adapte à l'échelle dans la bulle.

Effet

Exemple de timeline

{
  "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"
            }
          ]
        }
      ]
    }
  ]
}

Exemples de défilement des sous-titres

Remarque
  • Définissez ScrollStartY et ScrollEndY pour les limites de défilement vertical. ScrollSpeed contrôle la vitesse en pixels.

  • Pour le défilement vertical, si TimelineOut est omis, la durée est estimée automatiquement à partir de la période de défilement. Configurez les positions (ScrollStartY, ScrollEndY), les temps de pause (ScrollStartFreeze, ScrollEndFreeze), les décalages (ScrollStartShift, ScrollEndShift) et la vitesse (ScrollSpeed).

  • Pour le défilement horizontal, configurez les positions (ScrollStartX, ScrollEndX), la vitesse (ScrollSpeed) et le mode boucle (ScrollLoop).

  • Pour aligner les ressources avec les sous-titres à défilement vertical, définissez ClipId sur ScrollSubtitle dans le clip de sous-titre. Les autres ressources (image d'arrière-plan, audio, texte de bannière) doivent définir ReferenceClipId sur ScrollSubtitle. L'heure de début du sous-titre doit être égale à la durée de la séquence d'ouverture, sinon l'alignement échoue.

Effet

Exemple de timeline

{
	"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
		}]
	}]
}

Taille de police cohérente entre les résolutions (FECanvas)

Remarque

FontSize représente la hauteur du sous-titre en pixels. Une même valeur occupe des proportions différentes selon les résolutions ; par exemple, 100 px apparaît plus grand en 480p qu'en 720p. Pour maintenir des proportions cohérentes quelle que soit la résolution, définissez FECanvas dans la timeline.

Effet

Exemple de timeline

{
    "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
            }
          }
        ]
      }
    ]
  }