前言
诸如 Prefect Player 提供了多个可以自定义的在线直播源文件添加接口,甚至可以根据需求无限添加,而友窝、骆驼、百川影音等都是只内置唯一的用户自定义通道。习惯性地,大部分人都是直接把TXT或PHP格式的源文件只扔上去。
之前百川为了解决部分人提出的一个接口不够用的问题,他是给大家一个文件,大概目录如下。
接口 ├──── list.php └──── list ├── 10001.txt
注意list文件夹下可以放置多个txt文件,这边只是列出一举栗。其中PHP文件的内容为:
<?php header('Content-Type: text/json;charset=UTF-8'); $dir=dirname(__FILE__); $files = glob('./list/*.txt'); $result=''; foreach ($files as $file) { $fsize=filesize($file); $myfile = fopen($file, "r") or die("Unable to open file!"); $txt= fread($myfile,$fsize); fclose($myfile); $txt=$txt."\r\n"; $result=$result.$txt; } echo $result; ?>
这样只要在APP上填写 /list.php 的地址,就相当于读取了 list 文件夹下的所有txt源文件内的直播源了。
这是段很简单的代码,但当时还是眼前一亮,那种挣脱束缚的感觉。大佬这是以后台开发者的角度提供处理接口方式,这是对APP单一接口的扩展方法。
在 Black-Player 中的应用
最初直播源的列表同步也想靠FTP协议来做,就像PeteDB播放器那样,如果服务器上安装的是宝塔这类可视化面板,点几下鼠标就可以完成服务端的配置,还是很方便的。当时用的是军哥的LNMP命令行面板,由于站长是小菜,配置两次没成功,遂放弃。
这次受到启发和刺激就先用POST提交数据的方式来实现直播源的推送。
以下是播放器设置面板新增的内容:
数据以表单的方式提交,默认的服务端的PHP需要使用 $_POST[‘c’] 来接收直播源内容,附件参数是用来提交自定义的表单,用于服务扩展功能,举个例子服务端可以通过判断自定义的参数来决定是要覆盖写入还是追加写入txt。
直播源的推送格式最初计划只输出一个通用格式,考虑到减轻服务端编程压力,目前增加提供了 M3U 列表和百川影音的列表格式。
服务端举例
服务端的功能最好自行扩展,此处只是验证播放器接口的可用性,当然不嫌弃功能单一代码丑陋的话也可以直接拿去用。不要被本例束缚了。
接口 ├──── list.php ├──── list │ └── 10001.txt └──── receive.php
如上图文件结构,增加一个 receive.php 文件并写入以下内容。
<?php //* 黑鸟博客 * $strF = isset($_POST['c']) ? $_POST['c'] : ''; if($strF!==''){ $myfile = fopen("./list/10001.txt", "w") or die("Unable to open file!"); fwrite($myfile, $strF); fclose($myfile); } echo "完毕"; ?>
这段源码做的事情就是接收来自黑鸟播放器推送的内容,并以覆盖原内容的方式写入 10001.txt 内。在APP上依然通过 list.php 来读取列表。
以上linux服务器需要特别注意文件权限,否则可能无法读写文件,实在不懂就都设置 777 权限(不建议)。
大佬,我在电视上用百川影音和DIYP时,通过网络添加的节目源文件总是在关闭电视后被自动清空。如果没有关闭电视,只是退出后再次进入软件没有问题。
请问一下这是什么情况?有没有什么方法可以解决这个问题?通过本机地址从网络添加源对管理来说是比其他方法方便多了。
多谢
百川影音获取网络接口节目地址一直转圈圈,30秒后假死机的现象,按摇控器任意键提示无响应,是否关闭吗?这个怎么弄好呀?大神帮我弄弄吧,谢谢你们了!
接口地址挂了吧,复制出来在浏览器能打开?
我有一个问题请教,就是百川中的源可不可以不让别人看到,因为设置了密码,不想让人看到源内容
不可以,必须动软件代码。
大佬们谁知道,我在机顶盒和模拟器中都安装百川影音1.1.9.3,并且都自定义了直播源网络接口,但是只有模拟器中能同步到直播源,机顶盒同步不到。
等待自定义的源可以根据EPG选择节目可以回看,IPTV的源一周都可以回看了,但只能时移拉,而不能根据EPG进行回看。
APP遥控填写地址有点麻烦。