首页 > 其他分享 >RTMP流媒体服务器LntonMedia(免费)互联网视频云平台优化HLS的访问路径的方案

RTMP流媒体服务器LntonMedia(免费)互联网视频云平台优化HLS的访问路径的方案

时间:2023-08-12 17:01:59浏览次数:37  
标签:http err m3u8 HLS req hls RTMP path LntonMedia

LntonMedia视频平台具有便捷可控的特点,观看视频推流和直播时无需安装插件,只需通过浏览器进入平台即可进行配置。对于用户而言,这一优势使他们无需额外搭建服务器,享受到了方便和可操作性。

RTMP流媒体服务器LntonMedia(免费)互联网视频云平台优化HLS的访问路径的方案_安装插件

在原先的LntonMedia设计中,LntonMedia平台直接获取到流媒体的存储hls的路径,然后将该路径变为可访问资源路径即可。但是该种设计方式,在流媒体在其他机器上的时候就会出现无法访问hls流的情况,因此更改hls的访问路径。

RTMP流媒体服务器LntonMedia(免费)互联网视频云平台优化HLS的访问路径的方案_免费_02

以下代码主要使用httputil.ReverseProxy实现反向代理。proxy.ServeHTTP()函数即可实现http的反向代理功能。

func HlsHandler() gin.HandlerFunc {
   return func(c *gin.Context) {
      defer func() {
         if err := recover(); err != nil {
            gErrorLogger.Error(fmt.Sprintf("panic %s\n", err))
            gErrorLogger.Error(fmt.Sprint(string(debug.Stack())))
         }
      }()
 
      // /hls/stream_1/playlist.m3u8
      path := c.Request.URL.Path
 
      if strings.HasSuffix(path, ".m3u8") || strings.HasSuffix(path, ".ts") {
         target := fmt.Sprintf("127.0.0.1:%v", mediaserver.GetHttpPort())
         director := func(req *http.Request) {
            req.URL.Scheme = "http"
            req.URL.Host = target
            req.URL.RawQuery = ""
 
            if strings.HasSuffix(path, ".m3u8") {
               // 如果是老的 EasyDSS 路径,则修改为新的 m3u8 路径
               // 老的路径为 /hls/stream_1/stream_1_live.m3u8
               if strings.HasSuffix(path, "_live.m3u8") {
                  index := strings.LastIndex(path, "/")
                  basePath := path[:index+1]
                  req.URL.Path = basePath + mediaserver.HlsPlayList
               }
            }
 
         }
         tranport := &ShutDownTransport{
            Trans: &http.Transport{
               Proxy: http.ProxyFromEnvironment,
               DialContext: (&net.Dialer{
                  Timeout:   30 * time.Second,
                  KeepAlive: 30 * time.Second,
               }).DialContext,
               ForceAttemptHTTP2:     true,
               MaxIdleConns:          100,
               IdleConnTimeout:       90 * time.Second,
               TLSHandshakeTimeout:   10 * time.Second,
               ExpectContinueTimeout: 1 * time.Second,
               ResponseHeaderTimeout: 10 * time.Second,
            },
         }
 
         errHandle := func(res http.ResponseWriter, req *http.Request, err error) {
            log.Println("hls proxy is error : ", err)
            c.AbortWithError(http.StatusVariantAlsoNegotiates, err)
         }
         proxy := &httputil.ReverseProxy{
            Director:     director,
            Transport:    tranport,
            ErrorHandler: errHandle,
         }
 
         proxy.ServeHTTP(c.Writer, c.Request)
 
         c.Next()
         return
      } else {
         c.AbortWithStatusJSON(http.StatusBadRequest, "BadRequest")
      }
 
      return
   }
}

LntonMedia视频平台无需安装插件即可通过网页直接观看视频推流和直播。最近,我们对系统的内核进行了更新,以进一步提升性能。我们欢迎大家提出改进建议,并且如果您对我们的平台有任何需求,欢迎详细了解。

RTMP流媒体服务器LntonMedia(免费)互联网视频云平台优化HLS的访问路径的方案_流媒体_03

RTMP流媒体服务器LntonMedia(免费)互联网视频云平台优化HLS的访问路径的方案_互联网视频云平台_04


标签:http,err,m3u8,HLS,req,hls,RTMP,path,LntonMedia
From: https://blog.51cto.com/LNTON/7060092

