PiSignage开源服务器API切换播放列表请求超时问题求助
PiSignage播放列表切换API超时问题排查方案
问题详情
尝试通过API切换PiSignage播放列表,使用的请求:
POST {{base_url}}/api/setplaylist/{{playerId}}/{{Playlist1}}
服务器路由定义(取自routes.js):
router.post('/api/setplaylist/:playerid/:playlist', players.setPlaylist);
请求返回超时错误:
{ "stat_message": "Request Timeout", "data": { "err": "Could not get response from the player for changing playlist, make sure player is online" }, "success": true }
已知播放器在线,其他API请求正常,仅该切换接口异常。
解决步骤
校验播放列表名称与编码
确认{{Playlist1}}是播放器上存在的精确名称,注意大小写、空格或特殊字符。若名称包含非ASCII字符(如中文、空格),需做URL编码(例如空格替换为%20),避免路由解析失败。验证服务器到播放器的网络连通性
播放器显示在线不代表服务器能建立特定连接,在服务器上ping播放器IP,或用curl直接访问播放器本地接口(如http://[player-ip]/api/setplaylist/[playlist-name]),确认播放器能否直接响应切换请求。排查服务器与播放器日志
- 服务器端:检查
players.setPlaylist函数实现,确认是否存在同步等待超时时间过短的逻辑,查看服务器日志获取更详细的错误细节。 - 播放器端:查看PiSignage日志目录(通常为
/var/log/pisignage/),确认是否收到服务器的切换请求,是否有播放列表加载失败的记录。
- 服务器端:检查
调整参数传递方式
若路径传递播放列表名称存在限制,尝试改用POST请求体传递参数(如JSON格式{"playlist": "Playlist1"}),修改路由为router.post('/api/setplaylist/:playerid', players.setPlaylist)后重新测试。重启播放器服务
播放器可能存在进程僵死情况,执行sudo systemctl restart pisignage重启核心服务,再重新发起API请求。
内容的提问来源于stack exchange,提问作者Mpumelelo Yeko
相关产品推荐
相关产品推荐

