将 m3u8 播放列表文件转换为 XML 列表

机器人

我想知道是否有任何方法可以将M3U8播放列表转换为XML使用 Linux shell 或 PHP?例如。

M3U8 播放列表文件

#EXTM3U
#EXTINF:-1 tvg-name="Canal 26" tvg-logo="https://demo.com/xDjOUuz.png" group-title="Argentina",
https://demolivevideo1.com/playlist.m3u8
#EXTINF:-1 tvg-name="LN"  tvg-logo="https://demo2.com/vJYzGt1.png" group-title="Argentina",
https://demolivevideo2.com/playlist.m3u8
#EXTINF:-1 tvg-name="ABC" tvg-logo="https://demo3.com/5CVl5EF.png" group-title="Australia",
https://demolivevideo3.com/playlist.m3u8

转换后的 XML 文件结构。

<?xml version="1.0" encoding="utf-8"?>
<data>
  <channels>
    <name>Canal 26</name>
    <banner>https://demo.com/xDjOUuz.png</banner>
    <url>https://demolivevideo1.com/playlist.m3u8</url>
    <country>Australia</country>
  </channels>
  <channels>
    <name>LN</name>
    <banner>https://demo.com/xDjOUuz.png</banner>
    <url>https://demolivevideo2.com/playlist.m3u8</url>
    <country>Australia</country>
  </channels>
  <channels>
    <name>ABC</name>
    <banner>https://demo.com/xDjOUuz.png</banner>
    <url>https://demolivevideo3.com/playlist.m3u8</url>
    <country>Australia</country>
  </channels>
</data>
杰克·弗莱廷

这有点(实际上很多)hack(一些字符串替换和拆分),但它应该能让你到达那里,或者足够接近(在 PHP 中):

$m3u = '[your playlist above]
';            

$newFile = '<?xml version="1.0" encoding="utf-8"?>
<data></data>
';   

$doc = new DOMDocument();
$doc->loadXML($newFile);
$xpath = new DOMXpath($doc);
$destination = $xpath->query('/data');

#some of the steps next can be combined, but I left them separate for readability
$step1 = explode('#EXTINF:-1 ',str_replace('#EXTM3U','',$m3u));
$step2 = array_slice($step1,1);

foreach ($step2 as $item) {
    $step3 = str_replace('" ','" xxx',explode(',', $item));
    $step4 = explode('xxx',$step3[0]);
    $link = explode(',',$item)[1];
    $params = [];
    foreach ($step4 as $step)
       {
       $param = explode('=',$step)[1];
       array_push($params,$param);
       }

    #create you <channels> template
    $chan = "
    <channels>
    <name>{$params[0]}</name>
    <banner>{$params[1]}</banner>
    <url>{$link}</url>
    <country>{$params[2]}</country>  
    </channels>";

    $template = $doc->createDocumentFragment();
    $template->appendXML($chan);
    $destination[0]->appendChild($template);
       
};

echo $doc->saveXml();

这应该是您的预期输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将音乐文件列表转换为播放列表的最简单方法是什么

如何使用ffmpeg加密AES-128 HLS m3u8播放列表?

如何镜像或 CDN 一个 m3u8 流播放列表?

解密不使用IV的AES-128加密的M3U8播放列表

Video.js,如何动态更新m3u8播放列表

如何从iframe嵌入代码获取m3u8播放列表

如何将音频播放列表中的文件转换为一个大音频文件?

如果未找到ENDLIST键,m3u8播放列表是否支持seekto功能

如何在字符串而不是m3u8播放列表中使用loadSource()?

chrome中使用vue的hls.js不会更新m3u8播放列表

如何多次将同一片段包含到m3u8播放列表中?

ffmpeg:如何在 m3u8 播放列表中包含动态路径?(播放列表和片段位于不同的目录中。)

将频道编号添加到M3U播放列表

将AdWords XML文件转换为C#列表

从ts文件列表创建m3u8文件

将HLS(m3u8)转换为MP4

如何使用FFMPEG创建持续时间固定的m3u8播放列表和mpeg-ts块?

生成M3U8 HLS播放列表时,我应该包括尚不存在的媒体片段吗?

PHP-如何通过流URL的公共部分匹配来自两个m3u8播放列表的流?

使用ffmpeg在m3u8列表中选择下载分辨率

我可以将多个m3u8文件合并为一个m3u8文件吗?

在Variant live m3u8文件中,.ts文件在具有视频内容的不同比特率播放列表中是否具有相同的序列号

swift无法将.m3u8文件保存到图库

将包含子节点列表的 xml 转换为单独的 xml

如何将整个YouTube播放列表下载为单个mp3文件?

如何将<ul>播放列表中的不同MP3文件链接到相同的<audio>标签?

在播放实时流时,将参数附加到每个m3u8和ts文件

如何在批处理脚本中找到m3u播放列表文件大小?

将M3U8转换为MKV时,如何从HLS段创建章节?