Golang joy4包rtmp_publish示例无法运行的问题求助
问题分析与排查建议
现象总结
- 启动joy4的HTTP-FLV&RTMP示例服务器后,自定义的
rtmp_publish.go无法向服务器发布FLV数据 - 使用ffmpeg命令发布则成功,且可通过VLC播放流:
ffmpeg -re -i projectindex.flv -c copy -f flv rtmp://localhost:1936/app/publish - 服务器日志差异:ffmpeg请求包含
Accept和Parsing URL日志,rtmp_publish.go请求仅显示Accept日志
排查方向
RTMP协议握手流程检查
RTMP连接需要完成三次握手,rtmp_publish.go可能只完成了初始连接(对应Accept日志),但后续握手步骤缺失。对比ffmpeg的RTMP实现,确认是否正确发送了C0/C1/C2包,以及后续的连接、创建流等命令。URL解析与RTMP命令发送
服务器日志中的Parsing URL说明ffmpeg正确发送了符合RTMP规范的URL解析请求,而rtmp_publish.go可能未正确构造或发送RTMP连接命令(如connect命令),导致服务器无法解析流路径,无法进入后续发布流程。FLV数据封装格式
确认rtmp_publish.go输出的FLV数据格式是否符合RTMP传输要求:- 是否包含正确的FLV文件头(9字节)
- 是否按顺序发送音频/视频标签,且标签头信息正确
- 是否处理了时间戳的递增逻辑,避免时间戳异常导致服务器丢弃数据
日志与调试
在rtmp_publish.go中添加详细日志,记录发送的每个RTMP包内容、握手状态、命令响应,对比ffmpeg的RTMP交互流程,定位缺失的步骤。
内容的提问来源于stack exchange,提问作者Kundera
相关产品推荐
相关产品推荐

