日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php代理m3u8,PHP实现m3u8并发下载

發(fā)布時(shí)間:2025/3/12 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php代理m3u8,PHP实现m3u8并发下载 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

直接上代碼

//php下載m3u8文件

$url = $argv['1'];

if(!file_exists('./tmp/')) {

if(!mkdir('./tmp/')) {

die('請(qǐng)手動(dòng)在當(dāng)前目錄創(chuàng)建tmp目錄');

}

}

$indexPage = file_get_contents($url);

preg_match_all('/.*.ts/', $indexPage, $matches);

if(empty($matches)) {

die('m3u8 文件格式錯(cuò)誤');

}

go(function() use($matches) {

$chan = new chan(100); //最大并發(fā)數(shù)

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

if(file_exists('./tmp/'.$key.'.ts')) {

continue;

}

$chan->push('xx');

go(function() use($key, $value, $chan) {

echo "

Add task:".$key;

while(1) {

$rs = co_curl($value);

if(strlen($rs) > 0) {

file_put_contents('./tmp/'.$key.'.ts', $rs);

break;

}

}

echo "

Task ok:".$key;

$chan->pop();

});

}

//確保所有下載已經(jīng)完成

for($i = 0; $i < 100; $i++) {

$chan->push('over');

}

//合并文件

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

file_put_contents('out.mp4', file_get_contents('./tmp/'.$key.'.ts'), FILE_APPEND);

unlink('./tmp/'.$key.'.ts');

}

echo "

下載完成,轉(zhuǎn)換成功 (out.mp4)";

});

function co_curl($url, $cookies = '', $data = array(), $userHeaders = array(), $retJson = 0)

{

while(1) {

$urlInfo = parse_url($url);

$domain = $urlInfo['host'];

if($urlInfo['scheme'] == 'https') {

$port = 443;

$ssl = true;

} else {

$port = isset($urlInfo['port']) ? $urlInfo['port'] : 80;

$ssl = false;

}

$filename = $urlInfo['path'];

$filename .= isset($urlInfo['query']) ? '?' . $urlInfo['query'] : '';

$cli = new SwooleCoroutineHttpClient($domain, $port, $ssl);

$headers = [

'Host' => $domain,

"User-Agent" => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',

'Accept' => 'text/html,application/xhtml+xml,application/xml',

'Accept-Encoding' => 'gzip',

];

if ($userHeaders) {

$headers = array_merge($headers, $userHeaders);

$headers = $userHeaders;

}

if ($cookies) {

$headers['Cookie'] = $cookies;

}

$cli->setHeaders($headers);

$cli->set(['timeout' => 60]);

if ($data) {

if($data == 'post') {

$data = '';

}

$cli->post($filename, $data);

} else {

$cli->get($filename);

}

$body = $cli->body;

$cli->close();

if($cli->statusCode < 1 || ($retJson && empty(json_decode($body, true)))) {

// echo "

status code:" . $cli->statusCode;

// echo "

body: ".$body;

// echo "

retry...";

} else {

return $body;

}

}

}

總結(jié)

以上是生活随笔為你收集整理的php代理m3u8,PHP实现m3u8并发下载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。