加载中…
正文 字体大小:

弹弹play“远程访问”功能API

(2016-12-09 19:58:45)
分类: 弹弹play

弹弹play“远程访问”功能能够让第三方app通过wifi连接到PC上的弹弹play播放器,并通过http restful api来控制播放器的播放,或是查看当前进度与弹幕等数据,甚至可以直接串流播放PC上的视频文件。

 

原理

弹弹play“远程访问”功能是在弹弹playfor Windows/UWP客户端)中搭建了一个小型的http web应用服务器,并将播放器内部相关的功能和数据以RESTful API接口的形式暴露在局域网中。也就是说,弹弹play播放器既是一个客户端(相对于弹弹play服务器而言),又是一个服务器端(相对于局域网中其他应用)。

 

网址与端口

默认情况下,弹弹play将会监听本机的80端口,用户可以修改此项设置。假设本机IP192.168.31.100,那么你的应用则可以通过 http://192.168.31.100:80 连接到弹弹play“远程访问”服务。

 

API说明

远程访问API为了方便使用与开发,所有接口都以/api/v1开头,而且都可以直接通过HTTP GET来访问到。

客户端除了某些必要请求以外(例如获取当前数据),不需要判断返回码以及请求是否成功完成。

下面列表中,URL包含大括号的表示此处为参数,例如 {hash} 表示在访问这个API时需要将 {hash} 替换为真正的参数值。

所有API都支持CORS

 

API列表

1.获取欢迎信息 /api/v1/welcome

返回值:

{"message":"Hello dandanplay user!","version":"6.5.0.1214","time":"12/14/2016 23:40:36"}

其中version代表弹弹play当前的版本号,将来可以通过此值判断某些api是否存在。time代表当前本机时间。

 

2.调整音量 /api/v1/control/volume/{volume}

参数:volume:整数,范围0-100

 

3.跳转进度 /api/v1/control/seek/{time}

参数:time:整数,范围0-maxtime值的单位为毫秒,例如传入12345代表将视频跳转到第12.345秒处

 

4.播放控制 /api/v1/control/{method}

参数:method
以下取值之一,分别代表 播放、停止、暂停、下一个视频、上一个视频

  • play
  • stop
  • pause
  • next
  • previous

 

5.当前正在播放的视频信息 /api/v1/current/video

返回值:

{"EpisodeId":"119410001","AnimeTitle":"期待在地下城邂逅有错吗OVA","EpisodeTitle":"1 Volume 1","Duration":1473000,"Position":0.335781753,"Seekable":true,"Volume":100}

EpisodeId为弹幕库编号,此值为字符串格式,并且可能为null;
AnimeTitle为主标题;
EpisodeTitle为子标题;
Duration为视频长度(毫秒),此数值可以用来配合跳转进度条api使用;
Position为当前进度,取值范围0-1
Seekable为当前视频是否支持跳转进度,部分流媒体视频和直播视频不支持跳转;
Volume为当前播放器声音大小,取值范围0-100

 

6.当前视频的弹幕列表 /api/v1/current/comment

返回值(始终为xml格式):

弹弹play“远程访问”功能API
 

7.当前播放列表 /api/v1/playlist

返回值:

["C:\\Users\\kaedei\\Videos\\[KTXP]Dungeon ni Deai o Motomeru no wa Machigatteiru no Darou ka [OVA] [720p][GB].mp4","C:\\Users\\kaedei\\Videos\\[SumiSora][Tawawa_on_Monday][02][GB][720p].mp4"]

字符串数组,为视频在本机硬盘上的完整路径。

 

8.媒体库 /api/v1/library

返回值:

[{"AnimeId":12462,"EpisodeId":124620002,"AnimeTitle":"星期一的丰满","EpisodeTitle":"2 しっかり者のつもりだがスキの多い後輩","Hash":"A0012AF34130EC4FCC0CA7F79A306C31","Name":"[SumiSora][Tawawa_on_Monday][02][GB][720p].mp4","Path":"C:\\Users\\kaedei\\Videos\\[SumiSora][Tawawa_on_Monday][02][GB][720p].mp4","Size":38843483,"Rate":0,"Created":"2016-10-31T16:31:13","LastPlay":"2016-12-10T19:49:17","Duration":275},{"AnimeId":11941,"EpisodeId":119410001,"AnimeTitle":"期待在地下城邂逅有错吗OVA","EpisodeTitle":"1 Volume 1","Hash":"361BD640D7CC18993F1A6BC3BD8B7E73","Name":"[KTXP]Dungeon ni Deai o Motomeru no wa Machigatteiru no Darou ka [OVA] [720p][GB].mp4","Path":"C:\\Users\\kaedei\\Videos\\[KTXP]Dungeon ni Deai o Motomeru no wa Machigatteiru no Darou ka [OVA] [720p][GB].mp4","Size":313123890,"Rate":0,"Created":"2016-12-12T00:54:14","LastPlay":"2016-12-14T23:48:16.925167+08:00","Duration":1473}]

AnimeId为动画编号,属于相同动画的视频总有同样的编号;
EpisodeId为弹幕库编号;
AnimeTitle为主标题;
EpisodeTitle为子标题;
Hash为此视频的特征码(重要);
Name为此视频的文件名(去除路径信息);
Path为此视频在硬盘上的完整路径;
Size为文件体积,单位为Byte;
Rate为用户对此视频内容的打分,目前全部为0;
Created为弹弹play媒体库收录此视频的时间;
LastPlay为上次使用弹弹play播放此视频的时间;
Duration为视频时长,单位为秒;

 

9.视频缩略图 /api/v1/image/{hash}

参数:hash:视频特征码

返回值:jpeg格式的图片文件

 

10.加载文件/api/v1/load/{hash}

参数:hash:视频特征码

 

11.获取指定视频的弹幕/api/v1/comment/{hash}

参数:hash:视频特征码

返回值(始终为xml格式):

弹弹play“远程访问”功能API


注:与BiliBili的弹幕格式相同,不再详述。
2:弹弹play会联网获取最新的弹幕,所以访问此api时可能很久才会返回弹幕

 

12.串流视频/api/v1/stream/{hash}

参数:hash:视频特征码

返回:视频文件流,Content-Typevideo/mp4,支持range操作,可以直接在浏览器中播放。

 

 

我的更多文章:

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

       

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有