OvenMediaEngine无法向外部客户端RTMP转推,寻求技术支持
问题分析与解决方案
核心问题
你遇到的是RTMP拉流服务未启用的问题,同时配置混淆了「RTMP拉流发布器」和「RTMP主动推流」的配置项,导致日志出现"unknown key publishers...push"错误。
- 当前状态:外部RTMP推流到OME正常,WebRTC播放正常,但VLC等客户端无法通过
rtmp://ome.ip.address:1935/live/streamName拉流 - 错误根源:配置里仅启用了
RTMPPush(用于OME主动推流到外部服务器),但未启用RTMPPublisher(用于提供RTMP拉流服务给外部客户端)
修正后的配置片段
修改<Publishers>区块,添加RTMP配置项(不需要主动推流可移除RTMPPush,按需保留即可):
<Applications> <Application> <Name>live</Name> <Type>live</Type> <Publishers> <AppWorkerCount>2</AppWorkerCount> <StreamWorkerCount>4</StreamWorkerCount> <WebRTC> ... </WebRTC> <!-- 启用RTMP拉流服务,监听1935端口 --> <RTMP> <Port>1935</Port> </RTMP> <!-- 如需OME主动推流到其他服务器,保留并配置RTMPPush --> <!-- <RTMPPush> <PushItems> <PushItem> <Name>push-to-target</Name> <Url>rtmp://target-server/live/streamName</Url> </PushItem> </PushItems> </RTMPPush> --> </Publishers> <OutputProfiles> ... </OutputProfiles> <Providers> <SRT /> <WebRTC> .. </WebRTC> <RTMP> <BlockDuplicateStreamName>true</BlockDuplicateStreamName> </RTMP> <MPEGTS> ... </MPEGTS> </Providers> ... </Application> ... </Applications>
关键说明
- RTMP Publisher 与 RTMPPush 的区别:
<RTMP>在<Publishers>下:负责监听1935端口,处理外部客户端的RTMP拉流请求(比如VLC)<RTMPPush>在<Publishers>下:负责让OME主动将流推送到指定外部服务器,并非用于客户端拉流
- 日志错误"unknown key publishers...push":多因
RTMPPush配置格式错误(如缺少子项)或配置位置不当导致,无需主动推流时直接移除RTMPPush即可消除该错误 - 验证:修改配置后重启OME,用VLC测试
rtmp://ome.ip.address:1935/live/streamName,即可正常拉流
内容的提问来源于stack exchange,提问作者Dmytro Kravchenko
相关产品推荐
相关产品推荐

