当前位置:首页 > PHP

php ffmpeg实现直播

2026-02-16 01:49:03PHP

PHP 结合 FFmpeg 实现直播

环境准备

确保服务器已安装 FFmpeg,可通过命令行检查版本:

ffmpeg -version

PHP 需开启 shell_execexec 函数权限,用于调用 FFmpeg。

推流到 RTMP 服务器

使用 FFmpeg 将视频源推流到 RTMP 服务器(如 Nginx-RTMP 或 SRS):

$ffmpegPath = '/usr/bin/ffmpeg'; // FFmpeg 路径
$inputFile = 'input.mp4';        // 输入文件或设备(如摄像头)
$rtmpUrl = 'rtmp://server/live/stream_key'; // RTMP 地址

$command = "$ffmpegPath -re -i $inputFile -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f flv $rtmpUrl";
shell_exec($command);

参数说明:

php ffmpeg实现直播

  • -re:以输入源原生帧率读取。
  • -c:v libx264:使用 H.264 编码视频。
  • -preset ultrafast:低延迟编码。
  • -f flv:输出 FLV 格式兼容 RTMP。

处理实时摄像头流

若从摄像头采集,需指定设备(如 /dev/video0)并调整参数:

$command = "$ffmpegPath -f v4l2 -i /dev/video0 -vf format=yuv420p -c:v libx264 -preset ultrafast -f flv $rtmpUrl";

生成 HLS 直播流

将直播流切片为 HLS 格式供网页播放:

php ffmpeg实现直播

$hlsPath = '/var/www/html/live/stream.m3u8';
$command = "$ffmpegPath -i $rtmpUrl -c:v copy -c:a copy -f hls -hls_time 2 -hls_list_size 5 $hlsPath";

参数说明:

  • -hls_time 2:每个切片 2 秒。
  • -hls_list_size 5:保留最近 5 个切片。

网页播放器集成

在 HTML 中使用 HLS.js 或原生 video 标签播放:

<video controls>
  <source src="http://yourdomain.com/live/stream.m3u8" type="application/x-mpegURL">
</video>

错误处理与日志

捕获 FFmpeg 执行状态和输出:

$output = [];
$returnCode = 0;
exec("$command 2>&1", $output, $returnCode);
if ($returnCode !== 0) {
    error_log("FFmpeg 错误: " . implode("\n", $output));
}

注意事项

  • 推流前测试 FFmpeg 命令能否在终端单独运行。
  • 确保服务器带宽和 CPU 足够处理实时编码。
  • 对于长时间直播,建议用 Supervisor 监控 FFmpeg 进程。

标签: phpffmpeg
分享给朋友:

相关文章

php实现伪静态

php实现伪静态

PHP 实现伪静态的方法 伪静态(URL Rewrite)是一种将动态URL转换为看似静态URL的技术,提升SEO友好性和用户体验。以下是几种常见的实现方式: 使用 Apache 的 mod_rew…

php 实现多继承

php 实现多继承

在PHP中,原生不支持多继承,但可以通过以下几种方法模拟实现类似多继承的功能: 使用 trait Trait是PHP 5.4引入的特性,允许在类中复用代码片段,可以视为一种轻量级的继承机制。一个类可…

php 自动登录实现

php 自动登录实现

自动登录的实现方法 PHP中实现自动登录通常涉及使用Cookie存储用户凭证,并在用户再次访问时自动验证。以下是几种常见的方法: 使用Cookie存储用户凭证 用户登录成功后,生成一个唯一的Tok…

php 实现下载apk

php 实现下载apk

使用 PHP 实现 APK 文件下载 通过 PHP 实现 APK 文件下载的核心是设置正确的 HTTP 头信息,并输出文件内容。以下是一个完整的实现方法。 设置 HTTP 头信息 确保客户端正确识别…

php实现登陆功能

php实现登陆功能

创建数据库表 设计用户表存储登录信息,通常包含字段如 id、username、password(需哈希加密)、email 等。示例 SQL: CREATE TABLE users ( i…

php实现验证码识别

php实现验证码识别

PHP 验证码识别方法 使用 Tesseract OCR 进行识别 Tesseract 是一个开源的 OCR 引擎,可以用于识别验证码。需要先安装 Tesseract 并配置 PHP 扩展。 安装…