tencent cloud

云点播

动态与公告
产品动态
公告
产品简介
产品概述
产品特性
产品功能
产品优势
应用场景
解决方案
专业版
云点播专业版简介
快速入门
控制台指南
开发指南
购买指南
计费概述
计费方式
购买指引
账单查询
续费说明
欠费说明
退费说明
快速入门
控制台指南
控制台介绍
服务概览
应用管理
媒体管理
资源包管理
License 管理
实时日志分析
实践教程
媒体上传
如何将点播的媒体文件进行智能降冷
媒体处理
分发播放
如何接收事件通知
如何进行源站迁移
直播录制
如何进行自定义源站回源
直播精彩剪辑固化至云点播 VOD 指引
如何使用 EdgeOne 分发云点播内容
开发指南
媒体上传
媒体加工处理
媒体 AI
事件通知
媒体分发播放
媒体加密与版权保护
播放频道
访问管理
下载媒体文件
应用体系
错误码
播放器 SDK 文档
概述
基本概念
产品功能
Demo 体验
免费测试
购买指南
SDK 下载
License 指引
播放器教程
含 UI 集成方案
无 UI 集成方案
高级功能
API 文档
第三方播放器插件
Player SDK Policy
服务端 API 文档
History
Introduction
API Category
Other APIs
Media Processing APIs
Task Management APIs
Media Upload APIs
Media Management APIs
Event Notification Relevant API
Media Categorization APIs
Domain Name Management APIs
Distribution APIs
AI-based Sample Management APIs
Region Management APIs
Data Statistics APIs
Carousel-Related APIs
Just In Time Transcode APIs
No longer recommended APIs
Making API Requests
AI-based image processing APIs
Parameter Template APIs
Task Flow APIs
Data Types
Error Codes
Video on Demand API 2024-07-18
常见问题
移动端播放问题
费用相关问题
视频上传问题
视频发布问题
视频播放问题
Web 端播放问题
全屏播放问题
数据统计问题
访问管理相关问题
媒资降冷问题
相关协议
Service Level Agreement
VOD 政策
隐私政策
数据处理和安全协议
联系我们
词汇表

存储访问方式

PDF
聚焦模式
字号
最后更新时间: 2025-03-20 16:47:03
本文主要介绍专业版应用支持的存储访问方式和这些访问方式的使用方法。
说明:
控制台访问方式请参见 控制台指南,腾讯云 API3.0 访问方式请参见 服务端 API 文档,这两种方式本文不再重复介绍。

访问方式

专业版应用支持的存储访问方式如下:
类型
访问方式
访问域名
作用
预置域名
存储桶公网域名
[BucketId].vodpro.[存储地域].eovod.com
用于公网对媒体文件进行增删改查。
存储桶内网域名
[BucketId].vodsrc-internal.[存储地域].eovod.com
用于在腾讯云内网同地域对媒体文件进行增删查改,支持下载且不产生流量费用。
自定义域名
EdgeOne 加速分发域名
客户自定义
用于媒体文件的分发播放。

使用方法

存储桶公网域名

专业版应用为每个存储桶预置了一个公网域名,客户可使用该域名对存储桶内的媒体文件进行增删改查。具体支持的操作清单请参见文档 支持的存储操作
注意:
存储桶公网域名有一定的生效时间,一般在存储桶创建后 30 ~ 120 分钟生效。
存储桶公网域名不支持下载文件,如需下载或浏览文件内容请使用 Edgeone 加速域名

准备工作

1. 创建应用和存储桶。
云点播控制台 创建好专业版应用和存储桶,具体操作步骤参见 快速入门创建存储桶 文档。
2. 获取密钥对。
从专业版应用的密钥管理中,获取密钥对AccessKeyIdSecretAccessKey,具体操作步骤参见 密钥管理 文档。

使用 S3 SDK 访问存储桶

下面介绍在常用的编程语言中,如何进行适配以访问专业版应用的存储桶。
假设存储地域为 ap-guangzhou,存储桶 ID 为 bucketid1,常用语言初始化 S3 客户端并获取对象元数据的代码实现如下所示:
GO
Java
C++
Python
import (
"context"
"errors"
"fmt"
"net/url"
"os"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
smep "github.com/aws/smithy-go/endpoints"
"github.com/aws/smithy-go/logging"
)

