Download the PHP package xiaosongshu/rtmp_server without Composer

On this page you can find all versions of the php package xiaosongshu/rtmp_server. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package rtmp_server

rtmp_server

简介

一个使用纯php开发的rtmp直播服务器,支持rtmp协议推流,rtmp拉流,支持flv格式拉流,可以使用http或者ws协议拉流。

安装

环境配置

本项目使用php8.1,建议新手使用phpstudy这个集成环境,一键搞定环境搭建工作。
或者使用本项目提供的docker环境,在本项目根目录下命令行执行以下命令:

本项目自带的docker配置已经集成了php相关扩展和ffmpeg。
本项目默认使用三个端口:

开启服务

进入本项目的根目录,在命令行执行以下命令:

关闭服务

windows系统

linux系统

推流

我自己调试使用的OBS,使用方法可以参考 网上教程, OBS工具下载
你也可以使用ffmpeg工具,命令如下

命令详解

拉流

播放工具可以使用:
VLC打开网络串流地址
ffplay
本项目提供网页播放,直接使用浏览器打开index.html即可,访问地址 http://127.0.0.1:80/index.html
本项目提供网页播放,直接使用浏览器打开play.html即可,访问地址 href="http://127.0.0.1:80/play.html

延迟问题

在理想状态的情况下测试,延迟在1秒以内。理想状态就是:直播服务器和推流,拉流都在同一台电脑,减少了网络波动的影响。
另外,如果使用浏览器播放,某些浏览器如果切换到后台,因为节能的关系,浏览器不会播放直播,当浏览器切换到前台才会接着上一次的位置重新播放,这样子延迟 就相当高了。
当然了如果服务端处理器性能拉胯,延迟也会很高,因为直播服务很耗性能的。

关于对hls协议的支持

本项目非常抱歉没有实现对hls的支持,但是提供了一个解决办法,使用ffmpeg工具对协议的转换,以上面的rtmp://127.0.0.1/a/b流为例,本项目默认将 hls协议的文件保存在hls目录下,所以你需要在项目根目录手动创建一个/a/目录。然后在命令行执行以下命令即可完成rtmp协议转换为hls协议。

若需要退出协议转换,请在命令行输入q即可退出。

命令详解

直播代理转发服务

本项目提供直播转发服务,使用多进程转发音视频数据。因为如果所有的播放器都接入到主进程,一旦播放器客户端数量上升到一定数量级后,只靠一个进程处理延迟会很高。 所以加入了子进程转发数据的服务。开启子进程转发服务后,播放器客户端可以接入到子进程。

操作方法

启动主进程服务

启动子进程服务

子进程转发的是flv数据流。子进程可以设置一个flv的端口,不要和主进程server.php一样。你可以开启多个子进程转发,每一个子进程的端口都不一样。你的播放器 可以接入子进程的服务器。
比如:开启一个主进程服务推流服务器,开启一个子进程,端口好为8504,创建一个直播应用为/a/b,使用ffmpeg或者obs推流到服务器。那么子进程的拉流 地址是

。如果播放不了,可能是因为转发延迟,刷新一下重新播放。

本项目提供了两个测试播放转发数据页面。访问地址是:http://127.0.0.1:80/daili.htmlhttp://127.0.0.1:80/flv.html

存在的问题

转发后的数据,可能是因为数据还原有问题,或者丢失了关键帧,或者关键帧之间的数据顺序错乱了,或者关键帧之间的时间相距过长,导致花屏马赛克,不清晰。 尚未找到具体原因,等待后面解决吧。

转发后,使用vlc播放器可以立即解码播放(虽然花屏有马赛克,可终究可以播放是吧),但是使用js的浏览器不能立即解码(目测是js不够强大,不能还原数据), 看运气,有时候能够立刻解码,有时候要很久才能解码。猜测是缺少完整的连续帧引起的,但是检测连续帧是正确的,奇了怪了。

另外,经过测试,项目在Linux环境能够正常工作。但是在windows环境下,如果使用移动端拉流,可能无法播放,转发功能也不能正常工作。目前还不知道原因,大概 是和windows环境有关吧。

其他

需要注意的是,本项目使用的是php的cli模式,和传统的fpm模式有根本的区别。 如果在运行的时候报错,请检查报错信息,多半是缺少php扩展,根据报错信息安装对应扩展,如果使用本项目的docker配置,一般不会报错的。
本项目已经添加了自定义的hls协议,在Root\HLSDemo::class,开启hls协议在MediaServer::publisherOnFrame()方法里面。不过本协议尚有问题。有兴趣的 朋友可以帮忙修正一下。

声明

本项目只用于学习,里面很多资料来源于网络,如有侵权,请联系删除。本项目完全开源,用于相互学习交流,如有问题,欢迎联系我。
如果你觉得项目还将就,请点个星星吧。

联系我

参考资料


All versions of rtmp_server with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
react/promise Version ^2.9
evenement/evenement Version ^3.0
apix/log Version ^1.2
ext-zlib Version *
phpbg/mpegts Version ^0.2.0
ext-simplexml Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package xiaosongshu/rtmp_server contains the following files

Loading the files please wait ....