找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 3904|回复: 28

[iptv信源 资源分享或寻求] 以bestv切片为例,详细分析所谓的切片PHP输出!

[复制链接]
发表于 2023-5-27 02:22 | 显示全部楼层 |阅读模式
本帖最后由 友善的肥羊 于 2023-5-27 02:45 编辑

以下是分析结果,根据我自己写的bestv切片PHP代码得出(这个bestv切片代理确实是本人自己的哈,而且是最早发在论坛的版本,只不过后来有其他版本写法,所以请不要误会):补充一下为啥要记起来发这个,主要是两个点,看到论坛流出的切片,换行都是\r\n,其实这是windows的PHP写法,在unix和Linux中不是这样换行,所以使用类似于魔术方法/语法糖的PHP_EOL写法可以代替所有平台的换行代码语法,第二就是设置媒体头header("Content-Type: application/vnd.apple.mpegurl");这一句不加的话,你直接用浏览器打开,显示的是index.m3u8.html,实际上还是解析为html,因为你没有告诉浏览器媒体类型为hls文件信息,最后是指定输出的hls文件名为index.m3u8,这样的写法现阶段是可以比较完美的模拟hls媒体文件的写法!



  1. 以下是逐句详解的 PHP 代码:

  2. ```php
  3. <?php
  4. ```

  5. 这是 PHP 代码的开始标签,表示接下来的内容为 PHP 代码。

  6. ```php
  7. date_default_timezone_set("Asia/Shanghai");
  8. ```

  9. 设置默认时区为“Asia/Shanghai”。

  10. ```php
  11. $channel = empty($_GET['id']) ? "cctv16hd4k/15000000" : trim($_GET['id']);
  12. ```

  13. 检查 `$_GET['id']` 是否为空。如果为空,将 `$channel` 设置为字符串 "cctv16hd4k/15000000";否则,将 `$channel` 设置为 `$_GET['id']` 的值并去除两端的空白字符。

  14. ```php
  15. $stream = "http://223.111.117.11/liveplay-kk.rtxapp.com/live/program/live/{$channel}/";
  16. ```

  17. 定义 `$stream` 变量,将其设置为一个字符串,其中包含 `$channel` 的值。

  18. ```php
  19. $timestamp = substr(time(), 0, 9) - 7;
  20. ```

  21. 获取当前 Unix 时间戳,截取前 9 位,然后减去 7,将结果赋值给 `$timestamp`,这样做的目的是可控直播延迟,减去7代表延迟70s,bestv最低可以减去2延迟20s左右,不管怎样得保证服务器有此刻ts文件的存在。

  22. ```php
  23. $current = "#EXTM3U" . PHP_EOL;
  24. ```

  25. 定义 `$current` 变量,将其设置为字符串 "#EXTM3U",后面跟随一个换行符。

  26. ```php
  27. $current .= "#EXT-X-VERSION:3" . PHP_EOL;
  28. $current .= "#EXT-X-TARGETDURATION:3" . PHP_EOL;
  29. $current .= "#EXT-X-MEDIA-SEQUENCE:{$timestamp}" . PHP_EOL;
  30. ```

  31. 向 `$current` 变量追加字符串,其中包含 M3U8 文件的版本信息、目标时长和媒体序列号。

  32. ```php
  33. for ($i = 0; $i < 3; $i++) {
  34.     $timematch = $timestamp . '0';
  35.     $timefirst = date('YmdH', $timematch);
  36.     $current .= "#EXTINF:3," . PHP_EOL;
  37.     $current .= $stream . $timefirst . "/" . $timestamp . ".ts" . PHP_EOL;
  38.     $timestamp = $timestamp + 1;
  39. }
  40. ```

  41. 执行一个循环,迭代 3 次。在每次迭代中:

  42. 1. 将 `$timestamp` 的值后追加 '0',将结果赋值给 `$timematch`。
  43. 2. 将 `$timematch` 转换为 "YmdH" 格式的日期字符串,将结果赋值给 `$timefirst`。
  44. 3. 向 `$current` 变量追加媒体片段信息和 URL。
  45. 4. 将 `$timestamp` 增加 1。

  46. ```php
  47. header("Content-Type: application/vnd.apple.mpegurl");

  48. 设置 HTTP 响应头,指定媒体响应类型为苹果HLS流媒体格式文件

  49. header("Content-Disposition: attachment; filename=index.m3u8");
  50. ```

  51. 设置 HTTP 响应头,指定响应内容类型为 M3U8 文件,并指定文件名为 "index.m3u8"。

  52. ```php
  53. echo $current;
  54. ```

  55. 输出 `$current` 变量的值,即生成的 M3U8 文件内容。

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

