—————————————————————————————————————————————- 一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984 软件下载地址: https://www.qiyicc.com/download/rtmpd.rar github 地址:https://github.com/superconvert/smart_rtmpd —————————————————————————————————————————————– 就 smart rtmpd 做一个简单的介绍。 第一 smart rtmpd 无任何依赖,无需安装,解压即可运行,非常方便快捷,无论是技术老手还是新手,都能轻易部署。 第二 smart rtmpd 跨平台,windows, linux ( ubuntu & centos ), 都支持。 第三 smart rtmpd 性能高,体积小,作为一款新型的直播服务器,就是为挑战而生的,否则,就没存在的意义了。 第四 smart rtmpd 支持级联(可做大规模集群)和 CDN 的分发。 第五 smart rtmpd 具有灵活的接口,满足各种业务的需要。就说这么多吧有兴趣的可以看看 一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984 1. smart rtmpd 配置文件说明 elapse 性能追踪开关,技术人员调试跟踪时,值为: true 或 false , 默认是 false 。运营时,建议关闭。 authurl 鉴权服务器地址,防止有恶意用户推流,拉流,同时也可以配合自己的业务对用户进行授权处理,具体用法可参考博文 https://blog.csdn.net/freeabc/article/details/105781985 TCP 套接字 recvbuffer 接收缓冲区大小,默认是 KB, TCP 套接字 sendbuffer 发送缓冲区大小,默认是 KB 我们知道 SSL 支持单项和双向认证,下面就两种方法,我们一一介绍。 我们最常见的是单项认证,单项认证的配置方法如下,别的字段为空 双向认证配置如下,一般 ca 为同一个。 smart rtmpd 服务器配置文件说明及优化方法介绍
<?xml version="1.0" encoding="UTF-8"?> <!-- 配置更改后,重启 rtmp 服务器 --> <config> <!-- 跟踪耗时, 不要轻易打开, 容易 crash --> <elapse>false</elapse> <!-- 鉴权地址: https://authurl/v1/smart_rtmpd?type=rtmp&action=publisher&your param. --> <authurl></authurl> <!-- 套结字基本配置项 --> <sock> <!-- 接收缓冲区, 单位 KB --> <recvbuffer>4096</recvbuffer> <!-- 发送缓冲区, 单位 KB --> <sendbuffer>4096</sendbuffer> </sock> <!-- SSL 配置, 单项认证 serverkey, servercert 不为空; 双向认证主要用于级联 --> <ssl> <serverca></serverca> <serverkey></serverkey> <servercert></servercert> <clientca></clientca> <clientkey></clientkey> <clientcert></clientcert> </ssl> <!-- RTMP 网络,CPU,内存相关 --> <rtmp> <!-- 服务器地址 --> <ip></ip> <!-- 服务器端口 --> <port>1935</port> <!-- 开启 ssl --> <ssl>false</ssl> <!-- 直播标签 --> <live>live</live> <!-- h265 的 CodecID --> <codech265>12</codech265> <!-- 组包模式 1 或 2 --> <packmode>1</packmode> <!-- gop 队列最大大小 --> <gopsize>512</gopsize> <!-- 秒开功能, 不过增加延时 --> <gopenable>false</gopenable> <!-- 心跳包间隔时间(分) --> <heartbeat>3</heartbeat> <!-- chunksize --> <chunksize>8192</chunksize> <!-- 接收端队列抖动大小,超过就丢包 --> <shrinkesize>80</shrinkesize> <!-- 堆积包个数 --> <waitcount>4</waitcount> <!-- 堆积延时设置 --> <waitsleep>120</waitsleep> <!-- 堆积大小设置 当 waitcount == 0 时,启用 --> <waitchunk>8192</waitchunk> <!-- 数据发送连续阻塞次数, 超过断开链接 --> <blockcount>1024</blockcount> <!-- 是否开启 http-flv 输出 --> <hasflv>true</hasflv> <!-- 是否开启 http-hls 输出 --> <hashls>true</hashls> <!-- 是否开启 http-dash 输出 --> <hasdash>true</hasdash> <!-- 是否开启 rtsp-live 输出 --> <hasrtsp>true</hasrtsp> <!-- rtmp2rtsp rtp payload 类型定义 --> <rtp h265="98" h264="96" aac="97"/> </rtmp> <!-- RTSP 服务器配置 --> <rtsp> <!-- 服务器地址 --> <ip></ip> <!-- 服务器端口 --> <port>8554</port> <!-- 开启 ssl --> <ssl>false</ssl> <!-- 是否开启 rtmp 输出 --> <hasrtmp>true</hasrtmp> <!-- 关闭 rrsp 服务 --> <enable>true</enable> <!-- rtp & rtcp 端口区间, que 接收队列最大缓冲 --> <rtp min="30000" max="60000" que="20000" /> </rtsp> <!-- HTTP 服务器配置 --> <http> <!-- 服务器地址 --> <ip></ip> <!-- http 端口 --> <port>8085</port> <!-- 开启 ssl --> <ssl>false</ssl> <!-- 关闭 http 服务 --> <enable>true</enable> <!-- 状态查询, vod 列表查询,需要验证 --> <httpcmd user="admin" pwd="123456"/> <!-- http 累积数据大小, 超过此值才发送 --> <httpcache>8192</httpcache> <!-- http 文件下发, 文件每次读取数据大小 --> <httpchunk>8192</httpchunk> <!-- IO 队列堆积个数 --> <ioshrink>512</ioshrink> <!-- http-flv 数据累积超过此值丢包, 单位 KB --> <flvblock>2048</flvblock> <!-- http-hls vod 模式缓存文件个数, 如出现音视频文件找不到,扩大这个值 --> <hlsvodcache>20</hlsvodcache> <!-- http-hls live 模式缓存文件个数, 如出现音视频丢帧,扩大这个值 --> <hlslivecache>4</hlslivecache> <!-- http-hls 模式 0 - ts, 1 - fmp4 --> <hlsmode>0</hlsmode> <!-- http-hls 切片个数 --> <hlssegment>3</hlssegment> <!-- http-hls 切片时长(秒) --> <hlsduration>5</hlsduration> <!-- dash vod 模式缓存文件个数, 如出现音视频文件找不到,扩大这个值 --> <dashvodcache>20</dashvodcache> <!-- dash live 模式缓存文件个数, 如出现音视频丢帧找不到,扩大这个值 --> <dashlivecache>8</dashlivecache> <!-- dash 回收文件时延, 最小 10 秒 --> <dashduration>10</dashduration> <!-- http-vod 模式 0 - dash 模式, 1 - hls 模式 --> <vodmode>0</vodmode> <!-- http-vod 存储分割时间( 分钟 ) --> <vodduration>1</vodduration> </http> <!-- vhost 列表 vhost 可以有多个节点,url 也可以有多个节点,Forward 第三方平台,上面的 packmode 一定配置为 2 --> <vhosts> <!-- 可以针对虚拟主机进行 forward,name 就是虚拟主机地址和端口比如: 192.168.1.108:1936 --> <vhost name=""> <!-- 改写 url , 如: 本机 192.168.1.1, forward 地址 192.168.1.2, 就改写成 forward 的地址 --> <rewrite>false</rewrite> <!-- 是否开启 flv ,优先级高于全局配置 --> <hasflv>true</hasflv> <!-- 是否开启 hls ,优先级高于全局配置 --> <hashls>true</hashls> <!-- 是否开启 dash ,优先级高于全局配置 --> <hasdash>true</hasdash> <!-- 是否开启 rtsp ,优先级高于全局配置 --> <hasrtsp>true</hasrtsp> <!-- forword 地址列表,默认端口号 1935 也可以不加 --> <forward></forward> <!-- forword 地址列表,默认端口号 1935 也可以不加 --> <forward></forward> </vhost> <vhost name=""> </vhost> <!-- 可以针对具体的 url 进行 forward,从而避免 forward 整个 vhost name 比如: rtmp://192.168.1.108/live/stream --> <url name=""> <!-- 改写 rtmp url ,为空表示不改写,改写格式: rtmp://192.168.1.108/live/stream --> <!-- 例如: rtmp://www.cctv.com/live/sport 可以改写成 rtmp://www.shandong.com/live/sport --> <rewrite></rewrite> <!-- 是否开启 flv ,优先级高于全局配置 --> <hasflv>true</hasflv> <!-- 是否开启 hls ,优先级高于全局配置 --> <hashls>true</hashls> <!-- 是否开启 dash ,优先级高于全局配置 --> <hasdash>true</hasdash> <!-- 是否开启 rtsp ,优先级高于全局配置 --> <hasrtsp>true</hasrtsp> <!-- forword 地址列表,默认端口号 1935 也可以不加 --> <forward></forward> <!-- forword 地址列表,默认端口号 1935 也可以不加 --> <forward></forward> </url> <url name=""> </url> </vhosts> <!-- 日志相关 --> <log> </log> </config>
1.1 — 性能跟踪 ( 技术人员 )
1.2 — 鉴权服务器地址 ( 技术人员 )
1.3 — 套接字选项 ( 技术人员 )
1.4 — SSL 配置项说明 ( 技术人员 )
<serverkey>server_key.pem</serverkey> <servercert>server_cert.pem</servercert>
<serverca>ca.pem</serverca> <serverkey>server_key.pem</serverkey> <servercert>server_cert.pem</servercert> <clientca>ca.pem</clientca> <clientkey>client_key.pem</clientkey> <clientcert>client_cert.pem</clientcert>
1.5 — rtmp 相关配置项
服务器绑定指定的网络地址 --- 空表示绑定所有的网络地址 (多网卡) <ip></ip> 服务器端口 --- 默认都是 1935,这也是 rtmp 的默认端口 <port>1935</port>
true : 开启 ssl , 推流拉流必须是 rtmps 方式; false : 关闭 ssl,推流拉流必须是 rtmp 方式 怎么让 ffmpeg 支持推送 rtmps 流,参考博文 https://blog.csdn.net/freeabc/article/details/105526273 <ssl>false</ssl>
smart rtmpd 只支持两种格式的推流和拉流, 举例如下: 点播 url --- rtmp://192.168.1.1:1935/vod/stream 直播 url --- rtmp://192.168.1.1:1935/live/stream 支持两种 app 标签, live 和 vod ,如果你觉得 live 不符合你的需求, 可以改成你想要的格式 <live>xxx</live>,那么推拉流格式如下: rtmp://192.168.1.1:1935/xxx/stream 我们就有关 rtmp 的 url 做一个简单的说明 rtmp://192.168.1.1:1935/live/stream 上述的 rtmp url 具体 rtmp:// 代表的是 rtmp 协议 192.168.1.1:1935 代表 vhost ,也可以是域名,一个机器可能有一个 ip 多个域名 live 是 app 标签,代表一个应用的标签,类型,可以看作一个应用分类 stream 是这个流的名字,这个可以随意写自己想要的。比如: rtmp://192.168.1.1:1935/live/sport rtmp://192.168.1.1:1935/live/movie rtmp://192.168.1.1:1935/live/music
由于 adobe 没用在 rtmp 协议内并不支持 h265 ,因此协议内的 codecID 是没有统一的值的, 包括数据格式,但国内的媒体爱好者,有个不成文的规矩,流的格式尽量按 h264 的风格走,codecID 定义为 12. 但也有可能采用其它的值,这个地方就可以灵活配置 codecID,以适应不同的需求 <codech265>12</codech265>
smart rtmpd 打包模式分为两种,这里值只能是 1 或 2. 对于模式 1 性能会更高一点,但只适合 smart rtmpd 内部交互,如果采用这种模式可能和第三方的程序对接会有问题,比如做 CDN 分发或 级联. 如果级联对象或 CDN 对象都是 smart rtmpd 没问题,打包模式可以为 1. 如果是第三方的 产品,比如 srs 或 nginx rtmp ,就必须采用打包模式 2. 建议服务器端全部用 smart rtmpd 做 级联和 CDN 分发,模式为 1, 这样性能更高。 <packmode>1</packmode>
这个选项是对于有些推流软件, gopsize 超级大,非常不适合直播,也不适合妙可,如果 gopsize 超过 512 帧,就采用丢弃的方式,防止因为坏流导致 smart rtmpd 出现性能降低或不稳定。 <gopsize>512</gopsize> 秒开功能, 值为 true 表示开启,false 表示关闭,如果开启妙开功能,肯定会带来直播的延时,最大 可能一个 GOP 的时长。 <gopenable>false</gopenable>
smart rtmpd 的心跳时间,单位分钟,默认是 3 分钟 <heartbeat>3</heartbeat>
性能调优项之一 rtmp 包的 chunk 大小, 理论上数值越大,性能越好,当然不是无限大最好,默认是 8K ,你可以设置 64K, 跟踪一下效果,找到一个适合自己的值,good luck! <chunksize>8192</chunksize> smart rtmpd 为播放端设置的缓冲区大小,不适合过大,如果日志内出现 shrinke 的字样,说明播放端 接收数据过慢,出现丢包,通过调整这个值,可以增大缓冲队列,可能会改善,但不从根本上解决问题。 <shrinkesize>80</shrinkesize> 性能调优项之一 包堆积超过多少,才发送 rtmp 数据到播放端,建议采用 0 到 4 之间,太大肯定引起延时 <waitcount>4</waitcount> 性能调优项之一 发送时间间隔,单位毫秒。如果包的累积满足条件了,但 waitsleep 时间还未到,smart rtmpd 也不会 继续发包。如果想提速,可以设置为 0 或者 20,设置过大,也会带来一点点延时。 <waitsleep>120</waitsleep> 性能调优项之一 waitcount == 0 时,这种发送模式才起作用,单位 B。如果 waitcount == 0 ,意思就是说数据累积 8K ,smart rtmpd 就可以推数据到播放端,如果你网络足够好,可以设置 128 试试。 <waitchunk>8192</waitchunk> 数据发送连续阻塞次数, 超过断开链接 , 如果 smart rtmpd 推送数据到播放器,如果尝试了 1024 次 都是阻塞状态,则认为这个播放器网络太差,不具有直播的条件,断开与这个播放器的链接。 <blockcount>1024</blockcount>
true : 开启 rtmp 转 http-flv , false : 关闭 <hasflv>true</hasflv> true : 开启 rtmp 转 http-hls , false : 关闭 <hashls>true</hashls> true : 开启 rtmp 转 mpeg-dash , false : 关闭 <hasdash>true</hasdash> true : 开启 rtmp 转 rtsp , false : 关闭 <hasrtsp>true</hasrtsp> rtmp 转 rtsp ,需要对视频的 rtp payload 进行定义 <rtp h265="98" h264="96" aac="97"/>
1.6 — rtsp 配置项
服务器绑定指定的网络地址 --- 空表示绑定所有的网络地址 (多网卡) <ip></ip> 服务器端口 --- 默认都是 8554 <port>8554</port>
true : 开启 ssl , 推流拉流必须是 rtsp 的加密方式; false : 关闭 ssl <ssl>false</ssl> 是否开启 rtsp 转 rtmp , 这必须要求 rtsp 视频编码为 h264, 音频编码是 aac <hasrtmp>true</hasrtmp> 关闭 rtsp 服务 <enable>true</enable> rtp 传输一般都是 UDP 的,这里是是需要开启的 UDP 服务的端口区间 que 接收队列最大缓冲 , 如果接收到的 RTP 包,超过这个队列,则会自动丢弃未处理的包。 <rtp min="30000" max="60000" que="20000" />
1.7 — http 配置项
服务器绑定指定的网络地址 --- 空表示绑定所有的网络地址 (多网卡) <ip></ip> 服务器端口 --- 默认都是 8080 <port>8080</port>
true : 开启 ssl , 推流拉流必须是 https 的加密方式; false : 关闭 ssl <ssl>false</ssl> true : 开启 http 服务, false : 关闭 http 服务 <enable>true</enable> smart rtmpd 提供了一些对外的接口,以方便查询 smart rtmpd 的内部流的状态信息, 为了防止恶意查询,查询时,需要带上用户名和密码才行,这个就是那个配置 <httpcmd user="admin" pwd="123456"/> 查询接口如下,查看所有流信息 https://192.168.1.1:8080/application?user=admin&pwd=123456 查看具体流信息 https://192.168.1.1:8080/application?user=admin&pwd=123456&stream=流的名字 查看统计信息 https://192.168.1.1:8080/statistics?user=admin&pwd=123456 http-flv 等数据下发时,有个数据缓冲累积单位字节,如果累积到了 8K 就下发给播放器 <httpcache>8192</httpcache> 如果下发的是文件,那么每次需要下发数据大小,如果速度加快,建议这个值可以再大点, 不过需要注意的是,不是越大越好,需要自己慢慢调试,找出最优的值。 <httpchunk>8192</httpchunk> smart rtmpd 有写磁盘的动作,如果写磁盘的数据队列超过这个值,则会丢弃这些还未写到 磁盘的数据,这表明您的磁盘 IO 确实太慢了。。。。。 <ioshrink>512</ioshrink> http-flv 数据累积超过此值丢包, 单位 KB <flvblock>2048</flvblock> http-hls vod 模式缓存文件个数, 如出现音视频文件找不到,扩大这个值 <hlsvodcache>20</hlsvodcache> http-hls live 模式缓存文件个数, 如出现音视频丢帧,扩大这个值 <hlslivecache>4</hlslivecache>
http-hls 模式 0 - ts, 1 - fmp4, 这里就别改动了,建议存成 ts 格式。fmp4 支持的不好,别启用了 hls 一般时延比较大,最好的改善方法是,推流端的 GOP 设置要合适,建议要控制在 1 秒之内,这个条 件满足,然后 smart rtmpd 的这些配置项,切片时长可以设置为 2 秒或这 1 秒(保证 GOP 小于 1 秒) 然后切片格式就为 3 吧,不断的尝试优化,基本上时延能在 3 秒左右。 <hlsmode>0</hlsmode> http-hls 切片个数 <hlssegment>3</hlssegment> http-hls 切片时长(秒) <hlsduration>5</hlsduration>
dash vod 模式缓存文件个数, 如出现音视频文件找不到,扩大这个值 <dashvodcache>20</dashvodcache> dash live 模式缓存文件个数, 如出现音视频丢帧找不到,扩大这个值 <dashlivecache>8</dashlivecache> dash 回收文件时延, 最小 10 秒 <dashduration>10</dashduration>
smart rtmpd 的录像模式,具体可参考博文 https://blog.csdn.net/freeabc/article/details/103360588 0 - dash 模式, 1 - hls 模式 ,建议录像采用 hls 模式,毕竟这个是最成熟的。 <vodmode>0</vodmode> http-vod 录像分割时间( 分钟 ) <vodduration>1</vodduration>
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算