天天看點

大視訊大檔案上傳實作邏輯

先實作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";
           
大視訊大檔案上傳實作邏輯

知道了如何實作視訊的切割并合并後,前後端分離開發中,大檔案大視訊上傳的步驟

前端工作:

  1. 前端根據要求分割大視訊;
  2. 把分割好的視訊傳到伺服器;
  3. 上傳伺服器的視訊路徑集請求伺服器合并視訊;
  4. 請求合并視訊傳回的路徑就是最終視訊上傳的路徑。

後端工作:

  1. 接收前端傳過來的視訊,并傳回視訊存儲路徑;
  2. 合并視訊,删除合并前檔案,并傳回合并後視訊路徑。