FFmpegPHP 是一个基于 PHP 和 FFmpeg 的视频转码切片工具,专门用于将各种格式的视频文件转换为 HLS (HTTP Live Streaming) 流格式,支持视频切片、截图生成和 GPU 加速等功能。
- 视频转码:将 MP4、AVI、MOV、WMV、FLV、MKV 等格式的视频转换为 HLS 流格式
- 视频切片:自动将视频切割成指定时长的 TS 片段文件
- M3U8 生成:自动生成 HLS 播放列表文件
- 视频截图:在指定时间点生成视频缩略图
- GPU 加速:支持 CUDA、DXVA2、D3D11VA、AMF 等多种 GPU 加速方式
- 多画质支持:支持原始画质、1080p、720p 等多种画质设置
- 转码记录:实时显示转码进度和历史记录
- 响应式界面:适配不同设备的访问
- PHP 7.0 或更高版本
- Windows 操作系统
- Web 服务器(如 Apache、Nginx、IIS 等)
- FFmpeg:必须安装并配置到系统 PATH 中,或在设置中指定完整路径
- GPU 驱动:如需使用 GPU 加速,需安装对应显卡的最新驱动
- 将项目文件解压到 Web 服务器的根目录
- 确保以下目录存在且具有写入权限:
vodoss/:待转码视频目录m3u8/:转码后输出目录logs/:日志文件目录
方法 1:将 FFmpeg 添加到系统 PATH 环境变量中
方法 2:在设置页面中指定 FFmpeg 的完整路径,例如:
- Windows:
C:/ffmpeg/bin/ffmpeg.exe
系统会自动创建默认配置文件 config.json,包含以下配置项:
{
"ffmpeg_path": "ffmpeg",
"input_dir": "./vodoss/",
"output_dir": "./m3u8/",
"base_url": "",
"segment_duration": 10,
"screenshot_time": 10,
"quality": "1080p",
"use_gpu": 0
}将需要转码的视频文件上传到 vodoss/ 目录(默认路径)。
支持的视频格式:MP4、AVI、MOV、WMV、FLV、MKV
访问 settings.php 页面,配置以下参数:
- 基础地址:生成的 M3U8 文件中使用的基础 URL
- 切片时长:每个 TS 片段的时长(秒),默认 10 秒
- 截图时间点:生成截图的时间点(秒),默认 10 秒
- 画质选择:选择输出视频的画质(原始、1080p、720p)
- 使用 GPU 加速:是否使用 GPU 进行转码加速
- FFmpeg 路径:指定 FFmpeg 的执行路径
- 目录设置:设置输入输出目录
- 访问
transcode.php页面 - 在服务器文件列表中找到需要转码的视频文件
- 点击 "开始转码" 按钮
- 系统会自动跳转到
history.php页面查看转码进度
转码完成后,可以在以下位置查看结果:
- 输出目录:
m3u8/目录下会生成对应视频的子目录 - 播放文件:
m3u8/[视频名称]/index.m3u8 - 视频片段:
m3u8/[视频名称]/*.ts - 视频截图:
m3u8/[视频名称]/index.jpg
系统提供了内置的播放器,访问:
open/m3u8/目录查看播放示例- 或使用支持 HLS 格式的播放器(如 VLC、DPlayer 等)
- 显示系统状态(FFmpeg 安装状态、GPU 检测状态)
- 显示版本信息
- 提供使用说明
- 显示待转码目录路径
- 列出服务器上的视频文件
- 提供转码参数设置和开始转码功能
- 显示当前转码任务的实时进度
- 显示已完成的转码记录
- 提供转码结果的查看和管理
- 配置转码参数(切片时长、截图时间、画质等)
- 配置 FFmpeg 路径
- 配置目录设置
- 配置 GPU 加速选项
- 文件检测:检测上传的视频文件是否支持
- 参数设置:根据用户配置设置转码参数
- FFmpeg 调用:使用 FFmpeg 命令行工具进行视频处理
- 后台执行:转码过程在后台执行,不阻塞用户操作
- 结果处理:生成 M3U8 播放列表和视频截图
- 记录更新:更新转码记录和状态
系统使用的主要 FFmpeg 命令示例:
# 视频转码切片(带 GPU 加速)
ffmpeg -hwaccel cuda -i input.mp4 -crf 23 -vf scale=1920:1080 -c:v h264_nvenc -hls_time 10 -hls_list_size 0 -hls_segment_filename output_%03d.ts output.m3u8
# 生成视频截图
ffmpeg -i input.mp4 -ss 10 -vframes 1 output.jpg解决方案:
- 确保 FFmpeg 已正确安装
- 检查系统 PATH 环境变量是否包含 FFmpeg 路径
- 在设置页面中指定 FFmpeg 的完整路径
解决方案:
- 确保显卡驱动已更新到最新版本
- 检查显卡是否支持对应的加速方式
- 确认 FFmpeg 是否编译了对应 GPU 加速的支持
解决方案:
- 检查视频文件是否损坏
- 检查磁盘空间是否充足
- 查看日志文件获取详细错误信息
解决方案:
- 启用 GPU 加速
- 选择较低的画质设置
- 增加切片时长
- 开发环境:PHP 7.4 + Windows 10 + FFmpeg 5.0+
- 性能考量:视频转码是 CPU/GPU 密集型操作,请根据服务器配置合理安排转码任务
- 磁盘空间:转码过程会生成临时文件,请确保磁盘空间充足
- 权限设置:确保相关目录具有写入权限
- 安全风险:请勿转码来源不明的视频文件,避免版权问题
- 系统兼容性:当前版本主要针对 Windows 系统优化
- 初始版本发布
- 支持基本的视频转码切片功能
- 支持 GPU 加速
- 提供完整的 Web 管理界面
本项目采用 MIT 许可证,详见 LICENSE 文件。
如有问题或建议,欢迎联系我们:
- 项目地址:https://github.com/OsGits/FFmpegPHP
- 技术支持:请查看项目文档和日志文件
FFmpegPHP - 让视频转码变得简单高效!