You need to enable JavaScript to run this app.
文档中心
文档控制台
免费开始使用
视频直播

视频直播

复制全文
下载 pdf
Python SDK
加密管理
复制全文
下载 pdf
加密管理

阅读本文,您可以获取 Python SDK 加密管理的接口调用示例,实现快速开发。

说明

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

调用说明

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

前提条件

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

调用示例

本节为您介绍加密管理相关接口的功能和调用示例。

更新 DRM 证书管理平台访问密钥和 FairPlay 证书

您可以调用 UpdateEncryptDRM 接口更新 DRM 证书管理平台访问密钥和 FairPlay 证书。详细的参数说明可参见 UpdateEncryptDRM 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # DRM 证书管理平台 API 访问密钥,获取方法请参见[最佳实践-直播 DRM 加密](https://www.volcengine.com/docs/6469/1219836#在-intertrust-平台创建访问密钥)。
        "APIKey": "12312,162632123abfc344321234212344323432",
        # 自定义 FairPlay 证书名称,支持由小写字母(a - z)、数字(0 - 9)和短横线(-)组成,最小长度为 2个字符,最大长度为 128 个字符。FairPlay 证书相关参数的获取方法请参见[最佳实践-直播 DRM 加密](https://www.volcengine.com/docs/6469/1219836#在-apple-官网获取-fairplay-证书)。
        "CertificateName": "test-drm-cert",
        # 申请 FairPlay 证书时创建的私钥文件内容。
        "PrivateKeyFile": "asdasdasdasd1w1wd1wd",
        # 申请 FairPlay 证书时创建的私钥文件名称。
        "PrivateKeyFileName": "pri.pem",
        # FairPlay 证书文件内容。
        "CertificateFile": "asd13dsfdasdasd1ewd",
        # FairPlay 证书文件名称。
        "CertificateFileName": "certificate.cer",
        # 申请 FairPlay 证书过程中 Apple 返回的 ASk(Application Secret Key)字符串。
        "ApplicationSecretKey": "NODIW347219BIUDW93",
        # 申请 FairPlay 证书时创建的私钥文件密钥。
        "PrivateKey": "2023",
    }

    resp = service.update_encrypt_drm(body)
    print(resp)

查看 DRM 证书管理平台访问密钥和 FairPlay 证书

您可以调用 DescribeEncryptDRM 接口查看 DRM 证书管理平台访问密钥和 FairPlay 证书。详细的参数说明可参见 DescribeEncryptDRM 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])

    resp = service.describe_encrypt_drm()
    print(resp)

添加或更新加密配置

您可以调用 BindEncryptDRM 接口添加或更新加密配置。详细的参数说明可参见 BindEncryptDRM 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。
        "Vhost": "push.example.com",
        # 应用名称,取值与直播流地址中 AppName 字段取值相同。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
        "App": "live",
        # 开启转码流加密时待加密的转码流对应的转码流后缀配置。您可以调用[查询转码配置列表](https://www.volcengine.com/docs/6469/1126853)接口或在视频直播控制台的[转码配置](https://console.volcengine.com/live/main/application/transcode)页面,查看转码配置的转码流后缀。
        "EncryptTranscodeSuffix": ["hd"],
        # 加密类型,支持的取值及含义如下所示。
        # <li> FairPlay:使用 FairPlay 技术的商业 DRM 加密; </li>
        # <li> Widevine:使用 Widevine 技术的商业 DRM 加密; </li>
        # <li> PlayReady:使用 PlayReady 技术的商业 DRM 加密; </li>
        # <li> ClearKey:HLS 标准加密。 </li>
        # note:
        # DRM 加密与 HLS 标准加密不可同时配置。
        "DRMSystems": ["FairPlay", "Widevine"],
        # 是否开启源流加密,取值及含义如下所示。
        # <li> true:开启; </li>
        # <li> fasle:不开启。 </li>
        # note:
        # 源流和转码流至少有一个需要开启录制。
        "EncryptOriginStream": True,
        # 是否开启转码流加密,取值及含义如下所示。
        # <li> true:开启; </li>
        # <li> fasle:不开启。 </li>
        # note:
        # 源流和转码流至少有一个需要开启录制。
        "EncryptTranscodeStream": True,
    }

    resp = service.bind_encrypt_drm(body)
    print(resp)

