前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyDSS点播功能下只有原画分辨率才有声音的问题是什么原因造成的?

EasyDSS点播功能下只有原画分辨率才有声音的问题是什么原因造成的?

原创
作者头像
TSINGSEE青犀视频
修改2021-03-02 14:15:00
4690
修改2021-03-02 14:15:00
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

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

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

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

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

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

代码语言:javascript
复制
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+大数据打造风景区实时视频。如果还想了解更多视频相关解决方案,欢迎联系我们。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云点播
面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档