weixin_39980893
weixin_39980893
2021-01-05 04:22

obs推流延时3秒左右

我看项目介绍,obs推流延时在500ms内,为啥我内网推流观看延时都在3s左右,是我哪配置不对吗? 微信图片_20201224163413 微信图片_20201224163442

这是我的配置文件 [api]

是否调试http api,启用调试后,会打印每次http请求的内容和回复

apiDebug=1

一些比较敏感的http api在访问时需要提供secret,否则无权限调用

如果是通过127.0.0.1访问,那么可以不提供secret

secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc

截图保存路径根目录,截图通过http api(/index/api/getSnap)生成和获取

snapRoot=./www/snap/

默认截图图片,在启动FFmpeg截图后但是截图还未生成时,可以返回默认的预设图片

defaultSnap=./www/logo.png

[ffmpeg]

FFmpeg可执行程序绝对路径

bin=/usr/bin/ffmpeg

FFmpeg拉流再推流的命令模板,通过该模板可以设置再编码的一些参数

cmd=%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s

FFmpeg生成截图的命令,可以通过修改该配置改变截图分辨率或质量

snap=%s -i %s -y -f mjpeg -t 0.001 %s

FFmpeg日志的路径,如果置空则不生成FFmpeg日志

可以为相对(相对于本可执行程序目录)或绝对路径

log=./ffmpeg/ffmpeg.log

[general]

是否启用虚拟主机

enableVhost=0

播放器或推流器在断开后会触发hook.on_flow_report事件(使用多少流量事件),

flowThreshold参数控制触发hook.on_flow_report事件阈值,使用流量超过该阈值后才触发,单位KB

flowThreshold=1024

播放最多等待时间,单位毫秒

播放在播放某个流时,如果该流不存在,

ZLMediaKit会最多让播放器等待maxStreamWaitMS毫秒

如果在这个时间内,该流注册成功,那么会立即返回播放器播放成功

否则返回播放器未找到该流,该机制的目的是可以先播放再推流

maxStreamWaitMS=15000

某个流无人观看时,触发hook.on_stream_none_reader事件的最大等待时间,单位毫秒

在配合hook.on_stream_none_reader事件时,可以做到无人观看自动停止拉流或停止接收推流

streamNoneReaderDelayMS=20000

拉流代理是否添加静音音频(直接拉流模式本协议无效)

addMuteAudio=1

拉流代理时如果断流再重连成功是否删除前一次的媒体流数据,如果删除将重新开始,

如果不删除将会接着上一次的数据继续写(录制hls/mp4时会继续在前一个文件后面写)

resetWhenRePlay=1

是否默认推流时转换成hls,hook接口(on_publish)中可以覆盖该设置

publishToHls=1

是否默认推流时mp4录像,hook接口(on_publish)中可以覆盖该设置

publishToMP4=0

合并写缓存大小(单位毫秒),合并写指服务器缓存一定的数据后才会一次性写入socket,这样能提高性能,但是会提高延时

开启后会同时关闭TCP_NODELAY并开启MSG_MORE

mergeWriteMS=0

全局的时间戳覆盖开关,在转协议时,对frame进行时间戳覆盖

该开关对rtsp/rtmp/rtp推流、rtsp/rtmp/hls拉流代理转协议时生效

会直接影响rtsp/rtmp/hls/mp4/flv等协议的时间戳

同协议情况下不影响(例如rtsp/rtmp推流,那么播放rtsp/rtmp时不会影响时间戳)

modifyStamp=0

服务器唯一id,用于触发hook时区别是哪台服务器

mediaServerId=your_server_id

以下是按需转协议的开关,在测试ZLMediaKit的接收推流性能时,请把下面开关置1
如果某种协议你用不到,你可以把以下开关置1以便节省资源(但是还是可以播放,只是第一个播放者体验稍微差点),
如果某种协议你想获取最好的用户体验,请置0(第一个播放者可以秒开,且不花屏)

hls协议是否按需生成,如果hls.segNum配置为0(意味着hls录制),那么hls将一直生成(不管此开关)

hls_demand=0

rtsp[s]协议是否按需生成

rtsp_demand=0

rtmp[s]、http[s]-flv、ws[s]-flv协议是否按需生成

rtmp_demand=0

http[s]-ts协议是否按需生成

ts_demand=0

http[s]-fmp4、ws[s]-fmp4协议是否按需生成

fmp4_demand=0

[hls]

hls写文件的buf大小,调整参数可以提高文件io性能

fileBufSize=65536

hls保存文件路径

可以为相对(相对于本可执行程序目录)或绝对路径

filePath=./www

hls最大切片时间

segDur=2

