PHP YouTube字幕转srt格式

 

复制代码
<?php
function formatNum(int $time)
{
    if ($time < 10) {
        return "0{$time}";
    }
    return $time;
}
function changeTimeType(int $num): string
{
    $millisecond = substr($num, -3);
    $temp = intval($num / 1000);
    $second = formatNum($temp % 60);
    $temp = intval($temp / 60);
    $minute = formatNum($temp % 60);
    $temp = intval($temp / 60);
    $hour = formatNum($temp % 60);
    return "{$hour}:{$minute}:{$second},{$millisecond}";
}

function transSingleSubtitle($sequence,$start,$end,$subtitle): string
{
    return "{$sequence}\n{$start} --> {$end}\n{$subtitle}\n\n";
}

function transSubtitle($subtitle): string
{
    $key = 1;
    $srt = '';
    foreach ($subtitle as $v) {
        $start = changeTimeType($v['tStartMs']);
        $end = changeTimeType($v['tStartMs'] + $v['dDurationMs']);
        $content = trim($v['segs'][0]['utf8']);
        $srt .= transSingleSubtitle($key, $start, $end, $content);
        $key++;
    }
    return $srt;
}

$file = 'json来源';
$subtitle = json_decode(file_get_contents($file), true);
$subtitle = $subtitle['events'];
$srt = transSubtitle($subtitle);
file_put_contents('保存路径.srt', $srt);
复制代码

转换后: 

 

 

posted @   _迷途  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示