发布于: -/最后更新: -/6 分钟

零压力搭建视频站!Ubuntu 服务器 + Cloudflare Pages 全自动 DASH 视频部署教程

摘要

本方案利用 Ubuntu 服务器运行 FFmpeg 进行视频转码,解决本地电脑配置低的问题。通过 Cloudflare Pages 存储视频,使用 Wrangler 工具一键部署。流程包括安装 FFmpeg、后台转码 DASH 格式、配置 Cloudflare API 以及增量上传。最终实现浏览器流畅流式播放,不占本地内存,操作简单。

担心本地电脑配置低、跑 FFmpeg 转码卡死?不想每次新建项目折腾?这套纯服务器命令行 + 一键部署方案完美解决所有问题:全程在 Ubuntu 服务器运行,不占本地内存,转码稳定不中断;一个 Cloudflare Pages 项目存放所有视频,增量上传超快,最终实现浏览器流畅流式播放,新手也能一次搞定!

整套方案核心优势

  1. 解放本地电脑:所有转码操作在 Ubuntu 服务器完成,不占用电脑内存、不卡顿

  2. 全自动转码:一条命令后台运行,断开服务器连接也能继续转码

  3. 单项目存无限视频:无需新建 Pages 项目,按文件夹分类即可

  4. 增量上传:仅上传新增 / 修改文件,速度快、省流量

  5. 合规无忧:切片大小≤18MB,完全符合 Cloudflare 单文件 25MB 限制

  6. 一键播放:前端两行代码,浏览器直接流式播放


一、服务器准备:一键安装 FFmpeg(必备转码工具)

所有 Ubuntu 版本通用,自动集成 x264/x265 核心编码器,全程无手动配置!

打开服务器终端,逐行执行命令:

Bash
# 1. 更新软件源(必做,防止安装失败)
sudo apt update -y

# 2. 一键安装完整版FFmpeg
sudo apt install ffmpeg -y

验证安装是否成功

执行以下命令,出现版本信息和编码器即为成功:

Bash
# 查看FFmpeg版本
ffmpeg -version

# 验证核心编码器(必须有输出结果)
ffmpeg -encoders | grep x264
ffmpeg -encoders | grep x265
blog image
点击查看大图
blog image

二、视频 DASH 转码:后台稳定运行(断开连接也不中断)

我们采用nohup命令后台转码,即使关闭服务器终端,转码任务也会持续执行;且自动切片大小≈18MB,完美符合 Cloudflare 限制。

1. 规划视频文件夹结构(关键!)

一个 Pages 项目存放所有视频,每个视频独立一个文件夹,结构如下:

纯文本
my-videos/        # 总根目录(最终上传到Pages)
├── video1/       # 第一个视频文件夹
├── video2/       # 第二个视频文件夹
└── video3/       # 新增视频直接新建文件夹
可以用mkdir命令实现

2. 执行转码命令

进入你需要转码的视频所在目录,执行这条终极命令:

Bash
nohup ffmpeg -i 你要转码的视频.mp4 -map 0 -c copy -f dash -seg_duration 4 -use_template 1 -use_timeline 1 manifest.mpd > nohup.out 2>&1 &
转码完成是这样的
点击查看大图
转码完成是这样的

命令说明

  • nohup + 末尾&:后台运行,关闭终端不中断

  • -seg_duration 4:切片 4 秒,单个切片≈18MB,符合 CF 限制

  • 转码完成后,文件夹内会生成:manifest.mpd + init.mp4 + 多个.m4s分片文件

  • 转码完成后,一定不要忘记删除原始.mp4,即"你要转码的视频.mp4",直接用rm命令


三、服务器部署:一键安装 Node.js + Wrangler

不用本地电脑操作,纯服务器命令行上传文件到 Cloudflare Pages,先安装依赖工具:

方法 1:官方源安装 Node.js 18(推荐,稳定无报错)

Bash
# 1. 安装基础依赖
sudo apt update && sudo apt install -y curl git

# 2. 安装Node.js 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# 3. 验证版本
node -v  # ≥v20.x即可
npm -v

方法 2:NVM 安装(解决权限问题,服务器首选)

Bash
# 安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc

# 安装并启用Node 18
nvm install 18
nvm use 18
nvm alias default 18

全局安装 Wrangler(Cloudflare 官方部署工具)

Bash
# 安装最新版Wrangler
npm install -g wrangler@latest

# 验证安装
wrangler -v  # 输出版本号即为成功

四、无界面登录 Cloudflare(服务器专用)

服务器没有浏览器,用API 令牌登录,一步配置,永久生效!一劳永逸!

1. 本地电脑获取凭证

  1. 打开 Cloudflare 控制台 → 右上角头像 → My Profile

  2. 左侧 API TokensCreate Token

  3. 选择模板:Edit Cloudflare Workers → 继续 → 生成令牌

  4. 复制令牌(仅显示一次)+ 复制你的Account ID

    blog image
    点击查看大图
    blog image

2. 服务器配置永久登录

Bash
# 写入环境变量(重启服务器依然有效)
echo 'export CLOUDFLARE_API_TOKEN="你的API令牌"' >> ~/.bashrc
echo 'export CLOUDFLARE_ACCOUNT_ID="你的Account ID"' >> ~/.bashrc
source ~/.bashrc

# 验证登录(显示账号信息即为成功)
wrangler whoami

五、创建 Pages 项目 + 全自动增量上传

1. 第一次使用:创建 Pages 项目

进入你的视频总目录,执行命令创建项目(项目名自定义):

Bash
wrangler pages project create my-videos #分支默认选main

2. 核心:上传 / 更新视频(无限次使用)

这是你以后唯一需要执行的命令

Bash
wrangler pages deploy ./ --project-name=my-videos --branch=main

上传优势(重点!)

  • ✅ 第一次:全量上传所有文件

  • ✅ 第二次及以后:只上传新增 / 修改的文件

  • ✅ 不变的文件:不上传、不浪费流量、速度极快

  • ✅ 直接覆盖更新,无需手动删除旧文件


六、浏览器流式播放:两行代码搞定(使用自定义域名)

上传并绑定自定义域名后,直接用 dash.js 播放,无需播放器软件,浏览器原生支持!

  1. 引入 CDN 播放器库

在 HTML 的 <body> 中添加:

HTML
<script src="https://cdn.dashjs.org/latest/dash.all.min.js"></script>
  1. 嵌入视频播放器

重要:请将 src 替换为你自己的自定义域名地址,不要使用默认的 pages.dev 地址。

HTML
<video
data-dashjs-player
src="https://video.你的域名.com/video1/manifest.mpd"
controls
autoplay
width="100%">
</video>

播放地址规则(使用自定义域名)

https://你的自定义域名/视频文件夹名/manifest.mpd

示例:

https://video.abc123.com/travel-vlog/manifest.mpd


超简短总结(新手必看)

  1. 服务器装 FFmpeg → 一条命令后台转码视频

  2. 每个视频单独建文件夹,统一存放在总目录

  3. 装 Wrangler 登录 Cloudflare

  4. 一条命令增量上传到 Pages

前端两行代码,浏览器直接流畅播放

注:如果您的服务器内存不足以运行Wrangler上传,可以直接把整个文件夹打包(zip -r my-videos.zip ./*),下载到电脑本地后直接上传压缩包至pages(创建部署)。在视频目录下用python3 -m http.server 8888开启临时下载服务后,直接访问http://你的服务器公网IP:8888

全程不占本地电脑内存,一个 Pages 项目存无数视频,新增视频只需要:上传视频到目录→转码→新建文件夹→执行上传命令,零难度!

正文结束
更新Cookie偏好设置