type customEndpointResolverV2 struct {
}

// ResolveEndpoint 自定义接入点
func (r *customEndpointResolverV2) ResolveEndpoint(ctx context.Context,
params s3.EndpointParameters) (smep.Endpoint, error) {
if params.Bucket == nil || params.Region == nil {
return smep.Endpoint{}, errors.New("invalid endpoint param")
}
return smep.Endpoint{
URI: url.URL{
Scheme: "https",
Host: fmt.Sprintf("%s.vodpro.%s.eovod.com", *params.Bucket, *params.Region),
},
}, nil
}

func main() {
// 初始化客户端
s3cli := s3.New(s3.Options{
Credentials: credentials.NewStaticCredentialsProvider(
"AccessKeyId", // 填入密钥对中的 AccessKeyId
"SecretAccessKey", // 填入密钥对中的 SecretAccessKey
""),
EndpointResolverV2: new(customEndpointResolverV2), // 自定义访问域名
UsePathStyle: false, // 请求禁用 path style
Logger: logging.NewStandardLogger(os.Stdout), // 日志打印到标准输出流
ClientLogMode: aws.LogRequest | aws.LogResponse, // 打印请求头和响应头
Region: "ap-guangzhou", // 存储地域
})
// 获取媒体文件的元数据
_, _ = s3cli.HeadObject(context.TODO(), &s3.HeadObjectInput{
Bucket: aws.String("bucketid1"), // Bucket 设置为点播专业版应用中的存储桶 ID
Key: aws.String("a/b/c.jpeg"), // 媒体文件在存储桶中的路径
})
}
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectResponse;

import java.net.URI;

public class Main {
// 自定义端点解析器
public static void main(String[] args) {
// 初始化 S3 客户端
S3Client s3Client = S3Client.builder()
.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(
"AccessKeyId", // 填入密钥对中的 AccessKeyId
"SecretAccessKey" // 填入密钥对中的 SecretAccessKey
)))
.endpointOverride(URI.create("https://vodpro.ap-guangzhou.eovod.com"))
.region(Region.of("ap-guangzhou"))
.build();

// 获取媒体文件的元数据
try {
HeadObjectRequest headObjectRequest = HeadObjectRequest.builder()
.bucket("bucketid1") // Bucket 设置为点播专业版应用中的存储桶 ID
.key("a/b/c.jpeg") // 媒体文件在存储桶中的路径
.build();
HeadObjectResponse headObjectResponse = s3Client.headObject(headObjectRequest);
System.out.println("Content Length: " + headObjectResponse.contentLength());
} catch (Exception e) {
e.printStackTrace();
} finally {
s3Client.close();
}
}
}
#include <aws/core/Aws.h>
#include <aws/core/auth/AWSCredentials.h>
#include <aws/s3/S3Client.h>
#include <aws/s3/model/HeadObjectRequest.h>
#include <iostream>
#include <string>

int main() {
// 初始化 AWS SDK
const Aws::SDKOptions options;
InitAPI(options);
// 自定义访问域名
Aws::Client::ClientConfiguration clientConfig;
clientConfig.scheme = Aws::Http::Scheme::HTTPS;
clientConfig.endpointOverride = "vodpro.ap-guangzhou.eovod.com";
// 创建 S3 客户端
const Aws::S3::S3Client s3Client(
Aws::Auth::AWSCredentials(
"AccessKeyId", // 填入密钥对中的 AccessKeyId
"SecretAccessKey" // 填入密钥对中的 SecretAccessKey
),
nullptr, clientConfig);
// 创建 HeadObject 请求
Aws::S3::Model::HeadObjectRequest request;
request.SetBucket("bucketid1"); // Bucket 设置为点播专业版应用中的存储桶 ID
request.SetKey("a/b/c.jpeg"); // 媒体文件在存储桶中的路径
// 发送请求
auto outcome = s3Client.HeadObject(request);
if (outcome.IsSuccess()) {
std::cout << "Head object succeeded!" << std::endl;
const auto &object = outcome.GetResult();
std::cout << "Content Length: " << object.GetContentLength() << std::endl;
} else {
const auto error = outcome.GetError();
std::cout << "Error: " << error.GetMessage() << std::endl;
}
// 清理 AWS SDK
Aws::ShutdownAPI(options);
return 0;
}
import boto3
from botocore.config import Config
from botocore.exceptions import ClientError


