GoCoder SDK未在自建Wowza服务器创建流文件问题咨询
解决GoCoder SDK推流到Wowza未自动生成StreamFile的问题
嘿,我之前也踩过这个坑,核心是得先把Wowza里StreamName和StreamFile的概念理清楚,咱们一步步来解决:
先搞懂核心差异
你在GoCoder SDK里配置的StreamName是实时推流的标识,Wowza接收到这个流后,会在后台的Incoming Streams页面显示正在运行的实时流,但默认不会自动生成StreamFile。
StreamFile是Wowza里用来预定义流配置的实体——比如绑定应用、设置拉流地址、配置转码规则等,它和实时推流的流名完全是两回事。系统提示推流正常,说明你的推流连接是没问题的,先去Incoming Streams页面确认一下实时流是否在运行,大概率是能找到的。
如果确实需要自动生成StreamFile
如果你的业务场景必须要自动创建对应的StreamFile(比如需要持久化流配置、做拉流映射等),可以试试这两种方法:
1. 借助Wowza REST API在推流时创建
你可以在GoCoder SDK的推流成功回调里,调用Wowza的REST API来自动生成StreamFile。示例请求如下:
POST http://[你的Wowza服务器IP]:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/[你的应用名称]/streamfiles/[你的StreamName] Headers: Content-Type: application/json Authorization: Basic [Base64编码的Wowza管理员账号:密码] Body: { "restURI": "http://[你的Wowza服务器IP]:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/[你的应用名称]/streamfiles/[你的StreamName]", "name": "[你的StreamName]", "serverName": "_defaultServer_", "applicationName": "[你的应用名称]", "uri": "rtsp://localhost:1935/[你的应用名称]/[你的StreamName]" }
把这个请求集成到iOS代码里,用URLSession调用就行,确保推流成功后自动触发创建。
2. 手动创建StreamFile的注意事项
如果选择手动创建,一定要盯紧这几点:
- StreamFile的
name和你推流用的StreamName完全一致(大小写敏感) - StreamFile绑定的应用名称和你推流的应用名称匹配
- 配置的
uri格式要和推流协议对应(比如用RTMP推流的话,uri改成rtmp://localhost:1935/[你的应用名称]/[你的StreamName])
额外排查小技巧
如果连Incoming Streams里都看不到流,那得再检查下:
- 开启GoCoder SDK的日志功能,看看推流过程中有没有隐藏的错误(比如端口被拦截、参数不匹配)
- 确认Wowza应用的推流权限,保证你用的推流账号有足够权限推流到目标应用
内容的提问来源于stack exchange,提问作者tomn




