Skip to content

Commit 2b8ff21

Browse files
authored
Merge pull request #185 from victorwjwu/master
支持同步截图和媒体信息接口
2 parents ac9f01c + ee015f1 commit 2b8ff21

File tree

3 files changed

+324
-152
lines changed

3 files changed

+324
-152
lines changed

demo/ci_media.py

Lines changed: 174 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -1,151 +1,174 @@
1-
# -*- coding=utf-8
2-
from qcloud_cos import CosConfig
3-
from qcloud_cos import CosS3Client
4-
from qcloud_cos.cos_comm import CiDetectType
5-
6-
import sys
7-
import logging
8-
import os
9-
import time
10-
11-
# 腾讯云COSV5Python SDK, 目前可以支持Python2.6与Python2.7以及Python3.x
12-
13-
# https://cloud.tencent.com/document/product/436/48987
14-
15-
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
16-
17-
# 设置用户属性, 包括secret_id, secret_key, region
18-
# appid已在配置中移除,请在参数Bucket中带上appid。Bucket由bucketname-appid组成
19-
# 这里秘钥是从环境变量取得,如自己测试可改成自己对应的秘钥
20-
secret_id = os.environ["SECRETID"] # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
21-
secret_key = os.environ["SECRETKEY"] # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
22-
region = 'ap-chongqing' # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
23-
# COS支持的所有region列表参见https://www.qcloud.com/document/product/436/6224
24-
token = None # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048
25-
26-
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme='https') # 获取配置对象
27-
client = CosS3Client(config)
28-
29-
30-
bucket_name = 'demo-1253960454'
31-
32-
33-
def ci_get_media_queue():
34-
# 查询媒体队列信息
35-
response = client.ci_get_media_queue(
36-
Bucket=bucket_name
37-
)
38-
print(response)
39-
return response
40-
41-
def ci_create_media_transcode_watermark_jobs():
42-
# 创建转码任务
43-
body = {
44-
'Input':{
45-
'Object':'117374C.mp4'
46-
},
47-
'QueueId': 'pe943803693bd42d1a3105804ddaee525',
48-
'Tag': 'Transcode',
49-
'Operation': {
50-
'Output':{'Bucket':bucket_name, 'Region':region, 'Object':'117374C_output.mp4'},
51-
'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5',
52-
# "WatermarkTemplateId": ["", ""],
53-
'Watermark': [
54-
{
55-
'Type':'Text',
56-
'Pos':'TopRight',
57-
'LocMode':'Absolute',
58-
'Dx':'64',
59-
'Dy': '64',
60-
'StartTime':'0',
61-
'EndTime':'1000.5',
62-
'Text': {
63-
'Text': '水印内容',
64-
'FontSize': '90',
65-
'FontType': 'simfang.ttf',
66-
'FontColor': '0xFFEEFF',
67-
'Transparency': '100',
68-
},
69-
},
70-
{
71-
'Type':'Image',
72-
'Pos':'TopLeft',
73-
'LocMode':'Absolute',
74-
'Dx':'100',
75-
'Dy': '100',
76-
'StartTime':'0',
77-
'EndTime':'1000.5',
78-
'Image': {
79-
'Url': 'http://'+bucket_name+".cos."+region+".myqcloud.com/1215shuiyin.jpg",
80-
'Mode': 'Fixed',
81-
'Width': '128',
82-
'Height': '128',
83-
'Transparency': '100',
84-
},
85-
}
86-
]
87-
}
88-
}
89-
# dict中数组类型的标签,都需要特殊处理
90-
lst = [
91-
'<Watermark>',
92-
'<WatermarkTemplateId>',
93-
'</WatermarkTemplateId>',
94-
'</Watermark>'
95-
]
96-
response = client.ci_create_media_jobs(
97-
Bucket=bucket_name,
98-
Jobs=body,
99-
Lst=lst,
100-
ContentType='application/xml'
101-
)
102-
print(response)
103-
return response
104-
105-
def ci_create_media_transcode_jobs():
106-
# 创建转码任务
107-
body = {
108-
'Input':{
109-
'Object':'117374C.mp4'
110-
},
111-
'QueueId': 'pe943803693bd42d1a3105804ddaee525',
112-
'Tag': 'Transcode',
113-
'Operation': {
114-
'Output':{'Bucket':bucket_name, 'Region':region, 'Object':'117374C_output.mp4'},
115-
'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5'
116-
}
117-
}
118-
response = client.ci_create_media_jobs(
119-
Bucket=bucket_name,
120-
Jobs=body,
121-
Lst={},
122-
ContentType='application/xml'
123-
)
124-
print(response)
125-
return response
126-
127-
def ci_list_media_transcode_jobs():
128-
# 转码任务
129-
response = client.ci_list_media_jobs(
130-
Bucket=bucket_name,
131-
QueueId='pe943803693bd42d1a3105804ddaee525',
132-
Tag='Transcode',
133-
ContentType='application/xml'
134-
)
135-
print(response)
136-
return response
137-
138-
def ci_get_media_transcode_jobs():
139-
# 转码任务
140-
response = client.ci_get_media_jobs(
141-
Bucket=bucket_name,
142-
JobIDs='j3feb7ccc28fc11eca50b6f68c211dc6c,jb83bcc5a28fb11ecae48a1f29371c5f8',
143-
ContentType='application/xml'
144-
)
145-
print(response)
146-
return response
147-
148-
if __name__ == "__main__":
149-
#ci_get_media_queue()
150-
ci_get_media_transcode_jobs()
151-
#ci_create_media_transcode_jobs()
1+
# -*- coding=utf-8
2+
from qcloud_cos import CosConfig
3+
from qcloud_cos import CosS3Client
4+
from qcloud_cos.cos_comm import CiDetectType
5+
6+
import sys
7+
import logging
8+
import os
9+
import time
10+
11+
# 腾讯云COSV5Python SDK, 目前可以支持Python2.6与Python2.7以及Python3.x
12+
13+
# https://cloud.tencent.com/document/product/436/48987
14+
15+
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
16+
17+
# 设置用户属性, 包括secret_id, secret_key, region
18+
# appid已在配置中移除,请在参数Bucket中带上appid。Bucket由bucketname-appid组成
19+
# 这里秘钥是从环境变量取得,如自己测试可改成自己对应的秘钥
20+
secret_id = os.environ["SECRETID"] # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
21+
secret_key = os.environ["SECRETKEY"] # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
22+
region = 'ap-chongqing' # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
23+
# COS支持的所有region列表参见https://www.qcloud.com/document/product/436/6224
24+
token = None # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048
25+
26+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme='https') # 获取配置对象
27+
client = CosS3Client(config)
28+
29+
30+
bucket_name = 'demo-1253960454'
31+
32+
33+
def ci_get_media_queue():
34+
# 查询媒体队列信息
35+
response = client.ci_get_media_queue(
36+
Bucket=bucket_name
37+
)
38+
print(response)
39+
return response
40+
41+
def ci_create_media_transcode_watermark_jobs():
42+
# 创建转码任务
43+
body = {
44+
'Input':{
45+
'Object':'117374C.mp4'
46+
},
47+
'QueueId': 'pe943803693bd42d1a3105804ddaee525',
48+
'Tag': 'Transcode',
49+
'Operation': {
50+
'Output':{'Bucket':bucket_name, 'Region':region, 'Object':'117374C_output.mp4'},
51+
'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5',
52+
# "WatermarkTemplateId": ["", ""],
53+
'Watermark': [
54+
{
55+
'Type':'Text',
56+
'Pos':'TopRight',
57+
'LocMode':'Absolute',
58+
'Dx':'64',
59+
'Dy': '64',
60+
'StartTime':'0',
61+
'EndTime':'1000.5',
62+
'Text': {
63+
'Text': '水印内容',
64+
'FontSize': '90',
65+
'FontType': 'simfang.ttf',
66+
'FontColor': '0xFFEEFF',
67+
'Transparency': '100',
68+
},
69+
},
70+
{
71+
'Type':'Image',
72+
'Pos':'TopLeft',
73+
'LocMode':'Absolute',
74+
'Dx':'100',
75+
'Dy': '100',
76+
'StartTime':'0',
77+
'EndTime':'1000.5',
78+
'Image': {
79+
'Url': 'http://'+bucket_name+".cos."+region+".myqcloud.com/1215shuiyin.jpg",
80+
'Mode': 'Fixed',
81+
'Width': '128',
82+
'Height': '128',
83+
'Transparency': '100',
84+
},
85+
}
86+
]
87+
}
88+
}
89+
# dict中数组类型的标签,都需要特殊处理
90+
lst = [
91+
'<Watermark>',
92+
'<WatermarkTemplateId>',
93+
'</WatermarkTemplateId>',
94+
'</Watermark>'
95+
]
96+
response = client.ci_create_media_jobs(
97+
Bucket=bucket_name,
98+
Jobs=body,
99+
Lst=lst,
100+
ContentType='application/xml'
101+
)
102+
print(response)
103+
return response
104+
105+
def ci_create_media_transcode_jobs():
106+
# 创建转码任务
107+
body = {
108+
'Input':{
109+
'Object':'117374C.mp4'
110+
},
111+
'QueueId': 'pe943803693bd42d1a3105804ddaee525',
112+
'Tag': 'Transcode',
113+
'Operation': {
114+
'Output':{'Bucket':bucket_name, 'Region':region, 'Object':'117374C_output.mp4'},
115+
'TemplateId': 't02db40900dc1c43ad9bdbd8acec6075c5'
116+
}
117+
}
118+
response = client.ci_create_media_jobs(
119+
Bucket=bucket_name,
120+
Jobs=body,
121+
Lst={},
122+
ContentType='application/xml'
123+
)
124+
print(response)
125+
return response
126+
127+
def ci_list_media_transcode_jobs():
128+
# 转码任务
129+
response = client.ci_list_media_jobs(
130+
Bucket=bucket_name,
131+
QueueId='pe943803693bd42d1a3105804ddaee525',
132+
Tag='Transcode',
133+
ContentType='application/xml'
134+
)
135+
print(response)
136+
return response
137+
138+
def ci_get_media_transcode_jobs():
139+
# 转码任务
140+
response = client.ci_get_media_jobs(
141+
Bucket=bucket_name,
142+
JobIDs='j3feb7ccc28fc11eca50b6f68c211dc6c,jb83bcc5a28fb11ecae48a1f29371c5f8',
143+
ContentType='application/xml'
144+
)
145+
print(response)
146+
return response
147+
148+
def get_media_info():
149+
# 获取媒体信息
150+
response = client.get_media_info(
151+
Bucket=bucket_name,
152+
Key='demo.mp4'
153+
)
154+
print(response)
155+
156+
def get_snapshot():
157+
# 产生同步截图
158+
response = client.get_snapshot(
159+
Bucket=bucket_name,
160+
Key='demo.mp4',
161+
Time='1.5',
162+
Width='480',
163+
Format='png'
164+
)
165+
print(response)
166+
response['Body'].get_stream_to_file('snapshot.jpg')
167+
168+
169+
if __name__ == "__main__":
170+
ci_get_media_queue()
171+
#ci_get_media_transcode_jobs()
172+
#ci_create_media_transcode_jobs()
173+
#get_media_info()
174+
#get_snapshot()

0 commit comments

Comments
 (0)