最近更新时间:2023.10.13 17:01:59
首次发布时间:2021.02.23 10:42:40
本文为您提供了服务端 Python SDK 的媒资上传模块相关的 API 调用示例。主要包含:媒资上传、素材上传、URL 批量拉取上传、查询 URL 上传任务状态等。
媒资上传模块的获取上传地址和凭证和确认上传的 OpenAPI,目前支持 2 个版本。
说明
上传文件时,要求携带文件后缀。例如,mp4 文件上传,携带 .mp4 或 .MP4。
使用前请先完成初始化,参考初始化。
由 App/Web Server 持有的 AK/SK 在本地签出,不依赖外网。若希望同时生成多个UploadAuthToken
,您可以循环调用生成方法。UploadAuthToken
用于客户端上传,详见客户端上传。
# coding:utf-8 from __future__ import print_function from volcengine.vod.VodService import VodService if __name__ == '__main__': vod_service = VodService() # call below method if you dont set ak and sk in $HOME/.vcloud/config vod_service.set_ak('your ak') vod_service.set_sk('your sk') sts2 = vod_service.get_upload_sts2_with_expired_time(60 * 60) print(sts2) sts2 = vod_service.get_upload_sts2() print(sts2)
接口请求参数和返回参数详见 OpenAPI:获取上传地址和凭证 及 确认上传。
# coding:utf-8 from __future__ import print_function import json from volcengine.util.Functions import Function from volcengine.vod.VodService import VodService from volcengine.vod.models.request.request_vod_pb2 import VodUploadMediaRequest if __name__ == '__main__': vod_service = VodService() # call below method if you dont set ak and sk in $HOME/.vcloud/config vod_service.set_ak('your ak') vod_service.set_sk('your sk') space_name = 'your space name' file_path = 'your file path' get_meta_function = Function.get_meta_func() snapshot_function = Function.get_snapshot_func(2.3) apply_function = Function.get_add_option_info_func("title1", "tag1", "desc1", 0, False) try: req = VodUploadMediaRequest() req.SpaceName = space_name req.FilePath = file_path req.Functions = json.dumps([get_meta_function, snapshot_function]) req.CallbackArgs = '' req.FileName = 'hello/vod.mp4' req.FileExtension = '.mp4' req.StorageClass = 0 resp = vod_service.upload_media(req) except Exception: raise else: print(resp) if resp.ResponseMetadata.Error.Code == '': print(resp.Result.Data) print(resp.Result.Data.Vid) print(resp.Result.Data.PosterUri) print(resp.Result.Data.SourceInfo.FileName) print(resp.Result.Data.SourceInfo.Height) print(resp.Result.Data.SourceInfo.Width) else: print(resp.ResponseMetadata.Error) print(resp.ResponseMetadata.RequestId)
接口请求参数和返回参数详见 OpenAPI:获取上传地址和凭证 及 确认上传。
# coding:utf-8 from __future__ import print_function import json from volcengine.util.Functions import Function from volcengine.vod.VodService import VodService from volcengine.const.Const import * from volcengine.vod.models.request.request_vod_pb2 import VodUploadMaterialRequest if __name__ == '__main__': vod_service = VodService() # call below method if you dont set ak and sk in $HOME/.vcloud/config vod_service.set_ak('your ak') vod_service.set_sk('your sk') space_name = 'your space name' file_path = 'your file path' get_meta_function = Function.get_meta_func() snapshot_function = Function.get_snapshot_func(2.3) add_option_function = Function.get_add_material_option_info_func(title='素材测试视频', tags='test', description='素材测试,视频文件', category=CATEGORY_VIDEO, record_type=2, format_input='MP4') try: req = VodUploadMaterialRequest() req.FileType = FILE_TYPE_MEDIA req.SpaceName = space_name req.FilePath = file_path req.Functions = json.dumps([get_meta_function, snapshot_function, add_option_function]) req.CallbackArgs = '' req.FileExtension = '.mp4' resp = vod_service.upload_material(req) except Exception: raise else: print(resp) if resp.ResponseMetadata.Error.Code == '': print(resp.Result.Data) print(resp.Result.Data.Mid) print(resp.Result.Data.PosterUri) print(resp.Result.Data.SourceInfo.FileName) print(resp.Result.Data.SourceInfo.Height) print(resp.Result.Data.SourceInfo.Width) else: print(resp.ResponseMetadata.Error) print(resp.ResponseMetadata.RequestId) if __name__ == '__main__': vod_service = VodService() # call below method if you dont set ak and sk in $HOME/.vcloud/config vod_service.set_ak('your ak') vod_service.set_sk('your sk') space_name = 'your space name' file_path = 'your file path' get_meta_function = Function.get_meta_func() snapshot_function = Function.get_snapshot_func(0) add_option_function = Function.get_add_material_option_info_func(title='素材测试图片', tags='test', description='素材测试,图片文件', category=CATEGORY_IMAGE, record_type=2, format_input='jpg') try: req = VodUploadMaterialRequest() req.FileType = FILE_TYPE_IMAGE req.SpaceName = space_name req.FilePath = file_path req.Functions = json.dumps([get_meta_function, snapshot_function, add_option_function]) req.CallbackArgs = '' req.FileName = '' req.FileExtension = '.jpg' resp = vod_service.upload_material(req) except Exception: raise else: print(resp) if resp.ResponseMetadata.Error.Code == '': print(resp.Result.Data) print(resp.Result.Data.Mid) print(resp.Result.Data.PosterUri) print(resp.Result.Data.SourceInfo.FileName) print(resp.Result.Data.SourceInfo.Height) print(resp.Result.Data.SourceInfo.Width) else: print(resp.ResponseMetadata.Error) print(resp.ResponseMetadata.RequestId) if __name__ == '__main__': vod_service = VodService() # call below method if you dont set ak and sk in $HOME/.vcloud/config vod_service.set_ak('your ak') vod_service.set_sk('your sk') space_name = 'your space name' file_path = 'your file path' get_meta_function = Function.get_meta_func() add_option_function = Function.get_add_material_option_info_func(title='素材测试字幕', tags='test', description='素材测试,字幕文件', category=CATEGORY_FONT, record_type=2, format_input='vtt') try: req = VodUploadMaterialRequest() req.FileType = FILE_TYPE_OBJECT req.SpaceName = space_name req.FilePath = file_path req.Functions = json.dumps([get_meta_function, add_option_function]) req.CallbackArgs = '' req.FileName = '' req.FileExtension = '.vtt' resp = vod_service.upload_material(req) except Exception: raise else: print(resp) if resp.ResponseMetadata.Error.Code == '': print(resp.Result.Data) print(resp.Result.Data.Mid) else: print(resp.ResponseMetadata.Error) print(resp.ResponseMetadata.RequestId)
接口请求参数和返回参数详见 OpenAPI:URL批量拉取上传。
# coding:utf-8 from __future__ import print_function from volcengine.vod.VodService import VodService from volcengine.vod.models.request.request_vod_pb2 import VodUrlUploadRequest if __name__ == '__main__': vod_service = VodService() # call below method if you dont set ak and sk in $HOME/.vcloud/config vod_service.set_ak('your ak') vod_service.set_sk('your sk') space_name = 'your space' url = '' try: req = VodUrlUploadRequest() req.SpaceName = space_name url_set = req.URLSets.add() url_set.SourceUrl = url url_set.FileExtension = '.mp4' url_set.CallbackArgs = 'my python callback args' customUrlHeaders = {'your header key': 'your header value'} url_set.CustomURLHeaders.update(**customUrlHeaders) resp = vod_service.upload_media_by_url(req) except Exception: raise else: print(resp) if resp.ResponseMetadata.Error.Code == '': print(resp.Result.Data) print(resp.Result.Data[0].JobId) print(resp.Result.Data[0].SourceUrl) else: print(resp.ResponseMetadata.Error) print(resp.ResponseMetadata.RequestId)
接口请求参数和返回参数详见OpenAPI:查询URL批量上传任务状态。
# coding:utf-8 from __future__ import print_function from volcengine.vod.VodService import VodService from volcengine.vod.models.request.request_vod_pb2 import VodQueryUploadTaskInfoRequest if __name__ == '__main__': vod_service = VodService() # call below method if you dont set ak and sk in $HOME/.vcloud/config vod_service.set_ak('your ak') vod_service.set_sk('your sk') jobId = 'url jobId' jobIds = [jobId] comma = ',' s = comma.join(jobIds) req = VodQueryUploadTaskInfoRequest() req.JobIds = s try: resp = vod_service.query_upload_task_info(req) except Exception: raise else: print(resp) if resp.ResponseMetadata.Error.Code == '': print(resp.Result.Data) print(resp.Result.Data.MediaInfoList[0].State) else: print(resp.ResponseMetadata.Error) print(resp.ResponseMetadata.RequestId)