m3u8索引中,hls保留切片个数(实际保留切片个数大2~3个)

如果设置为0,则不删除切片,而是保存为点播

segNum=3

HLS切片从m3u8文件中移除后,继续保留在磁盘上的个数

segRetain=5

是否广播 ts 切片完成通知

broadcastRecordTs=0

[hook]

在推流时,如果url参数匹对admin_params,那么可以不经过hook鉴权直接推流成功,播放时亦然

该配置项的目的是为了开发者自己调试测试,该参数暴露后会有泄露隐私的安全隐患

admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc

是否启用hook事件,启用后,推拉流都将进行鉴权

enable=0

播放器或推流器使用流量事件,置空则关闭

on_flow_report=https://127.0.0.1/index/hook/on_flow_report

访问http文件鉴权事件,置空则关闭鉴权

on_http_access=https://127.0.0.1/index/hook/on_http_access

播放鉴权事件,置空则关闭鉴权

on_play=https://127.0.0.1/index/hook/on_play

推流鉴权事件,置空则关闭鉴权

on_publish=https://127.0.0.1/index/hook/on_publish

录制mp4切片完成事件

on_record_mp4=https://127.0.0.1/index/hook/on_record_mp4

录制 hls ts 切片完成事件

on_record_ts=https://127.0.0.1/index/hook/on_record_ts

rtsp播放鉴权事件,此事件中比对rtsp的用户名密码

on_rtsp_auth=https://127.0.0.1/index/hook/on_rtsp_auth

rtsp播放是否开启专属鉴权事件,置空则关闭rtsp鉴权。rtsp播放鉴权还支持url方式鉴权

建议开发者统一采用url参数方式鉴权,rtsp用户名密码鉴权一般在设备上用的比较多

开启rtsp专属鉴权后,将不再触发on_play鉴权事件

on_rtsp_realm=https://127.0.0.1/index/hook/on_rtsp_realm

远程telnet调试鉴权事件

on_shell_login=https://127.0.0.1/index/hook/on_shell_login

直播流注册或注销事件

on_stream_changed=https://127.0.0.1/index/hook/on_stream_changed

无人观看流事件,通过该事件,可以选择是否关闭无人观看的流。配合general.streamNoneReaderDelayMS选项一起使用

on_stream_none_reader=https://127.0.0.1/index/hook/on_stream_none_reader

播放时,未找到流事件,通过配合hook.on_stream_none_reader事件可以完成按需拉流

on_stream_not_found=https://127.0.0.1/index/hook/on_stream_not_found

服务器启动报告,可以用于服务器的崩溃重启事件监听

on_server_started=https://127.0.0.1/index/hook/on_server_started

hook api最大等待回复时间,单位秒

timeoutSec=10

[http]

http服务器字符编码,windows上默认gb2312

charSet=utf-8

http链接超时时间

keepAliveSecond=30

http请求体最大字节数,如果post的body太大,则不适合缓存body在内存

maxReqSize=4096

404网页内容,用户可以自定义404网页

notFound=

您访问的资源不存在!

ZLMediaKit-4.0

http服务器监听端口

port=80

http文件服务器根目录

可以为相对(相对于本可执行程序目录)或绝对路径

rootPath=./www

http文件服务器读文件缓存大小,单位BYTE,调整该参数可以优化文件io性能

sendBufSize=65536

https服务器监听端口

sslport=443

是否显示文件夹菜单,开启后可以浏览文件夹

dirMenu=1

[multicast]

rtp组播截止组播ip地址

addrMax=239.255.255.255

rtp组播起始组播ip地址

addrMin=239.0.0.0

组播udp ttl

udpTTL=64

[record]

mp4录制或mp4点播的应用名,通过限制应用名,可以防止随意点播

点播的文件必须放置在此文件夹下

appName=record

mp4录制写文件缓存,单位BYTE,调整参数可以提高文件io性能

fileBufSize=65536

mp4录制保存、mp4点播根路径

可以为相对(相对于本可执行程序目录)或绝对路径

filePath=./www

mp4录制切片时间,单位秒

fileSecond=3600

mp4点播每次流化数据量,单位毫秒,

减少该值可以让点播数据发送量更平滑,增大该值则更节省cpu资源

sampleMS=500

mp4录制完成后是否进行二次关键帧索引写入头部

fastStart=0

MP4点播(rtsp/rtmp/http-flv/ws-flv)是否循环播放文件

fileRepeat=0

[rtmp]

rtmp必须在此时间内完成握手,否则服务器会断开链接,单位秒

handshakeSecond=15

rtmp超时时间,如果该时间内未收到客户端的数据,

