IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP下载m3u8视频及解析下载ts资源文件 -> 正文阅读

[PHP知识库]PHP下载m3u8视频及解析下载ts资源文件

上一篇写了PHP生成合并ts脚本,后来又想直接下载m3u8里面的ts,又码了一段。

<?php
/*
 * PHP下载m3u8视频和及解析下载ts资源文件
 *
 * @file m3u8download.php
 *
 * @author RoadToTheExpert
 * @site https://blog.csdn.net/roadtotheexpert
 * @version 简单版
 */

function echon($s) {
	echo $s . PHP_EOL;
}

function m3u8download($m3u8_url, $ts_url_dir, $out_dir) {
	$m3u8_data = @file_get_contents($m3u8_url);
	if(empty($m3u8_data)) {
		echon('获取m3u8数据失败:' . $m3u8_url );
		return;
	}

	preg_match_all('/.*\.ts/', $m3u8_data, $matches);
	if(empty($matches)) {
		echon('获取ts数据失败');
		return;
	}

	if( !file_exists($out_dir) ) {
		if( !mkdir( $out_dir ) ) {
			echon('创建目录失败:'.$out_dir);
			return;
		}
	}

	$ts_url = '';
	$ts_save_to = $out_dir . '\big.ts';

	foreach ($matches['0'] as $key => $val) {

		if( strpos($val, 'http') === 0 ) { //如果ts是http开始
			$ts_url = $val;
		} else if( $ts_url_dir == 'auto' ) { //等于auto则取m3u8的dirname
			$ts_url = dirname($m3u8_url) + '/' + $val;
		} else {
			//如果ts是basename,且与m3u8不在同一目录,你需要手动赋值$ts_url_dir
			$ts_url = $ts_url_dir + '/' + $val;
		}

		$ts_dat = @file_get_contents($ts_url);
		if( !empty($ts_dat) ) {
			//合成大ts文件,可能会报内存不足
			//file_put_contents($ts_save_to, $ts_dat, FILE_APPEND);

			$ts_save_to = $out_dir . '\\' . sprintf('%05d', $key) . '.ts';
			file_put_contents($ts_save_to, $ts_dat);

			echon( $val . ' [SaveTo] ' . $ts_save_to );
		} else {
			echon( 'Faile to fetch :  ' . $val );
		}
	}

}


//m3u8的url
$m3u8_url = 'https://vod.xxx.com/2021/1000kb/hls/index.m3u8';
//m3u8里面的ts地址是否需加前缀
$ts_url_dir = 'auto';
//已有目录。
$out_dir1 = 'E:\1';
//将要新建的目录。
$out_dir2 = '\ddr';

m3u8download($m3u8_url, $ts_url_dir, $out_dir1 . $out_dir2 );

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 13:54:33  更:2021-07-22 13:55:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 0:59:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码