# 创建 S3 客户端
s3_client = boto3.client(
's3',
aws_access_key_id='AccessKeyId', # 填入密钥对中的 AccessKeyId
aws_secret_access_key='SecretAccessKey', # 填入密钥对中的 SecretAccessKey
endpoint_url='https://vodpro.ap-guangzhou.eovod.com', # 自定义访问域名
config=Config(s3={'addressing_style': 'virtual'}), # 使用 virtual hosted-style
)

try:
# 获取媒体文件的元数据
response = s3_client.head_object(
Bucket="bucketid1", # Bucket 设置为点播专业版应用中的存储桶 ID
Key="a/b/c.jpeg" # 媒体文件在存储桶中的路径
)
print(response)
except ClientError as e:
print(f"Error: {e}")

存储桶内网域名

专业版应用为每个存储桶预置了一个内网域名,客户可使用该域名在腾讯云相同地域的服务器通过内网对存储桶内的媒体文件进行增删改查,支持文件下载且不会产生流量费用,具体支持的操作清单请参见 支持的存储操作
注意:
存储桶内网域名有一定的生效时间,一般在存储桶创建后 30 分钟生效。
内网域名必须在与存储桶相同地域的腾讯云服务器上才能访问,否则会得到 404 响应码。可以尝试在服务器上使用 nslookups等指令进行域名解析,若得到形如 10.*.*.*100.*.*.*169.254.*.*等形式的 IP,则一般可以进行内网访问。

准备工作

1. 创建应用和存储桶。
云点播控制台 创建好专业版应用和存储桶,具体操作步骤参见 快速入门创建存储桶 文档。
2. 获取密钥对。
从专业版应用的密钥管理中,获取密钥对AccessKeyIdSecretAccessKey,具体操作步骤参见 密钥管理 文档。
3. 准备服务器。
准备好与存储桶相同地域的腾讯云服务器,如 云服务器轻量应用服务器容器服务 等。

使用 S3 SDK 访问存储桶

下面介绍在常用的编程语言中,如何进行适配以通过内网访问专业版应用的存储桶。
假设存储地域为ap-guangzhou,存储桶 ID 为bucketid1,常用语言初始化 S3 客户端并获取对象元数据的代码实现如下所示:
GO
Java
C++
Python
import (
"context"
"errors"
"fmt"
"net/url"
"os"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
smep "github.com/aws/smithy-go/endpoints"
"github.com/aws/smithy-go/logging"
)

type customEndpointResolverV2 struct {
}

// ResolveEndpoint 自定义接入点
func (r *customEndpointResolverV2) ResolveEndpoint(ctx context.Context,
params s3.EndpointParameters) (smep.Endpoint, error) {
if params.Bucket == nil || params.Region == nil {
return smep.Endpoint{}, errors.New("invalid endpoint param")
}
return smep.Endpoint{
URI: url.URL{
Scheme: "https",
Host: fmt.Sprintf("%s.vodsrc-internal.%s.eovod.com", *params.Bucket, *params.Region),
},
}, nil
}

func main() {
// 初始化客户端
s3cli := s3.New(s3.Options{
Credentials: credentials.NewStaticCredentialsProvider(
"AccessKeyId", // 填入密钥对中的 AccessKeyId
"SecretAccessKey", // 填入密钥对中的 SecretAccessKey
""),
EndpointResolverV2: new(customEndpointResolverV2), // 自定义访问域名
UsePathStyle: false, // 请求禁用 path style
Logger: logging.NewStandardLogger(os.Stdout), // 日志打印到标准输出流
ClientLogMode: aws.LogRequest | aws.LogResponse, // 打印请求头和响应头
Region: "ap-guangzhou", // 存储地域
})
// 获取媒体文件的元数据
_, _ = s3cli.HeadObject(context.TODO(), &s3.HeadObjectInput{
Bucket: aws.String("bucketid1"), // Bucket 设置为点播专业版应用中的存储桶 ID
Key: aws.String("a/b/c.jpeg"), // 媒体文件在存储桶中的路径
})
}
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectResponse;

