剪映製作好之後,需要將導出的是srt字幕,這個腳本將字幕拼接,整理成文章,然後用Ai潤色下,大大提供工作效率。
<?php
if($_FILES["subtitle"]["error"] == UPLOAD_ERR_OK&&isset($_FILES['subtitle'])) {
$subtitle = $_FILES["subtitle"]["tmp_name"];
$targetFolder = "uploads/"; // 指定目標文件夾
$targetFile = $targetFolder . $_FILES["subtitle"]["name"];
// move_uploaded_file($subtitle, $targetFile);
// 讀取SRT文件並拼接字幕
$subtitles = extractSRT($subtitle);
// 輸出拼接好的字幕
foreach ($subtitles as $subtitle) {
// echo "ID: " . $subtitle['id'] . "\n";
// echo "Time: " . $subtitle['start'] . " --> " . $subtitle['end'] . "\n";
echo $subtitle['content'] . "\n\n";
}
//echo "字幕文件上傳成功!";
} else {
// echo "字幕文件上傳失敗!";
}
// 讀取SRT文件並拼接字幕
function extractSRT($filename) {
// 打開SRT文件
$file = fopen($filename, "r");
// 初始化字幕數組
$subtitles = [];
// 逐行讀取文件內容
$subtitle = [];
while (($line = fgets($file)) !== false) {
// 移除行尾的換行符
$line = trim($line);
if ($line === "") {
// 空行表示一個字幕結束,將字幕數組加入到總字幕數組中
if (!empty($subtitle)) {
$subtitles[] = $subtitle;
$subtitle = [];
}
} elseif (is_numeric($line)) {
// 數字行表示字幕序號,存儲到字幕數組中
$subtitle['id'] = intval($line);
} elseif (strpos($line, "-->") !== false) {
// 時間戳行表示字幕時間,存儲到字幕數組中
$timestamps = explode(" --> ", $line);
$subtitle['start'] = $timestamps[0];
$subtitle['end'] = $timestamps[1];
} else {
// 非空行並且不是序號或時間戳行,表示字幕內容行,存儲到字幕數組中
if (!isset($subtitle['content'])) {
$subtitle['content'] = $line;
} else {
$subtitle['content'] .= " " . $line;
}
}
}
// 關閉文件句柄
fclose($file);
// 返回拼接好的字幕數組
return $subtitles;
}
?>
<html>
<head>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<meta charset="utf-8"></meta>
</head>
<body>
<div class="container">
<h2>上傳SRT字幕文件</h2>
<form action="./srt.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="subtitle">選擇字幕文件:</label>
<input type="file" class="form-control" id="subtitle" name="subtitle">
</div>
<button type="submit" class="btn btn-primary">上傳</button>
</form>
</div>
</body>
</html>