先實作PHP語言裡分割視訊再合成視訊邏輯
1 把大視訊或大檔案根據固定大小分割成多塊
// 分割的塊編号
$i = 0;
// 要分割的檔案
$fp = fopen("upload.mp4", "rb");
// 記錄分割後檔案資訊
$file = fopen("upload.txt", "a");
while (!feof($fp)) {
$handle = fopen("video/upload.{$i}.mp4", "wb");
// 切割檔案塊設定為5M
fwrite($handle, fread($fp, 5242880));
fwrite($file, "video/upload.{$i}.mp4\r\n");
fclose($handle);
unset($handle);
$i++;
}
fclose($fp);
fclose($file);
echo "complete";
2 讀取分割後檔案資訊合并成視訊
// 讀取分割後檔案資訊
$upload = file_get_contents("upload.txt");
$list = explode("\r\n", $upload);
// 分割檔案合并後檔案名
$fp = fopen("common.mp4", "ab");
foreach ($list as $value) {
if (!empty($value)) {
$handle = fopen($value, "rb");
fwrite($fp, fread($handle, filesize($value)));
fclose($handle);
unset($handle);
}
}
fclose($fp);
// 删除分割檔案
foreach ($list as $value) {
if (!empty($value)) {
unlink($value);
}
}
// 删除記錄分割檔案資訊
unlink("upload.txt");
echo "success";
知道了如何實作視訊的切割并合并後,前後端分離開發中,大檔案大視訊上傳的步驟
前端工作:
- 前端根據要求分割大視訊;
- 把分割好的視訊傳到伺服器;
- 上傳伺服器的視訊路徑集請求伺服器合并視訊;
- 請求合并視訊傳回的路徑就是最終視訊上傳的路徑。
後端工作:
- 接收前端傳過來的視訊,并傳回視訊存儲路徑;
- 合并視訊,删除合并前檔案,并傳回合并後視訊路徑。