相关文章

  • 对话音视频牛哥:如何设计功能齐全的跨平台低延迟RTMP播放器
    开发背景2015年,我们在做移动单兵应急指挥项目的时候,推送端采用了RTMP方案,这在当时算是介入RTMP比较早的了,RTMP推送模块做好以后,我们找了市面上VLC还有Vitamio,来测试整体延迟,实际效果真的不尽人意,大家知道,应急指挥系统,除了稳定性外,对延迟有很高的要求,几秒钟(>3-5秒)的延迟,是我们接受不......
  • Linux下搭建Nginx+nginx-rtmp-module流媒体服务器
    今天我们使用的是linux系统为Centos64位服务器。下载安装nginx首先新建nginx目录存放nginx:mkdirnginx1然后进入nginx目录分别下载nginx及nginx-rtmp-module:进入nginx目录cdnginx下载nginxwgethttp://nginx.org/download/nginx-1.17.9.tar.gz下载nginx-rtmp-modulehttps://codel......
  • 设备使用RTMP推流到安防监控EasyCVR视频汇聚平台,为何只有FLV格式无法播放?
    TSINGSEE青犀视频安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等功能。智能视频监控平台EasyCVR可支持的协议非常多,包括国标G......
  • RTMP流媒体服务器LntonMedia(免费版)视频流媒体平台成功清理录像计划的具体操作步骤
    LntonMedia是支持接入RTMP推流摄像头的视频流媒体平台,新版LntonMedia互联网直播点播平台支持创建录像计划,用户可以设定周一至周日中,某天某个时间段内开启录像,其他时间不录像。LntonMedia包含一个根据录像计划清理录像的功能,是我们在添加录像计划后同步添加的功能,功能实现代码大家可......
  • Android平台一对一音视频通话方案对比:WebRTC VS RTMP VS RTSP
    一对一音视频通话使用场景一对一音视频通话都需要稳定、清晰和流畅,以确保良好的用户体验,常用的使用场景如下:社交应用:社交应用是一种常见的使用场景,用户可以通过音视频通话进行面对面的交流;在线教育:老师和学生可以通过音视频通话功能进行实时互动,提高教学效率;远程协助:在某些工作场景......
  • RTMP流媒体服务器LntonMedia(免费)视频直播点播平台的点播文件分享链接设置自动播放的具
    LntonMedia视频直播/点播服务平台诞生至今,我们做了不少版本的功能更新和升级。之前我们为大家解决了LntonMedia中iframe地址自动播放的问题,除了iframe地址外,还可以通过分享链接进行视频分享。部分用户称LntonMedia的点播文件通过分享链接分享时,无法自动播放,需要手动点击才可以播放,......
  • 国标GB28181视频平台LntonGBS(源码版)国标平台出现录像无法播放并存在RTMP重复推流现象
    LntonGBS国标视频云服务通过支持国标GB28181协议,实现了设备接入、实时监控直播、录像、语音对讲、云存储、告警、级联等功能。同时,它还支持将接入的视频流以多种格式(包括RTSP、RTMP、FLV、HLS、WebRTC)进行全终端、全平台分发,实现了无插件播放在Web浏览器、手机浏览器、微信端、PC客......
  • [Unity]URP HLSL Shader自用模板
    Shader"URP/falushan"{Properties//着色器的输入{_BaseMap("Texture",2D)="white"{}}SubShader{Tags{"RenderType"="Opaque""RenderPipeL......
  • GB28181转RTMP、HLS、RTSP、FLV直播
    背景GB28181协议凭借其在安防流媒体行业独有的大统一地位,目前已经在各种安防项目上使用。雪亮工程、幼儿园监控、智慧工地、物流监控等等项目上目前都需要接入安防摄像头或平台进行直播、回放。而GB28181协议作为国家推荐标准,目前基本所有厂家的安防摄像头、NVR、监控平台都支持此......
  • 视频融合平台视频汇聚平台LiteCVR反馈处理HLS流播放失败案例分享
    很高兴可以在这里向诸位分享一下HLS流播放失败相关的反馈处理,也算是一个简单的教程,接下来开始讲解。近期呢,我们整理了收到的用户反馈,发现他们在项目现场使用国标GB28181协议将设备接入LiteCVR后,可以正常播放FLV格式的视频,但是在使用HLS流播放时却遇到了问题。他们请求我们协助进行......