当前位置:首页 > 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);

参数说明:

  • -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 格式供网页播放:

$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 进程。

php ffmpeg实现直播

标签: phpffmpeg
分享给朋友:

相关文章

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="log…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…