Fork me on GitHub
代码改变世界

视频后台转码系统,在线视频转码系统 在线转码 在线播放视频

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>"
}

网站后台视频转码系统

@ https://github.com/ranmufei

校友通微信小程序

校友通微信小程序