import java.net.URI;

public class Main {
// 自定义端点解析器
public static void main(String[] args) {
// 初始化 S3 客户端
S3Client s3Client = S3Client.builder()
.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(
"AccessKeyId", // 填入密钥对中的 AccessKeyId
"SecretAccessKey" // 填入密钥对中的 SecretAccessKey
)))
.endpointOverride(URI.create("https://vodsrc-internal.ap-guangzhou.eovod.com"))
.build();

// 获取媒体文件的元数据
try {
HeadObjectRequest headObjectRequest = HeadObjectRequest.builder()
.bucket("bucketid1") // Bucket 设置为点播专业版应用中的存储桶 ID
.key("a/b/c.jpeg") // 媒体文件在存储桶中的路径
.build();
HeadObjectResponse headObjectResponse = s3Client.headObject(headObjectRequest);
System.out.println("Content Length: " + headObjectResponse.contentLength());
} catch (Exception e) {
e.printStackTrace();
} finally {
s3Client.close();
}
}
}
#include <aws/core/Aws.h>
#include <aws/core/auth/AWSCredentials.h>
#include <aws/s3/S3Client.h>
#include <aws/s3/model/HeadObjectRequest.h>
#include <iostream>
#include <string>

int main() {
// 初始化 AWS SDK
const Aws::SDKOptions options;
InitAPI(options);
// 自定义访问域名
Aws::Client::ClientConfiguration clientConfig;
clientConfig.scheme = Aws::Http::Scheme::HTTPS;
clientConfig.endpointOverride = "vodsrc-internal.ap-guangzhou.eovod.com";
// 创建 S3 客户端
const Aws::S3::S3Client s3Client(
Aws::Auth::AWSCredentials(
"AccessKeyId", // 填入密钥对中的 AccessKeyId
"SecretAccessKey" // 填入密钥对中的 SecretAccessKey
),
nullptr, clientConfig);
// 创建 HeadObject 请求
Aws::S3::Model::HeadObjectRequest request;
request.SetBucket("bucketid1"); // Bucket 设置为点播专业版应用中的存储桶 ID
request.SetKey("a/b/c.jpeg"); // 媒体文件在存储桶中的路径
// 发送请求
auto outcome = s3Client.HeadObject(request);
if (outcome.IsSuccess()) {
std::cout << "Head object succeeded!" << std::endl;
const auto &object = outcome.GetResult();
std::cout << "Content Length: " << object.GetContentLength() << std::endl;
} else {
const auto error = outcome.GetError();
std::cout << "Error: " << error.GetMessage() << std::endl;
}
// 清理 AWS SDK
Aws::ShutdownAPI(options);
return 0;
}
import boto3
from botocore.config import Config
from botocore.exceptions import ClientError


# 创建 S3 客户端
s3_client = boto3.client(
's3',
aws_access_key_id='AccessKeyId', # 填入密钥对中的 AccessKeyId
aws_secret_access_key='SecretAccessKey', # 填入密钥对中的 SecretAccessKey
endpoint_url='https://vodsrc-internal.ap-guangzhou.eovod.com', # 自定义访问域名
)

try:
# 获取媒体文件的元数据
response = s3_client.head_object(
Bucket="bucketid1", # Bucket 设置为点播专业版应用中的存储桶 ID
Key="a/b/c.jpeg" # 媒体文件在存储桶中的路径
)
print(response)
except ClientError as e:
print(f"Error: {e}")


EdgeOne 加速域名

专业版应用支持使用腾讯云 EdgeOne 进行媒体内容的加速分发。客户可以在 EdgeOne 中将域名源站配置为云点播专业版应用,即可使用自定义域名通过 EdgeOne 强大的安全加速网络,迅捷地下载或者播放媒体文件。
在 EdgeOne 中为专业版应用添加加速域名的操作方法请参见 EdgeOne 文档 VOD 源站指引添加加速域名

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