MCT/VOD/LSS/DOC通知接口的使用 置顶
高老师 · 高老师 发布于2016-07-07 17:36 浏览:5925 回复:24

在使用MCT转码、VOD点播和LSS直播以及DOC文档转码时,可以通过通知接口来获取直播会话的一些状态回调;


主要有两个场景:

1、当MCT、DOC转码任务、VOD媒资处理以及LSS直播会话状态变化时,MCT、DOC、VOD、LSS服务端可以向这个通知接口POST一个消息,当通知接口获取到这个通知消息后,应用层相应的操作;


2、LSS录制文件生成时,我想知道这个录制文件的位置信息,如果是录制到BOS,我可以通过通知接口获取录制文件所存放的BOS路径,如果是录制到VOD,我可以通过通知接口获取录制文件的mediaId,从而做更多的操作;


通知接口的原理:开通一个公网可访问的HTTP接口,能够被MCT、VOD、LSS服务访问到,并且能够接受POST消息。


为什么使用通知接口:因为MCT、DOC转码任务、VOD媒资处理、LSS直播录制等这些任务都是异步的操作,如果使用同步的方式会大大降低并发处理能力,所以采用通知接口这种回调方式来处理;


简单介绍一下使用方法:

首先需要一个web server,运行一个通知接口用于接收HTTP POST消息,这个接口可以是任意语言编写的;

下面是一个php编写的示例:该示例通过接收LSS服务发送过来的POST消息后,向同级目录的post.log文件中写入接收到的POST消息;

使用说明:需要在该页面同级目录创建一个post.log文件记录接收的POST消息,并且该文件需要有被http进程写入的权
例如:-rw-rw---- 1 apache apache 479 6月 23 16:02 post.log


演示代码正文如下:

# cat /var/www/html/notification.php 


header("Content-type:text/html;charset=utf-8"); 

$data = file_get_contents('php://input'); 

$log = urldecode($data);

$logfile = fopen("post.log", "a") or die("Unable to open file!");

fwrite($logfile, $log);

fclose($logfile);


?>


那么我如何在LSS中使用该接口呢?

创建LSS直播会话时,指定该接口地址即可,比如我的这个通知消息的php页面地址是http://www.xxx.cn/notification.php,那么我在创建会话的时候,指定向这个接口发送消息。



创建完成后,我可以使用tail -f post.log查看我收到的并写入post.log文件的消息:


# tail -f /var/www/html/post.log 


会话状态改变的消息:


录制到VOD文件生成发布的消息:


我获取到这些通知回调信息后,就可以做一些自动化的工作,比如自动生成点播播放页面等,具体的这些回调信息感兴趣的可以自己慢慢研究,不多说;


同样的,在MCT、VOD中也有相应的通知接口,使用方法是类似的。




点赞  ( 3 )
收藏
评论(24)
共24条回复 最后由乐观的徐小小回复于2019-09-03 23:14
#2.net程序猿回复于2016-07-28 17:05:38

我这边用的是.Net MVC框架,请问我的接口名要设置成什么?接口接受的参数又有哪些?分别是什么类型?还有,根据上述案例,难道不管什么样类型的通知发过来都只有这些属性?

#3.net程序猿回复于2016-07-28 17:21:55

然后你看文档https://bce.baidu.com/doc/LSS/API.html#.C7.95.5B.2B.2C.FD.3E.FB.81.27.66.BE.80.DF.A4.62   这里面说到的通知类型没有一种是你说的这样的,而且就算有,那如何创建这种类型的通知呢

#4静水流深回复于2016-08-09 17:07:45

高老师给力

1
#5coding回复于2016-08-22 10:11:55

看了几遍懂了,,,

  要获取录制到VOD的指定视频, 只能通过消息通知,去获取视频的媒资id咯?


0
#6高老师回复于2016-08-23 10:59:04
#5 coding回复
看了几遍懂了,,, 要获取录制到VOD的指定视频, 只能通过消息通知,去获取视频的媒资id咯?

是的,只能通过通知消息来获取,因为状态变化和录制文件处理、生成都是异步操作,所以只能采用这种通知回调的模式。

0
#7coding回复于2016-08-23 11:16:25
#6 高老师回复
是的,只能通过通知消息来获取,因为状态变化和录制文件处理、生成都是异步操作,所以只能采用这种通知回调的模式。

 原来是这样!

   感谢高老师的解决方案!

 

0
#8爱音斯坦回复于2016-08-23 11:32:48

高老师,你好。

我们是开放云的用户

想咨询一下MCT服务器端的通知接口如何配置呢?

0
#9高老师回复于2016-08-23 11:44:05
#8 爱音斯坦回复
高老师,你好。 我们是开放云的用户 想咨询一下MCT服务器端的通知接口如何配置呢?


其实跟LSS是类似的,在创建MCT的队列(pipeline)时,可以指定通知接口(图形界面的最下方),也可以通过API SDK来创建,效果是一样的。

0
#10爱音斯坦回复于2016-08-23 17:44:24
#9 高老师回复
[图片] 其实跟LSS是类似的,在创建MCT的队列(pipeline)时,可以指定通知接口(图形界面的最下方),也可以通过API SDK来创建,效果是一样的。

谢高老师!

已经测试通过!

还想问一个问题,这个接口地址能否在BCC中配置一个内网的呢?

因为我们正在用BCC,而且这样是不是更安全一些。


0
#11coding回复于2016-08-23 18:15:35
#6 高老师回复
是的,只能通过通知消息来获取,因为状态变化和录制文件处理、生成都是异步操作,所以只能采用这种通知回调的模式。

试了你的方法 果然可以了,

 我现在想把这些数据存到数据库里,

  但是$log是空的 ~

0
TOP