结果就是都可以达到构造ts切片链接的目的  发表于 2023-5-27 11:08
回复gkend:不管是作为附件下载还是直接输出,播放器不管这套,它只会在没有加END后持续请求原PHP地址  发表于 2023-5-27 11:07
天津万事达的写个切片?  发表于 2023-5-27 10:58
header("Content-Type: application/vnd.apple.mpegurl"); 其他加的都是不应该的  发表于 2023-5-27 06:14
你对m3u8的理解有误,不应该是文件下载。别人说的非常对。  发表于 2023-5-27 06:12
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2023-5-27 02:48 来自手机 | 显示全部楼层
本帖最后由 fanmingming 于 2023-5-27 02:53 编辑

响应头定义成attachment浏览器会识别为你定义的指定文件名且作为附件下载,应该定义为inline。我之前在论坛应该有分享过类似写法。不过也是gpt教我的,看到很多大佬写的代码都很粗暴,直接输出m3u8格式的文本。只是不加前面那句的话,单纯attachment浏览器就会下载。不管是跳转还是切片都是这样的吧。使用浏览器在线看的话更建议x-mpegURL,因为装了hls插件的浏览器直接可以播放php代理的切片。

点评

根据苹果开发文档,application/x-mpegURL 或者 application/vnd.apple.mpegURL 都是可以的  详情 回复 发表于 2023-5-27 09:05
实际上播放器在播放完一个m3u8文件里面所有的内容后,如果没有#END。那么就会继续请求刚才的媒体地址,导致可以源源不断的生成动态的ts切片链接....  发表于 2023-5-27 03:10
safari手机端的话,H264直接就能看了,h265还是得借助软件/插件  发表于 2023-5-27 03:00
加了content type就是告诉浏览器它的格式是媒体hls文件格式,那样他就下载到的东西就是苹果hls文件,用safari也就没有了后缀html了。。。  发表于 2023-5-27 02:57
如果不加attachment默认就是直接在页面内输出文本内容,加了的话就是作为附件下载,并且附件的名字为filename,但没有指定文件类型的话,浏览器访问默认还是下载到的是html文件,这个可以用safari测试一下,加了Cont   发表于 2023-5-27 02:55
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-27 03:07 | 显示全部楼层
实际上播放器在播放完一个m3u8里面所有的内容后,如果没有#END。那么就会继续请求刚才的媒体地址,导致可以源源不断的生成动态的ts切片链接,这样切片PHP的目的就完成了

点评

没错,理论上所谓的代理仅仅是帮发起请求的客户端端构建了一下m3u8文件。  发表于 2023-5-27 03:12
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 07:30 来自手机 | 显示全部楼层
思考思考
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 09:05 来自手机 | 显示全部楼层
fanmingming 发表于 2023-5-27 02:48
响应头定义成attachment浏览器会识别为你定义的指定文件名且作为附件下载,应该定义为inline。我之前在论坛 ...

根据苹果开发文档,application/x-mpegURL 或者
application/vnd.apple.mpegURL 都是可以的
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 1 反对 0

使用道具 举报

发表于 2023-5-27 09:43 | 显示全部楼层
讨论这没有意义,搞到百事通新域名才是正事
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 10:47 | 显示全部楼层
我觉得很有意义,特别是想学PHP的菜鸟
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 11:08 | 显示全部楼层
结果就是都可以达到构造ts切片链接的目的
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 11:55 | 显示全部楼层
大佬,我看你的之前的直播源,现在都是在循环播放 一张图片+背景音乐,这个是怎么实现的?把图片循环切成ts片段吗?

点评

你去看看原视频地址,里面有每段ts的切片内容  发表于 2023-5-27 12:29
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 12:09 | 显示全部楼层
按照你这个改,不知道什么原因,TELViZO播放不了,之前的格式又可以正常播,求解,说格式不正确

点评

问题不大,不管是浏览器还是播放器都正常播放,你看看是不是代码错了  发表于 2023-5-27 14:15
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 13:03 | 显示全部楼层
感谢分享
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 16:52 | 显示全部楼层
大佬看了你的github最新的 bestv ip 好像有问题,只能放一个切片? 不是你代码的问题, 是这个ip有问题??

点评

不清楚,我也是用群里朋友提供的  发表于 2023-5-27 17:49
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-27 22:06 | 显示全部楼层
思考了。谢谢!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-7-9 13:27 来自手机 | 显示全部楼层
好好好好好好好
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-7-15 22:27 | 显示全部楼层
楼主威武!!!!!!!!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2025-4-27 18:50

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表