You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Gin代码实现URL参数切换RTSP转WebRTC摄像头

修改方案:将路径参数切换摄像头改为查询参数

以下是针对需求的具体代码修改步骤:

1. 更新路由配置

在serveHTTP函数中,将播放器页面的路由从路径参数形式改为无参数形式:

// 原代码
router.GET("/stream/player/:uuid", HTTPAPIServerStreamPlayer)
// 修改后
router.GET("/stream/player", HTTPAPIServerStreamPlayer)

2. 调整首页重定向逻辑

修改HTTPAPIServerIndex函数中的重定向URL,改用查询参数传递默认摄像头ID:

// 原代码
c.Redirect(http.StatusMovedPermanently, "stream/player/"+all[0])
// 修改后
c.Redirect(http.StatusMovedPermanently, "stream/player?camera="+all[0])

3. 修改播放器页面的参数获取逻辑

在HTTPAPIServerStreamPlayer函数中,从URL查询参数中获取摄像头ID,并处理未传参的默认情况:

// 修改后的HTTPAPIServerStreamPlayer函数
func HTTPAPIServerStreamPlayer(c *gin.Context) {
    _, all := Config.list()
    sort.Strings(all)
    // 从查询参数获取camera值,为空则默认取第一个摄像头
    cameraID := c.Query("camera")
    if cameraID == "" && len(all) > 0 {
        cameraID = all[0]
    }
    c.HTML(http.StatusOK, "player.tmpl", gin.H{
        "port":     Config.Server.HTTPPort,
        "suuid":    cameraID, // 保持模板变量名不变,无需修改前端模板
        "suuidMap": all,
        "version":  time.Now().String(),
    })
}

说明

  • 上述修改保持了前端模板player.tmpl的变量名suuid不变,因此无需修改前端代码即可适配新的参数传递方式。
  • 原有接口如/stream/codec/:uuid、/stream/receiver/:uuid无需修改,因为模板中使用的suuid变量已正确获取摄像头ID,可直接用于路径参数或表单参数传递。

内容的提问来源于stack exchange,提问作者SHILD UNIQE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 18:25:53