web无插件直播点播平台EasyDSS点播功能下只有原画分辨率才有声音的问题是什么原因造成的?

EasyDSS视频平台在课堂直播和点播中广泛应用,但近期发现在非H264编码的点播视频切换清晰度时会丢失声音。问题源于代码中只实现了H264格式的转码播放。为解决此问题,已添加代码判断,确保其他编码格式在转码时也能正确处理声音。现在,无论哪种编码格式,都能在切换清晰度后正常播放声音。

EasyDSS视频平台同时支持视频直播和点播,在网校课堂方面,EasyDSS能很好的模拟课堂场景,并且不受时间、空间的限制,因此EasyDSS在很多课堂直播的项目应用中已经落地。

课堂点播.png

EasyDSS中的点播支持不同清晰度的切换,在基础配置中设置即可,但是近期我们发现如果设置了多清晰度转码,原始分辨率设置的是原画,那么在播放点播视频的时候,切换到除了原画以外的其他分辨率播放视频,都是无法听到声音的。

通过对代码的分析,我们得知是除了H264编码的视频,其他格式基本上都会出现这种情况。

于是我们几乎可以确定问题出现的原因是在代码编写中,只针对了H264格式实现了清晰度的转码播放功能,其他编码格式并没有进行转码,所以导致听不到声音。

19.png

因此在处理该问题的时候,我们在代码中添加判断:如果不是H264编码格式的视频,那么在清晰度转码的时候,同样需要进行与格式对应的转码操作。

判断条件的参考代码如下:

if aspect != "" {
   if sizes := strings.SplitN(aspect, "x", 2); len(sizes) == 2 {
      w, _ := strconv.ParseFloat(sizes[0], 64)
      h, _ := strconv.ParseFloat(sizes[1], 64)
      switch defType {
      case consts.DefinitionSD: //640x360
         nh := math.Ceil(640 / w * h)
         if int(nh)%2 != 0 {
            nh++
         }
         args = append(args, "-acodec", acodec, "-vcodec", vcodec, "-s", fmt.Sprintf("640x%v", nh), "-b", "300k")
      case consts.DefinitionHD: //1280x720
         nh := math.Ceil(1280 / w * h)
         if int(nh)%2 != 0 {
            nh++
         }
         args = append(args, "-acodec", acodec, "-vcodec", vcodec, "-s", fmt.Sprintf("1280x%v", nh), "-b", "500k")
      case consts.DefinitionFHD: //1920x1080
         nh := math.Ceil(1920 / w * h)
         if int(nh)%2 != 0 {
            nh++
         }
         args = append(args, "-acodec", acodec, "-vcodec", vcodec, "-s", fmt.Sprintf("1920x%v", nh), "-b", "1000k")
      }
   }
}

 

除线上教育外,EasyDSS也已经支持集成VR视频播放,具体可了解:视频智能分析/人脸识别平台EasyDSS实现景区智慧旅游体系,VR+大数据打造风景区实时视频。如果还想了解更多视频相关解决方案,欢迎联系我们。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值