当前位置:   article > 正文

阿里云视频点播上传视频和获取视频播放地址_阿里云点播上传转播放地址

阿里云点播上传转播放地址

参考官方文档: Python上传SDK-普通文件上传获取播放地址

本文只对上传视频和获取单个视频播放地址操作。更多案例如批量获取所有视频列表等操作请直接参考官方文档: 媒体管理

一、上传视频:上传完成后返回一个videoId参数,后续使用这个videoId获取视频播放地址

  1. from voduploadsdk.AliyunVodUtils import *
  2. from voduploadsdk.AliyunVodUploader import AliyunVodUploader
  3. from voduploadsdk.UploadVideoRequest import UploadVideoRequest
  4. import re
  5. filePath = "F:/Download/新增红色视频/丹心映红六盘山——夜宿单家集探寻“红色密码”.mp4"
  6. # print(filename.rindex('/'))
  7. # print(filename[filename.rindex('/')+1: filename.index('.')])
  8. filename = filePath[filePath.rindex('/')+1: filePath.index('.')]
  9. # 测试上传本地音视频
  10. def testUploadLocalVideo(accessKeyId, accessKeySecret, filePath, storageLocation=None):
  11. try:
  12. # 可以指定上传脚本部署的ECS区域。如果ECS区域和视频点播存储区域相同,则自动使用内网上传,上传更快且更省公网流量。
  13. # ecsRegionId ="cn-shanghai"
  14. # uploader = AliyunVodUploader(accessKeyId, accessKeySecret, ecsRegionId)
  15. # 不指定上传脚本部署的ECS区域。
  16. uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
  17. uploadVideoRequest = UploadVideoRequest(filePath, filename)
  18. # 可以设置视频封面,如果是本地或网络图片可使用UploadImageRequest上传图片到视频点播,获取到ImageURL
  19. # ImageURL示例:https://example.com/sample-****.jpg
  20. # uploadVideoRequest.setCoverURL('<your Image URL>')
  21. # 标签
  22. # uploadVideoRequest.setTags('tag1,tag2')
  23. if storageLocation:
  24. uploadVideoRequest.setStorageLocation(storageLocation)
  25. videoId = uploader.uploadLocalVideo(uploadVideoRequest)
  26. print("file: %s, videoId: %s" % (uploadVideoRequest.filePath, videoId))
  27. except AliyunVodException as e:
  28. print(e)
  29. testUploadLocalVideo('yourAccessKeyID', "yourAccessKeySecret", filePath)

将代码中的yourAccessKeyID和yourAccessSecret替换为自己阿里云主账号的AccessKeyID和AccessKeySecret或RAM 访问控制的用户的AccessKeyID和AccessKeySecret即可

二、根据videoId获取视频播放地址:在返回中的参数PlayURL即是播放地址

官方参数说明文档: GetPlayInfo接口说明

  1. import json
  2. import traceback
  3. from aliyunsdkcore.client import AcsClient
  4. def init_vod_client(accessKeyId, accessKeySecret):
  5. regionId = 'cn-shanghai' # 点播服务接入地域
  6. connectTimeout = 3 # 连接超时,单位为秒
  7. return AcsClient(accessKeyId, accessKeySecret, regionId, auto_retry=True, max_retry_time=3, timeout=connectTimeout)
  8. from aliyunsdkvod.request.v20170321 import GetPlayInfoRequest
  9. def get_play_info(clt, videoId):
  10. request = GetPlayInfoRequest.GetPlayInfoRequest()
  11. request.set_accept_format('JSON')
  12. request.set_VideoId(videoId)
  13. request.set_AuthTimeout(3600*5) # 设置播放地址的有效时间。单位:秒。
  14. response = json.loads(clt.do_action_with_exception(request))
  15. return response
  16. try:
  17. clt = init_vod_client('yourAccessKeyID', "yourAccessKeySecret")
  18. playInfo = get_play_info(clt, '4aa4f9c0b73c71ed80110675a0ec0102') # 第二个参数是videoID
  19. print(json.dumps(playInfo, ensure_ascii=False, indent=4))
  20. except Exception as e:
  21. print(e)
  22. print(traceback.format_exc())