或者tcp发送缓存超过这个时间,则会断开连接,单位秒

keepAliveSecond=15

在接收rtmp推流时,是否重新生成时间戳(很多推流器的时间戳着实很烂)

modifyStamp=0

rtmp服务器监听端口

port=1935

rtmps服务器监听地址

sslport=19350

[rtp]

音频mtu大小,该参数限制rtp最大字节数,推荐不要超过1400

加大该值会明显增加直播延时

audioMtuSize=600

rtp时间戳回环时间,单位毫秒

cycleMS=46800000

视频mtu大小,该参数限制rtp最大字节数,推荐不要超过1400

videoMtuSize=1400

[rtp_proxy]

udp类型的代理服务器是否检查rtp源地址,地址不配备将丢弃数据

checkSource=1

导出调试数据(包括rtp/ps/h264)至该目录,置空则关闭数据导出

dumpDir=

udp和tcp代理服务器,支持rtp(必须是ts或ps类型)代理

port=10000

rtp超时时间,单位秒

timeoutSec=15

[rtsp]

rtsp专有鉴权方式是采用base64还是md5方式

authBasic=0

rtsp拉流代理是否是直接代理模式

直接代理后支持任意编码格式,但是会导致GOP缓存无法定位到I帧,可能会导致开播花屏

并且如果是tcp方式拉流,如果rtp大于mtu会导致无法使用udp方式代理

假定您的拉流源地址不是264或265或AAC,那么你可以使用直接代理的方式来支持rtsp代理

默认开启rtsp直接代理,rtmp由于没有这些问题,是强制开启直接代理的

directProxy=1

rtsp必须在此时间内完成握手,否则服务器会断开链接,单位秒

handshakeSecond=15

rtsp超时时间,如果该时间内未收到客户端的数据,

或者tcp发送缓存超过这个时间,则会断开连接,单位秒

keepAliveSecond=15

rtsp服务器监听地址

port=554

rtsps服务器监听地址

sslport=322

[shell]

调试telnet服务器接受最大bufffer大小

maxReqSize=1024

调试telnet服务器监听端口

port=9000

哪的问题?

该提问来源于开源项目:xia-chu/ZLMediaKit

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • weixin_39980893 weixin_39980893 3月前

    综合各种播放器测试结果,还是ffplay.exe(通过修改缓存参数)最快,vlc最慢,直接看拉摄像头看,rtmp几乎无延时,rtsp还是存在1秒延时.OBS推流观看延时还是存在2秒左右,经过仔细测试发现主要原因还是在obs编码封装耗时.ZLMediaKit直播延时方面性能还是很不错的,主要还是要在播放器上做优化

    点赞 评论 复制链接分享
  • weixin_39980893 weixin_39980893 3月前

    好的,正好测一下test_player,可惜iss不支持图片显示

    点赞 评论 复制链接分享
  • weixin_39595621 weixin_39595621 3月前

    你用zlm的test_player播放器

    点赞 评论 复制链接分享
  • weixin_39980893 weixin_39980893 3月前

    我又用ffplay测了下,发现延时更大了...一般用什么播放器准一些

    点赞 评论 复制链接分享
  • weixin_39595621 weixin_39595621 3月前

    vlc直接访问摄像头 会触发摄像头生成关键帧 这样gop就很小 所以延时低 转发后gop延时可能好几秒 不一样的 一定要找个靠谱的低延时 播放器测试

    发自我的iPhone

    ------------------ 原始邮件 ------------------ 发件人: lixinhan2019 <notifications.com> 发送时间: 2020年12月24日 16:43 收件人: xia-chu/ZLMediaKit <ZLMediaKit.github.com> 抄送: 夏楚 <771730766.com>, Comment <comment.github.com> 主题: 回复:[xia-chu/ZLMediaKit] obs推流延时3秒左右 (#648)

    VLC,我知道VLC缓存慢,但是VLC直接看流就慢1秒

    — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

    点赞 评论 复制链接分享
  • weixin_39980893 weixin_39980893 3月前

    VLC,我知道VLC缓存慢,但是VLC直接看流就慢1秒

    点赞 评论 复制链接分享
  • weixin_39595621 weixin_39595621 3月前

    你用的什么播放器

    发自我的iPhone

    ------------------ 原始邮件 ------------------ 发件人: lixinhan2019 <notifications.com> 发送时间: 2020年12月24日 16:38 收件人: xia-chu/ZLMediaKit <ZLMediaKit.github.com> 抄送: Subscribed <subscribed.github.com> 主题: 回复:[xia-chu/ZLMediaKit] obs推流延时3秒左右 (#648)

    点赞 评论 复制链接分享

为你推荐