AHdark
一个多语种开发蒟蒻
AHdark Blog

阿里云Vod回调通知系统 部署腾讯云云函数

顺手写的

GitHub

用于阿里云VOD回调的云函数,可在腾讯云函数进行集成响应部署

目前仍在开发中……

我知道阿里云视频点播的回调放在腾讯云云函数很生草,但是我真的不会搞阿里云ServerLess那个API网关

欢迎好心人做阿里云ServerLess适配,我会去点个Star的!

目前bug

不论如何腾讯云云函数都会返回403,我实在不知道咋搞那个傻逼集成响应,求大佬PR!

Wikis

腾讯云云函数 API网关设置

  • 请求方法:POST 或 ANY

更推荐POST,因为限定了更安全

  • 发布环境:发布

这个不多解释

  • 鉴权方式:免鉴权

阿里云不会适配腾讯云SCF的鉴权规则的

  • 集成响应:启用

请务必启用!

  • 启用Base64编码:未启用
  • 异步响应:启用

建议启用,异步没坏处

代码配置

不动的话请不要碰functions.phpindex.php

请前往src/config.php修改相关配置信息

Server酱SendKey请前往 https://sct.ftqq.com/sendkey 获取

阿里云配置

回调请前往 https://vod.console.aliyun.com/#/settings/callback 设置

主体代码

function main_handler($event, $context) {
    $body = $event->body;
    $body = json_decode($body,1);
    $Ali_EventType = $body['EventType'];
    $Ali_EventTime = $body['EventTime'];
    $title = "";
    $describe = "";
    if(isset($Ali_EventType)){
        echo '检索到$Ali_EventType的值为'.$Ali_EventType."\n";
    }
    switch($Ali_EventType) {
        case "FileUploadComplete":
            $title = "[Aliyun视频点播]视频上传完成";
            $describe = "# 详细信息\n- 完成时间: ".str_replace(array('T','Z'),' ',$Ali_EventTime)."\n- 视频ID: ".$body['VideoId']."\n- 视频大小: ".getFileSize($body['Size']);
            break;
        case "TranscodeComplete":
            $title = "[Aliyun视频点播]视频转码完成";
            $describe = "# 详细信息\n";
            $describe .= "视频ID: ".$body['VideoId']."\n\n---\n";
            foreach($body['StreamInfos'] as $k) {
                $describe .= "### 转码ID: ".$k['JobId']."\n";
                $describe .= "- 转码时间:".((float)$k['Duration']/3600)."小时\n";
                $describe .= "- 画质: ".AliDuration[$k['Definition']]."\n";
                $describe .= "\n转码".($k['Status']=="success"?"成功":"失败")."\n";
                if($k['Status']!="success") {
                    $describe .= "- 错误码: ".$k['ErrorCode']."\n";
                    $describe .= "- 错误信息: ".$k['ErrorMessage']."\n";
                }
                $describe .= "\n---\n";
            }
            break;
        case "StreamTranscodeComplete":
            $title = "[Aliyun视频点播]单一清晰度视频转码完成";
            $describe = "# 详细信息\n";
            $describe .= "视频ID: ".$body['VideoId']." \n";
            $describe .= "转码ID: ".$body['JobId']." \n";
            $describe .= "- 转码时间:".((float)$body['Duration']/3600)."小时 \n";
            $describe .= "- 画质: ".AliDuration[$body['Definition']]." \n";
            $describe .= "\n转码".($body['Status']=="success"?"成功":"失败")." \n";
            if($body['Status']!="success") {
                $describe .= "- 错误码: ".$body['ErrorCode']." \n";
                $describe .= "- 错误信息: ".$body['ErrorMessage']." \n";
            }
            break;
    }
    $request = json_decode(sct_send($title,$describe));
    if($request->data->error !== "SUCCESS"){
        return [
            'isBase64Encoded' => false,
            'statusCode' => 400,
            'headers' => [
                "content-type" => "application/json",
                "access-control-allow-origin" => "*"
            ],
            'body' => [
                "state" => "Error",
                "code" => $request->code,
                "message" => $request->message
            ]
        ];
    } else {
        return [
            'isBase64Encoded' => false,
            'statusCode' => 200,
            'headers' => [
                "content-type" => "application/json",
                "access-control-allow-origin" => "*"
            ],
            'body' => $request
        ];
    }
}
赞赏
本文链接:https://ahdark.com/technology/918.shtml
本文采用 CC BY-NC-SA 3.0 Unported 协议进行许可
欢迎加入Q群交流:654022768

AH Dark

文章作者

本博客的运营者、主要开发者、主要作者 深度学习算法工程师,后端工程师,嵌入式软件开发工程师 Azure认证 运维工程师

发表评论

textsms
account_circle
email

AHdark Blog

阿里云Vod回调通知系统 部署腾讯云云函数
顺手写的 GitHub 用于阿里云VOD回调的云函数,可在腾讯云函数进行集成响应部署 目前仍在开发中…… 我知道阿里云视频点播的回调放在腾讯云云函数很生草,但是我真的不会搞…
扫描二维码继续阅读
2021-09-07