本文档向开发者介绍如何将服务器本地的视频文件上传到云点播(VOD)。
本文提供的代码是免费开源的,但在使用的过程中可能会产生以下费用:
上传脚本需要运行在一台腾讯云 CVM 上,要求如下:
Ubuntu Server 16.04.1 LTS 64位
或Ubuntu Server 18.04.1 LTS 64位
。购买 CVM 的方法请参见 操作指南 - 创建实例。重装系统的方法请参见 操作指南 - 重装系统。
注意:
如果您没有符合上述条件的腾讯云 CVM,也可以在其它带外网的 Linux(如 CentOS、Debian 等)或 Mac 机器上执行脚本,但需根据操作系统的区别修改脚本中的个别命令,具体修改方式请开发者自行搜索。
请参考 快速入门 - 步骤1 开通云点播服务。
上传视频需要使用到开发者的 API 密钥(即 SecretId 和 SecretKey)。如果还未创建过密钥,请参见 创建密钥文档 生成新的 API 密钥;如果已创建过密钥,请参见 查看密钥文档 获取 API 密钥。
登录 步骤1 中准备好的 CVM(登录方法详见 操作指南 - 登录 Linux),在远程终端输入以下命令并运行:
ubuntu@VM-69-2-ubuntu:~$ export SECRET_ID=AKxxxxxxxxxxxxxxxxxxxxxxx; export SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx;git clone https://github.com/tencentyun/vod-server-demo.git ~/vod-server-demo; bash ~/vod-server-demo/installer/server_upload.sh
说明:
请将命令中的 SECRET_ID 和 SECRET_KEY 赋值为 步骤3 中获取到的内容。
该命令将从 Github 下载 Demo 源码并自动执行安装脚本。安装过程需几分钟(具体取决于 CVM 网络状况),期间远程终端会打印类似如下的信息:
[2020-06-23 19:56:31]开始安装 pip3。
[2020-06-23 19:56:34]pip3 安装成功。
[2020-06-23 19:56:34]开始安装 VOD Python 上传 SDK。
[2020-06-23 19:56:36]VOD Python 上传 SDK 安装完成。
[2020-06-23 19:56:36]开始配置 SDK 参数。
[2020-06-23 19:56:36]SDK 参数配置完成。
发起上传之前,开发者需要在 CVM 上准备好视频文件和封面图片(可选)。如果开发者不方便上传视频到 CVM,可以在远程终端执行以下命令,将测试视频和测试封面下载到 CVM 上:
ubuntu@VM-69-2-ubuntu:~$ wget http://1400329073.vod2.myqcloud.com/d62d88a7vodtranscq1400329073/7a9b2b565285890804459281865/v.f100010.mp4 -O ~/vod-server-demo/server_upload/tencent_cloud.mp4; wget http://1400329073.vod2.myqcloud.com/ff439affvodcq1400329073/8aa658d15285890804459940822/5285890804459940825.jpg -O ~/vod-server-demo/server_upload/tencent_cloud.jpg
执行server_upload.py
脚本发起上传:
ubuntu@VM-69-2-ubuntu:~$ cd ~/vod-server-demo/server_upload/; python3 server_upload.py ./tencent_cloud.mp4 ./tencent_cloud.jpg
说明:
请将命令中的视频路径和封面图片路径替换为实际文件的路径,其中封面图片路径参数是可选的,如果不填则上传后的视频没有封面。
该命令将 tencent_cloud.mp4 视频上传到 VOD,同时上传 tencent_cloud.jpg 图片作为其封面。上传完成后远程终端会打印出类似如下信息:
{"CoverUrl": "http://1400329073.vod2.myqcloud.com/ff439affvodcq1400329073/8aa658d15285890804459940822/5285890804459940825.jpg", "FileId": "5285890804459940822", "MediaUrl": "http://1400329073.vod2.myqcloud.com/ff439affvodcq1400329073/8aa658d15285890804459940822/f0.mp4", "RequestId": "84a7fb42-9f05-4acd-9cc8-843690b188ce"}
说明:
如果开发者使用自己的视频进行测试,建议使用较小的视频文件(例如几个MB),避免因 CVM 带宽不足而需要耗费很长的上传时间。
在控制台 视频管理 页面上可以看到刚上传的视频文件和封面:
main()
为脚本入口。
调用parse_conf_file()
,从config.json
文件中读取配置信息。配置项说明如下:
字段 | 数据类型 | 功能 |
---|---|---|
secret_id | String | API 密钥 |
secret_key | String | API 密钥 |
procedure | String | 任务流名称,即视频上传完成后自动触发该任务流。默认为空 |
subappid | String | 是否将视频上传到 云点播子应用 |
说明:
本 Demo 仅支持
procedure
和subappid
两个上传参数,完整功能请参考 Python 上传 SDK 接口描述。
从命令行参数中获取待上传视频文件的本地路径,以及封面图片路径(如果有封面),然后调用upload_media()
发起上传:
if len(sys.argv) < 2:
usage()
return
video_path = sys.argv[1]
cover_path = sys.argv[2] if len(sys.argv) > 2 else ""
# 发起上传
rsp = upload_media(configuration, video_path, cover_path)
在upload_media()
中,使用 Python SDK 提供的方法构造一个上传实例client
,然后在req
中设置上传参数,最后发起上传:
client = VodUploadClient(conf["secret_id"], conf["secret_key"])
req = VodUploadRequest()
req.MediaFilePath = video
if cover != "":
req.CoverFilePath = cover
if conf["procedure"] != "":
req.Procedure = conf["procedure"]
req.SubAppId = int(conf["subappid"])
rsp = client.upload("ap-guangzhou", req)
return rsp
注意:
client.upload()
中的第一个参数("ap-guangzhou"
)是指上传实例的接入地域,不是指视频上传后的存储地域。该参数固定填为"ap-guangzhou"
即可,如果需要指定视频上传后的存储地域,请设置req.StorageRegion
参数。
VOD 服务端上传 SDK 还支持其它特性,如设置视频名称、分类、过期时间等,详情请参考各语言 SDK 开发指南:
本页内容是否解决了您的问题?