将代码中的yourAccessKeyID和yourAccessSecret替换为自己阿里云主账号的AccessKeyID和AccessKeySecret或RAM 访问控制的用户的AccessKeyID和AccessKeySecret即可

注:如在上传或获取地址等操作时报错,可能是因为使用的RAM用户没有权限,去对该用户搜索添加相应的权限即可

三、还可以使用sts获取token后访问

1、通过RAM访问控制里创建的用户获取AccessKeyID和AccessKeySecret,创建的角色里获取ARN(之前发布的文章里有具体说明这些参数的获取方式,这里就不赘述了)

2、通过AccessKeyID、AccessKeySecret和ARN获取SecurityToken、STS的AccessKeyID和AccessKeySecret用来接下来的访问识别图片文字的接口

参考官方api:STS SDK概览安全令牌的获取(请在API接口中填写必要的参数后复制代码即可)

  1. from aliyunsdkcore.client import AcsClient
  2. from aliyunsdkcore.acs_exception.exceptions import ClientException
  3. from aliyunsdkcore.acs_exception.exceptions import ServerException
  4. from aliyunsdkcore.auth.credentials import AccessKeyCredential
  5. from aliyunsdkcore.auth.credentials import StsTokenCredential
  6. from aliyunsdksts.request.v20150401.AssumeRoleRequest import AssumeRoleRequest
  7. credentials = AccessKeyCredential('yourAccessKeyID', 'yourAccessSecret')
  8. # use STS Token
  9. # credentials = StsTokenCredential('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>')
  10. client = AcsClient(region_id='cn-shanghai', credential=credentials)
  11. request = AssumeRoleRequest()
  12. request.set_accept_format('json')
  13. policy_text = '{"Version": "1","Statement": [{"Action": "vod:*","Resource": "*","Effect": "Allow"}]}' # 策略
  14. request.set_RoleArn("yourRoleArn") # 在RAM访问控制中的角色里获取ARN
  15. request.set_RoleSessionName("client") # 任意写
  16. request.set_Policy(policy_text)
  17. response = client.do_action_with_exception(request)
  18. # python2: print(response)
  19. print(str(response, encoding='utf-8'))

请将上面代码中的yourAccessKeyID、yourAccessKeySecret和yourRoleArn替换为第一步中获取的值即可

2,使用SecurityToken请求接口获取数据

  1. import json
  2. import traceback
  3. from aliyunsdkcore.client import AcsClient
  4. from aliyunsdkcore.auth.credentials import StsTokenCredential
  5. from aliyunsdkvod.request.v20170321 import GetPlayInfoRequest
  6. from aliyunsdkvod.request.v20170321 import CreateUploadVideoRequest
  7. def init_vod_client(accessKeyId, accessKeySecret, securityToken):
  8. regionId = 'cn-shanghai' # 点播服务接入地域
  9. connectTimeout = 3 # 连接超时,单位为秒
  10. credential = StsTokenCredential(accessKeyId, accessKeySecret, securityToken)
  11. return AcsClient(region_id=regionId, auto_retry=True, max_retry_time=3, timeout=connectTimeout, credential=credential)
  12. def get_play_info(clt, videoId):
  13. request = GetPlayInfoRequest.GetPlayInfoRequest()
  14. request.set_accept_format('JSON')
  15. request.set_VideoId(videoId)
  16. request.set_AuthTimeout(3600*5)
  17. response = json.loads(clt.do_action_with_exception(request))
  18. return response
  19. try:
  20. clt = init_vod_client('yourAccessKeyID', 'yourAccessSecret', "yourSecurityToken")
  21. playInfo = get_play_info(clt, '20b87bd0b73e71ed801d0674a2ce0102') # 第二个参数是videoID
  22. print(json.dumps(playInfo, ensure_ascii=False, indent=4))
  23. except Exception as e:
  24. print(e)
  25. print(traceback.format_exc())

将上面代码中的yourAccessKeyID、yourAccessKeySecret和yourSecurityToken替换成第三步第2小步骤代码返回的SecurityToken、AccessKeyId和AccessKeySecret即可

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/507577?site
推荐阅读
相关标签
  

闽ICP备14008679号