查询加密配置

您可以调用 ListBindEncryptDRM 接口查询加密配置。详细的参数说明可参见 ListBindEncryptDRM 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。
        "Vhost": "push.example.com",
        # 应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示查询符合域名空间取值的所有的 DRM 加密配置。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
        "App": "live",
    }

    resp = service.list_bind_encrypt_drm(body)
    print(resp)

删除加密配置

您可以调用 UnBindEncryptDRM 接口删除加密配置。详细的参数说明可参见 UnBindEncryptDRM 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。
        "Vhost": "push.example.com",
        # 应用名称,取值与直播流地址中 AppName 字段取值相同。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
        "App": "live",
    }

    resp = service.un_bind_encrypt_drm(body)
    print(resp)

获取 DRM 授权许可文件

您可以调用 DescribeLicenseDRM 接口获取 DRM 授权许可文件。详细的参数说明可参见 DescribeLicenseDRM 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    query = {
        # 拉取加密流时使用的拉流域名所在的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的拉流域名所属的域名空间。
        "Vhost": "drm.example.com",
        # 拉流域名,您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的拉流域名。
        "Domain": "pull.example.com",
        # 应用名称,取值与直播流地址的 AppName 字段相同,由大写小字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
        "App": "live",
        # 流名称,取值与直播流地址中 StreamName 字段取值相同。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 100 个字符。
        "StreamName": "stream-drm",
        # DRM 加密的类型,取值及含义如下所示。
        # <li> fp:FairPlay 加密; </li>
        # <li> wv:Widevine 加密; </li>
        # <li> pr:PlayReady 加密。 </li>
        "DRMType": "fp",
    }

    resp = service.describe_license_drm(query)
    print(resp)

获取 FairPlay 证书文件

您可以调用 DescribeCertDRM 接口获取 FairPlay 证书文件。详细的参数说明可参见 DescribeCertDRM 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    query = {
        # 域名空间,即直播流地址的域名(Domain)所属的域名空间(Vhost)。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console.volcengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。
        "Vhost": "drm.example.com",
        # 应用名称,取值与直播流地址中 AppName 字段取值相同。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
        "App": "live",
    }

    resp = service.describe_cert_drm(query)
    print(resp)

更新 HLS 密钥获取配置

您可以调用 UpdateEncryptHLS 接口更新 HLS 密钥获取配置。详细的参数说明可参见 UpdateEncryptHLS 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 客户自建密钥管理服务后,客户端向密钥管理服务请求获取密钥的地址。
        "URL": "http://example.kms.com/get_key?",
        # 视频直播服务端生成密钥的更新周期,单位为秒,取值范围为 [60,604800]。
        "CycleTime": "60",
    }

    resp = service.update_encrypt_hls(body)
    print(resp)

查询 HLS 密钥获取配置

您可以调用 DescribeEncryptHLS 接口查询 HLS 密钥获取配置。详细的参数说明可参见 DescribeEncryptHLS 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])

    resp = service.describe_encrypt_hls()
    print(resp)

查询 HLS 加密密钥

您可以调用 GetHLSEncryptDataKey 接口查询 HLS 加密密钥。详细的参数说明可参见 GetHLSEncryptDataKey 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    query = {
        # 视频直播服务端生成的 M3U8 文件中写入的每个 TS 分片的密钥 ID。
        "KeyID": "08e765a4da*****c4028755c3c",
    }

    resp = service.get_hls_encrypt_data_key(query)
    print(resp)

最近更新时间:2025.02.21 18:04:08
这个页面对您有帮助吗?
有用
有用
无用
无用