You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NextJS中使用Backblaze与next-video时出现‘Source not supported’错误

问题描述

访问页面时,next-video组件抛出错误,但视频URL在Next.js原生<video>标签中可正常播放。已按指南配置next.config.mjs,且能成功上传视频至Backblaze,但无法通过next-video展示。

错误截图:
错误截图

当前next.config.mjs配置:

import { withNextVideo } from "next-video/process";
/** @type {import('next').NextConfig} */
const nextConfig = {
  images: {
    remotePatterns: [
      {
        hostname: "s3.us-east-005.backblazeb2.com",
      },
    ],
  },
};

export default withNextVideo(nextConfig, {
  provider: "backblaze",
  providerConfig: {
    backblaze: {
      endpoint: "backblaze-endpoint",
      bucket: "backblaze-bucket-name",
      accessKeyId: "backblaze-access-key-id",
      secretAccessKey: "backblaze-secret-access-key",
    }
  }
});

页面组件使用方式:

"use client";

import React from "react";
import Video from "next-video";

const VideoComponent = () => {
  return (
    <Video
      src={
        "my-video-url"
      }
    />
  );
};

export default VideoComponent;
解决方案

以下是几个排查和修复方向:

1. 修正Backblaze Endpoint配置

你当前的endpoint是占位符"backblaze-endpoint",需要替换为Backblaze存储桶的实际Endpoint。Backblaze的Endpoint格式为:

https://s3.<区域ID>.backblazeb2.com

或者使用带桶名的格式:

https://<你的桶名>.s3.<区域ID>.backblazeb2.com

比如你的存储桶在us-east-005区域,正确的Endpoint示例:

endpoint: "https://s3.us-east-005.backblazeb2.com"

2. 调整next-video的src传入方式

next-video并非直接接收完整远程URL,而是需要传入视频在存储桶内的相对路径,组件会通过你配置的Backblaze provider自动拼接完整访问地址。示例:

<Video src="/videos/your-video-file.mp4" />

3. 配置Backblaze存储桶的CORS规则

原生<video>能播放但next-video报错,大概率是CORS配置问题。登录Backblaze控制台,找到目标存储桶,添加以下CORS规则:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>https://你的网站域名</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
        <ExposeHeader>Content-Range</ExposeHeader>
        <ExposeHeader>Accept-Ranges</ExposeHeader>
    </CORSRule>
</CORSConfiguration>

允许你的域名发起GET请求,并暴露必要响应头,确保next-video能正确加载视频流。

4. 验证版本兼容性

确保next-video版本与当前Next.js版本兼容,比如Next.js 14需搭配next-video v1.0+版本。可执行命令升级至最新版:

npm install next-video@latest

5. 检查密钥与存储桶权限

确认配置的accessKeyId和secretAccessKey拥有存储桶的读取权限,同时存储桶内的视频文件需设置为公开可读(或通过密钥签名访问,next-video会自动处理签名逻辑)。

内容的提问来源于stack exchange,提问作者Xun Ruan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:15:11