You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
视频直播

视频直播

复制全文
下载 pdf
Java SDK
字幕配置
复制全文
下载 pdf
字幕配置

阅读本文,您可以获取 Java SDK 字幕配置的接口调用示例,实现快速开发。

说明

本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。

调用说明

  • 本文提供的接口调用示例均通过 AK 和 SK 初始化实例。
  • 接口的参数说明和错误码等信息可通过接口文档或打开 API Explorer文档说明页签查看。

前提条件

调用接口前,请先完成 Java SDK 的安装及初始化操作。

调用示例

本节为您介绍字幕配置相关接口的功能和调用示例。

添加字幕配置

您可以调用 CreateSubtitleTranscodePreset 接口添加字幕配置。详细的参数说明可参见 CreateSubtitleTranscodePreset 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;

import com.volcengine.model.live.v20230101.*;
import com.volcengine.service.live.v20230101.LiveService;
import java.util.ArrayList;
import java.util.List;

public class CreateSubtitleTranscodePresetDemo {

  public static void main(String[] args) {
    // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("VOLC_ACCESSKEY"));

    service.setSecretKey(System.getenv("VOLC_SECRETKEY"));

    CreateSubtitleTranscodePresetBody body =
      new CreateSubtitleTranscodePresetBody();

    // 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。
    body.setVhost("push.example.com");
    // 应用名称,取值与直播流地址中 AppName 字段取值相同。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
    body.setApp("live");
    // 字幕配置的名称,不可以与其他已有的配置名称重复。默认为空,表示由系统将自动分配配置名称。
    body.setPresetName("OriginPreset");
    // 字幕配置的描述信息。
    body.setDescription("subtitleconfig0001");

    // 关联的转码配置后缀,一个字幕配置支持关联多个转码配置后缀。
    List<String> Suffixes = new ArrayList<>();

    Suffixes.add("hd");
    Suffixes.add("bd");
    body.setSuffixes(Suffixes);
    // 预设配置,使用预设配置是系统将自动对字体大小、字幕行数、每行最大字符数和边距参数(MarginVertical 和 MarginHorizontal)进行智能化适配。默认为空,表示不使用预设配置,支持的预设配置如下所示。
    // <li> small :小字幕。 </li>
    // <li> medium:中字幕。 </li>
    // <li> large:大字幕。 </li>
    // note:
    // 使用预设配置时,字幕行数、每行最大字符数、左右边距和底部边距参数不生效,系统将使用预设配置自动进行计算。
    body.setDisplayPreset("small");
    // 字幕展示的行数,同时适用于原文字幕和译文字幕,支持的取值及含义如下所示。
    // <li> 0:(默认值)根据字幕字数自动进行分行展示; </li>
    // <li> 1:每种字幕展示一行; </li>
    // <li> 2:每种字幕展示两行。 </li>
    // note:
    // <li> 使用预设配置时,字幕行数为自动分行展示。 </li>
    // <li> 超出行内字数限制时表示字幕将超过显示范围,此时字幕内容将被截断。 </li>
    body.setMaxRowNumber(0);
    // 设置在 16:9 分辨率场景下,每行字幕展示的最大字符数。
    // note:
    // <li> 使用预设配置时,字幕每行最大字符数设置不生效。 </li>
    // <li> 不使用预设配置时,字幕每行最大字符数必填。 </li>
    // <li> 每个文字、字母、符号或数字均为一个字符。 </li>
    // <li> 当屏幕分辨率改变时,屏幕上显示的每行文字数量会相应调整,以适应新的分辨率,确保文字的显示效果和阅读体验。 </li>
    body.setMaxCharNumber(35);

    // 字幕位置设置,通过设置字幕距离画面左右边距和底部边距来指定字幕位置。
    // note:
    // <li> 使用预设配置时,字幕位置设置不生效。 </li>
    // <li> 不使用预设配置时,字幕位置设置必填。 </li>
    CreateSubtitleTranscodePresetBodyPosition Position =
      new CreateSubtitleTranscodePresetBodyPosition();

    // 字幕距离画面底部的边距与画面高度的占比,使用归一化百分表示,取值范围为 [0,0.5]。
    Position.setMarginVertical(0.5);
    // 字幕距离画面两侧的边距与画面宽度的占比,使用归一化百分表示,取值范围为 [0,0.2]。
    Position.setMarginHorizontal(0.2);
    body.setPosition(Position);

    // 原文字幕展示参数配置。
    CreateSubtitleTranscodePresetBodySourceLanguage SourceLanguage =
      new CreateSubtitleTranscodePresetBodySourceLanguage();

    // 是否展示原文字幕,取值及含义如下所示。
    // <li> true:展示,此时将展示原文和译文双语字幕 </li>
    // <li> false:不展示,此时将只展示译文字幕。 </li>
    // note:
    // 原文字幕语言和译文字幕语言相同时,仅展示译文字幕。
    SourceLanguage.setDisplay(true);
    // 原文字幕的语言,取值及含义如下所示。
    // <li> zh:中英混合; </li>
    // <li> en:英语; </li>
    // <li> ko:韩语; </li>
    // <li> ja:日语。 </li>
    SourceLanguage.setLanguage("zh");
    // 原文字幕的字体,原文字幕字体根据原文字幕语言取值不同而不同,取值及含义如下所示。
    // <li> 当原文字幕的语言是 zh 时,支持以下字体取值。 </li>
    // <li> siyuanheiti:思源黑体; </li>
    // <li> songtixi:宋体细; </li>
    // <li> songticu:宋体粗; </li>
    // <li> heitifan:黑体繁; </li>
    // <li> kaiti:楷体。 </li>
    // <li> 当原文字幕的语言是 en 时,支持以下字体取值。 </li>
    // <li> inter:Inter; </li>
    // <li> roboto:Roboto; </li>
    // <li> opposans:OPPOSans; </li>
    // <li> siyuansongti:思源宋体; </li>
    // <li> montserrat:Montserrat。 </li>
    // <li> 当原文字幕的语言是 ko 和 ja 时,支持 notosans(Noto Sans) 字体。 </li>
    SourceLanguage.setFont("siyuanheiti");
    // 原文字幕的字体颜色,支持以下几种方法进行定义。
    // <li> 支持以 0x 或 # 开头,后面跟着十六进制颜色 RGB 值,再跟着 @+十六进制/百分比来表示的透明度值,来定义字幕的字体颜色。例如,设置 RGB 值为 FF0000,透明度为 5%的颜色时,您可以传入 0xFF0000@0x80、0xFF0000@0.5、#FF0000@0x80 或 #FF0000@0.5。 </li>
    // <li> 支持使用前端框架 FFmpeg 规定的颜色关键字,来定义字幕的字体颜色。例如,AliceBlue 表示 0xF0F8FF、AntiqueWhite 表示 0xFAEBD7、Black 表示 0x000000 等。 </li>
    // note:
    // 查看详细颜色定义方法及更多颜色关键字,请参考 [FFmpeg 的颜色定义语法](https://ffmpeg.org/ffmpeg-utils.html#color-syntax)。
    SourceLanguage.setFontColor("0xFF0000@0.5");

    // 原文字幕的字体描边配置。
    CreateSubtitleTranscodePresetBodySourceLanguageBorder Border =
      new CreateSubtitleTranscodePresetBodySourceLanguageBorder();

    // 描边的宽度,单位为 px。
    Border.setWidth(2);
    // 描边的颜色,支持以下几种方法进行定义。
    // <li> 支持以 0x 或 # 开头,后面跟着十六进制颜色 RGB 值,再跟着 @+十六进制/百分比来表示的透明度值,来定义字幕的字体颜色。例如,设置 RGB 值为 FF0000,透明度为 5%的颜色时,您可以传入 0xFF0000@0x80、0xFF0000@0.5、#FF0000@0x80 或 #FF0000@0.5。 </li>
    // <li> 支持使用前端框架 FFmpeg 规定的颜色关键字,来定义字幕的字体颜色。例如,AliceBlue 表示 0xF0F8FF、AntiqueWhite 表示 0xFAEBD7、Black 表示 0x000000 等。 </li>
    // note:
    // 查看详细颜色定义方法及更多颜色关键字,请参考 [FFmpeg 的颜色定义语法](https://ffmpeg.org/ffmpeg-utils.html#color-syntax)。
    Border.setColor("White");
    SourceLanguage.setBorder(Border);
    body.setSourceLanguage(SourceLanguage);

    // 译文字幕展示参数配置列表,当前最多支持配置一种译文。
    List<CreateSubtitleTranscodePresetBodyTargetLanguageItem> TargetLanguage =
      new ArrayList<>();

    CreateSubtitleTranscodePresetBodyTargetLanguageItem TargetLanguage1 =
      new CreateSubtitleTranscodePresetBodyTargetLanguageItem();

    // 译文字幕的语言,取值及含义如下所示。
    // <li> zh:中英混合; </li>
    // <li> zh-Hant:繁体中文; </li>
    // <li> en:英语; </li>
    // <li> ko:韩语; </li>
    // <li> ja:日语; </li>
    // <li> ar:阿拉伯语; </li>
    // <li> de:德语; </li>
    // <li> es:西班牙语; </li>
    // <li> fr:法语; </li>
    // <li> hi:印地语; </li>
    // <li> pt:葡萄牙语; </li>
    // <li> ru:俄语; </li>
    // <li> vi:越南语; </li>
    // <li> th:泰语。 </li>
    TargetLanguage1.setLanguage("en");
    // 译文字幕的字体,译文字幕字体根据译文字幕语言取值不同而不同,取值及含义如下所示。
    // <li> 当译文字幕的语言是 zh 时,支持以下字体取值。 </li>
    // <li> siyuanheiti:思源黑体; </li>
    // <li> songtixi:宋体细; </li>
    // <li> songticu:宋体粗; </li>
    // <li> heitifan:黑体繁; </li>
    // <li> kaiti:楷体。 </li>
    // <li> 当译文字幕的语言是 zh-Hant 时,支持 siyuanheiti (思源黑体)字体。 </li>
    // <li> 当译文字幕的语言是 en 时,支持以下字体取值。 </li>
    // <li> inter:Inter; </li>
    // <li> roboto:Roboto; </li>
    // <li> opposans:OPPOSans; </li>
    // <li> siyuansongti:思源宋体; </li>
    // <li> montserrat:Montserrat。 </li>
    // <li> 当译文字幕的语言是 ko、ja、ar、de、es、fr、hi、pt、 ru、 vi、 th  时,支持 notosans(Noto Sans) 字体。 </li>
    TargetLanguage1.setFont("inter");
    // 译文字幕的字体颜色,支持以下几种方法进行定义。
    // <li> 支持以 0x 或 # 开头,后面跟着十六进制颜色 RGB 值,再跟着 @+十六进制/百分比来表示的透明度值,来定义字幕的字体颜色。例如,设置 RGB 值为 FF0000,透明度为 5%的颜色时,您可以传入 0xFF0000@0x80、0xFF0000@0.5、#FF0000@0x80 或 #FF0000@0.5。 </li>
    // <li> 支持使用前端框架 FFmpeg 规定的颜色关键字,来定义字幕的字体颜色。例如,AliceBlue 表示 0xF0F8FF、AntiqueWhite 表示 0xFAEBD7、Black 表示 0x000000 等。 </li>
    // note:
    // 查看详细颜色定义方法及更多颜色关键字,请参考 [FFmpeg 的颜色定义语法](https://ffmpeg.org/ffmpeg-utils.html#color-syntax)。
    TargetLanguage1.setFontColor("Black");

    // 译文字幕的字体描边配置。
    CreateSubtitleTranscodePresetBodyTargetLanguageItemBorder Border1 =
      new CreateSubtitleTranscodePresetBodyTargetLanguageItemBorder();

    // 阴影颜色
    Border1.setColor("white");
    TargetLanguage1.setBorder(Border1);
    TargetLanguage.add(TargetLanguage1);
    body.setTargetLanguage(TargetLanguage);

    // 原文字幕识别时使用的热词词库,总长度不超过为 10000 个字符,默认为空。
    List<String> HotWordList = new ArrayList<>();

    HotWordList.add("视频直播");
    HotWordList.add("赛事直播");
    HotWordList.add("智能家居");
    body.setHotWordList(HotWordList);

    // 原文翻译成译文时使用的热词词库,总长度不超过 10000 个字符,默认为空。
    List<String> GlossaryWordList = new ArrayList<>();

    GlossaryWordList.add("ArtificialIntelligence");
    GlossaryWordList.add("MachineLearning");
    GlossaryWordList.add("AI");
    body.setGlossaryWordList(GlossaryWordList);

    try {
      CreateSubtitleTranscodePresetRes resp =
        service.createSubtitleTranscodePreset(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

查询字幕配置列表

您可以调用 ListVhostSubtitleTranscodePreset 接口查询字幕配置列表。详细的参数说明可参见 ListVhostSubtitleTranscodePreset 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;

import com.volcengine.model.live.v20230101.*;
import com.volcengine.service.live.v20230101.LiveService;

public class ListVhostSubtitleTranscodePresetDemo {

  public static void main(String[] args) {
    // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("VOLC_ACCESSKEY"));

    service.setSecretKey(System.getenv("VOLC_SECRETKEY"));

    ListVhostSubtitleTranscodePresetBody body =
      new ListVhostSubtitleTranscodePresetBody();

    // 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。
    body.setVhost("push.example.com");

    try {
      ListVhostSubtitleTranscodePresetRes resp =
        service.listVhostSubtitleTranscodePreset(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

更新字幕配置

您可以调用 UpdateSubtitleTranscodePreset 接口更新字幕配置。详细的参数说明可参见 UpdateSubtitleTranscodePreset 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;

import com.volcengine.model.live.v20230101.*;
import com.volcengine.service.live.v20230101.LiveService;
import java.util.ArrayList;
import java.util.List;

public class UpdateSubtitleTranscodePresetDemo {

  public static void main(String[] args) {
    // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("VOLC_ACCESSKEY"));

    service.setSecretKey(System.getenv("VOLC_SECRETKEY"));

    UpdateSubtitleTranscodePresetBody body =
      new UpdateSubtitleTranscodePresetBody();

    // 域名空间,您可以调用 [ListVhostSubtitleTranscodePreset](https://www.volcengine.com/docs/6469/1288712) 接口,获取待更新字幕配置的 Vhost 取值。
    body.setVhost("push.example.com");
    // 应用名称,您可以调用 [ListVhostSubtitleTranscodePreset](https://www.volcengine.com/docs/6469/1288712) 接口,获取待更新字幕配置的 App 取值。
    body.setApp("live");
    // 截图配置的名称,您可以调用 [ListVhostSubtitleTranscodePreset](https://www.volcengine.com/docs/6469/1288712) 接口,获取待更新字幕配置的 PresetName 取值。
    body.setPresetName("OriginPreset");
    // 字幕配置的描述信息。
    body.setDescription("subtitleconfig0001");

    // 关联转码配置后缀,一个字幕配置支持关联多个转码配置后缀。
    List<String> Suffixes = new ArrayList<>();

    Suffixes.add("hd");
    Suffixes.add("bd");
    body.setSuffixes(Suffixes);
    // 预设配置,使用预设配置是系统将自动对字体大小、字幕行数、每行最大字符数和边距参数(MarginVertical 和 MarginHorizontal)进行智能化适配。默认为空,表示不使用预设配置,支持的预设配置如下所示。
    // <li> small :小字幕。 </li>
    // <li> medium:中字幕。 </li>
    // <li> large:大字幕。 </li>
    // note:
    // 使用预设配置时,字幕行数、每行最大字符数、左右边距和底部边距参数不生效,系统将使用预设配置自动进行计算。
    body.setDisplayPreset("small");
    // 字幕展示的行数,同时适用于原文字幕和译文字幕,支持的取值及含义如下所示。
    // <li> 0:(默认值)根据字幕字数自动进行分行展示; </li>
    // <li> 1:每种字幕展示一行; </li>
    // <li> 2:每种字幕展示两行。 </li>
    // note:
    // <li> 使用预设配置时,字幕行数为自动分行展示。 </li>
    // <li> 超出行内字数限制时表示字幕将超过显示范围,此时字幕内容将被截断。 </li>
    body.setMaxRowNumber(0);
    // 设置在 16:9 分辨率场景下,每行字幕展示的最大字符数。
    // note:
    // <li> 使用预设配置时,字幕每行最大字符数设置不生效。 </li>
    // <li> 不使用预设配置时,字幕每行最大字符数必填。 </li>
    // <li> 每个文字、字母、符号或数字均为一个字符。 </li>
    // <li> 当屏幕分辨率改变时,屏幕上显示的每行文字数量会相应调整,以适应新的分辨率,确保文字的显示效果和阅读体验。 </li>
    body.setMaxCharNumber(35);

    // 字幕位置设置,通过设置字幕距离画面左右边距和底部边距来指定字幕位置。
    // note:
    // <li> 使用预设配置时,字幕位置设置不生效。 </li>
    // <li> 不使用预设配置时,字幕位置设置必填。 </li>
    UpdateSubtitleTranscodePresetBodyPosition Position =
      new UpdateSubtitleTranscodePresetBodyPosition();

    // 字幕距离画面底部的边距与画面高度的占比,使用归一化百分表示,取值范围为 [0,0.5]。
    Position.setMarginVertical(0.5);
    // 字幕距离画面两侧的边距与画面宽度的占比,使用归一化百分表示,取值范围为 [0,0.2]。
    Position.setMarginHorizontal(0.2);
    body.setPosition(Position);

    // 原文字幕展示参数配置。
    UpdateSubtitleTranscodePresetBodySourceLanguage SourceLanguage =
      new UpdateSubtitleTranscodePresetBodySourceLanguage();

    // 是否展示原文字幕,取值及含义如下所示。
    // <li> true:展示,此时将展示原文和译文双语字幕 </li>
    // <li> false:不展示,此时将只展示译文字幕。 </li>
    // note:
    // 原文字幕语言和译文字幕语言相同时,仅展示译文字幕。
    SourceLanguage.setDisplay(true);
    // 原文字幕的语言,取值及含义如下所示。
    // <li> zh:中英混合; </li>
    // <li> en:英语; </li>
    // <li> ko:韩语; </li>
    // <li> ja:日语。 </li>
    SourceLanguage.setLanguage("zh");
    // 原文字幕的字体,原文字幕字体根据原文字幕语言取值不同而不同,取值及含义如下所示。
    // <li> 当原文字幕的语言是 zh 时,支持以下字体取值。 </li>
    // <li> siyuanheiti:思源黑体; </li>
    // <li> songtixi:宋体细; </li>
    // <li> songticu:宋体粗; </li>
    // <li> heitifan:黑体繁; </li>
    // <li> kaiti:楷体。 </li>
    // <li> 当原文字幕的语言是 en 时,支持以下字体取值。 </li>
    // <li> inter:Inter; </li>
    // <li> roboto:Roboto; </li>
    // <li> opposans:OPPOSans; </li>
    // <li> siyuansongti:思源宋体; </li>
    // <li> montserrat:Montserrat。 </li>
    // <li> 当原文字幕的语言是 ko 和 ja 时,支持 notosans(Noto Sans) 字体。 </li>
    SourceLanguage.setFont("simhei");
    // 原文字幕的字体颜色,支持以下几种方法进行定义。
    // <li> 支持以 0x 或 # 开头,后面跟着十六进制颜色 RGB 值,再跟着 @+十六进制/百分比来表示的透明度值,来定义字幕的字体颜色。例如,设置 RGB 值为 FF0000,透明度为 5%的颜色时,您可以传入 0xFF0000@0x80、0xFF0000@0.5、#FF0000@0x80 或 #FF0000@0.5。 </li>
    // <li> 支持使用前端框架 FFmpeg 规定的颜色关键字,来定义字幕的字体颜色。例如,AliceBlue 表示 0xF0F8FF、AntiqueWhite 表示 0xFAEBD7、Black 表示 0x000000 等。 </li>
    // note:
    // 查看详细颜色定义方法及更多颜色关键字,请参考 [FFmpeg 的颜色定义语法](https://ffmpeg.org/ffmpeg-utils.html#color-syntax)。
    SourceLanguage.setFontColor("black");

    // 原文字幕的阴影配置。
    UpdateSubtitleTranscodePresetBodySourceLanguageBorder Border =
      new UpdateSubtitleTranscodePresetBodySourceLanguageBorder();

    // 描边的颜色,支持以下几种方法进行定义。
    // <li> 支持以 0x 或 # 开头,后面跟着十六进制颜色 RGB 值,再跟着 @+十六进制/百分比来表示的透明度值,来定义字幕的字体颜色。例如,设置 RGB 值为 FF0000,透明度为 5%的颜色时,您可以传入 0xFF0000@0x80、0xFF0000@0.5、#FF0000@0x80 或 #FF0000@0.5。 </li>
    // <li> 支持使用前端框架 FFmpeg 规定的颜色关键字,来定义字幕的字体颜色。例如,AliceBlue 表示 0xF0F8FF、AntiqueWhite 表示 0xFAEBD7、Black 表示 0x000000 等。 </li>
    // note:
    // 查看详细颜色定义方法及更多颜色关键字,请参考 [FFmpeg 的颜色定义语法](https://ffmpeg.org/ffmpeg-utils.html#color-syntax)。
    Border.setColor("white");
    SourceLanguage.setBorder(Border);
    body.setSourceLanguage(SourceLanguage);

    // 译文字幕展示参数配置列表,当前最多支持配置一种译文。
    List<UpdateSubtitleTranscodePresetBodyTargetLanguageItem> TargetLanguage =
      new ArrayList<>();

    UpdateSubtitleTranscodePresetBodyTargetLanguageItem TargetLanguage1 =
      new UpdateSubtitleTranscodePresetBodyTargetLanguageItem();

    // 译文字幕的语言,取值及含义如下所示。
    // <li> zh:中英混合; </li>
    // <li> zh-Hant:繁体中文; </li>
    // <li> en:英语; </li>
    // <li> ko:韩语; </li>
    // <li> ja:日语; </li>
    // <li> ar:阿拉伯语; </li>
    // <li> de:德语; </li>
    // <li> es:西班牙语; </li>
    // <li> fr:法语; </li>
    // <li> hi:印地语; </li>
    // <li> pt:葡萄牙语; </li>
    // <li> ru:俄语; </li>
    // <li> vi:越南语; </li>
    // <li> th:泰语。 </li>
    TargetLanguage1.setLanguage("en");
    // 译文字幕的字体,译文字幕字体根据译文字幕语言取值不同而不同,取值及含义如下所示。
    // <li> 当译文字幕的语言是 zh 时,支持以下字体取值。 </li>
    // <li> siyuanheiti:思源黑体; </li>
    // <li> songtixi:宋体细; </li>
    // <li> songticu:宋体粗; </li>
    // <li> heitifan:黑体繁; </li>
    // <li> kaiti:楷体。 </li>
    // <li> 当译文字幕的语言是 zh-Hant 时,支持 siyuanheiti (思源黑体)字体。 </li>
    // <li> 当译文字幕的语言是 en 时,支持以下字体取值。 </li>
    // <li> inter:Inter; </li>
    // <li> roboto:Roboto; </li>
    // <li> opposans:OPPOSans; </li>
    // <li> siyuansongti:思源宋体; </li>
    // <li> montserrat:Montserrat。 </li>
    // <li> 当译文字幕的语言是 ko、ja、ar、de、es、fr、hi、pt、 ru、 vi、 th  时,支持 notosans(Noto Sans) 字体。 </li>
    TargetLanguage1.setFont("simhei");
    // 译文字幕的字体颜色,支持以下几种方法进行定义。
    // <li> 支持以 0x 或 # 开头,后面跟着十六进制颜色 RGB 值,再跟着 @+十六进制/百分比来表示的透明度值,来定义字幕的字体颜色。例如,设置 RGB 值为 FF0000,透明度为 5%的颜色时,您可以传入 0xFF0000@0x80、0xFF0000@0.5、#FF0000@0x80 或 #FF0000@0.5。 </li>
    // <li> 支持使用前端框架 FFmpeg 规定的颜色关键字,来定义字幕的字体颜色。例如,AliceBlue 表示 0xF0F8FF、AntiqueWhite 表示 0xFAEBD7、Black 表示 0x000000 等。 </li>
    // note:
    // 查看详细颜色定义方法及更多颜色关键字,请参考 [FFmpeg 的颜色定义语法](https://ffmpeg.org/ffmpeg-utils.html#color-syntax)。
    TargetLanguage1.setFontColor("black");

    // 译文字幕的字体描边配置。
    UpdateSubtitleTranscodePresetBodyTargetLanguageItemBorder Border1 =
      new UpdateSubtitleTranscodePresetBodyTargetLanguageItemBorder();

    Border1.setColor("white");
    TargetLanguage1.setBorder(Border1);
    TargetLanguage.add(TargetLanguage1);
    body.setTargetLanguage(TargetLanguage);

    // 原文字幕识别时使用的热词词库,总长度不超过为 10000 个字符,默认为空。
    List<String> HotWordList = new ArrayList<>();

    HotWordList.add("视频直播");
    HotWordList.add("赛事直播");
    HotWordList.add("智能家居");
    body.setHotWordList(HotWordList);

    // 原文翻译成译文时使用的热词词库,总长度不超过 10000 个字符,默认为空。
    List<String> GlossaryWordList = new ArrayList<>();

    GlossaryWordList.add("ArtificialIntelligence");
    GlossaryWordList.add("MachineLearning");
    GlossaryWordList.add("AI");
    body.setGlossaryWordList(GlossaryWordList);

    try {
      UpdateSubtitleTranscodePresetRes resp =
        service.updateSubtitleTranscodePreset(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

删除字幕配置

您可以调用 DeleteSubtitleTranscodePreset 接口删除字幕配置。详细的参数说明可参见 DeleteSubtitleTranscodePreset 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;

import com.volcengine.model.live.v20230101.*;
import com.volcengine.service.live.v20230101.LiveService;

public class DeleteSubtitleTranscodePresetDemo {

  public static void main(String[] args) {
    // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("VOLC_ACCESSKEY"));

    service.setSecretKey(System.getenv("VOLC_SECRETKEY"));

    DeleteSubtitleTranscodePresetBody body =
      new DeleteSubtitleTranscodePresetBody();

    // 应用名称,您可以调用 [ListVhostSubtitleTranscodePreset](https://www.volcengine.com/docs/6469/1288712) 接口,获取待删除字幕配置的 App 取值。
    body.setApp("live");
    // 域名空间,您可以调用 [ListVhostSubtitleTranscodePreset](https://www.volcengine.com/docs/6469/1288712) 接口,获取待删除字幕配置的 Vhost 取值。
    body.setVhost("push.example.com");
    // 截图配置的名称,您可以调用 [ListVhostSubtitleTranscodePreset](https://www.volcengine.com/docs/6469/1288712) 接口,获取待删除字幕配置的 PresetName 取值。
    body.setPresetName("testPreset");

    try {
      DeleteSubtitleTranscodePresetRes resp =
        service.deleteSubtitleTranscodePreset(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

最近更新时间:2026.06.15 20:54:17
这个页面对您有帮助吗?
有用
有用
无用
无用