视频后台转码系统,在线视频转码系统 在线转码 在线播放视频
2019-07-04 00:52 freefei 阅读(4762) 评论(0) 编辑 收藏 举报笔记一下 去年做的一个视频在线转码系统笔记
能解决
-
上传视频 后台自动转码系统;
-
上传视频完成立刻获取播放代码;
上传视频后台转码系统
网络上能直接播放的视频通常不是我们拍摄器材 直接拍摄的格式 例如 ( fmpeg,avi,rm,wov mkv 等)。 这些格式的文件是不能直接在网络上进行在线播放的;鉴于之前有客户需要一个能在线 直接上传上面任意视频格式 让后播放这个视频 这个需求,几经研究 我开发了一个能在线直接上传并转码为在线直接播放视频的系统。系统提供API接口,后台发布内容的时候上传任意视频 调用接口 放回播放地址,系统后台完成转码;
传统的视频转码方式
一 调用主流视频网站地址
例如我要建立一个网站 ,网站中希望能播放视频, 通常的做法是吧这些视频上传到 主流的视频网站 例如 youku 腾讯等视频网站 让后再通过他们的视频播放地址 再嵌入到我们的网页中 这样的方式也可以达到目的; 只是他们可能会在你的视频播放的时候加上广告 打上他们的logo;
二 本地通过转码软件
本地通过转码软件吧 视频转换为flv 或者mp4 这些能网络播放的格式 然后再上传 通过播放器播放这个地址; 这能解决问题,但是会比较麻烦 要线下手动处理;
在线视频转码系统
例如 我的一个客户 在他的新闻发布系统中(CMS) 以前要发布新闻 新闻中有视频 他们通常是吧视频传到外面的视频网站youku 上,然后用优酷的播放地址;后来通过我们的在线转码系统 他们把视频通过一上传组件把视频传给我我们系统的接口 我们系统直接给返回播放代码,无需修改任意功能和代码 直接把放回的播放代码插入新闻中即可播放;
-
独立部署 不影响已有的系统;
-
提供接口 方便集成已有的老系统;
-
支持分布式部署
接口文档说明
(1) 上传视频接口
POST /admin/Upload/upload
上传视频文件,注意视频文件字段为file, 类型为file类型;
参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
file |
file | 是 | 上传文件字段"file" 字段类型也是file |
width | number | 否 | 自定义播放器宽度 ;默认为 800 |
height | number | 否 | 自定义播放器高度 ;默认为 500 |
# 参考案例
curl -X POST \
http://video-transcode.xxxx.net:81/admin/Upload/upload \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F file=@fj1.mp4
返回值
# 注意上传放回的为原始视频,不要用这个地址类播放 这个视频很大;
# 上传成功后 携带 ID 回调请求 获取播放地址接口例如: /admin/play/15
{
"status": 1,
"info": "上传成功",
"data": {
"ext": "mpeg",
"savename": "1.mpeg",
"filename": "18b93553d62352efa0216b463a92ed63.mpeg",
"size": "17M"
},
"upinfo": {
"name": "1.mpeg",
"type": "video/mpeg",
"tmp_name": "/tmp/phpddldpC",
"error": 0,
"size": 18251036
},
"id": "20",
"task_status": 1,
"html": { # 播放器代码
"iframe": "<iframe height=300 width=500 src=http://video-transcode2.xxx.net:81/api/Video/play?id=20></iframe>",
"page": "http://video-transcode2.03in.net:81/api/Video/play?id=20"
}
}
(2) 获取播放视频代码
GET /api/getplay/12
参数
参数 | 类型 | 说明 |
---|---|---|
id | string | 视频ID, API后面直接加上即可 |
关于播放视频地址说明; 上传的视频不能立刻播放;因为还是在转码过程中;需要等待视频转码完成才能播放,转码的时间长度和视频大小相关。
实例
curl -X GET \
http://video-transcode.xxxxx.net:81/api/getplay/12 \
-H 'cache-control: no-cache' \
返回
# 返回实例
{
"info": "播放地址",
"html": "<iframe height=400 width=510 src=http://video-transcode2.xxxx.net:81/api/Video/play?id=12></iframe>",
"url": "http://video-transcode2.xxxx.net:81/api/Video/play?id=12>"
}