ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在虚拟直播下对视频资源循环播放?

2021-05-20 19:55:05  阅读:240  来源: 互联网

标签:vod 视频 播放 点播 vcodecstr copy 虚拟 直播


假日出游,为什么显示有票你却抢不到?揭秘12306如何保证车票不超卖的关键技术!>>>watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

我们常见的视频流接入协议包括RTSP协议、RTMP协议、GB28181协议三种,针对这三种协议,TSINGSEE青犀视频研发了不同的视频解决方案,其中EasyDSS是支持推流协议RTMP接入的平台,它与其他平台不同的点在于EasyDSS可同时支持视频直播和点播。

EasyDSS架构绿.png

EasyDSS添加虚拟直播后,将直播源设置为点播资源,推送到直播间,正常的来说,推送到直播间的点播视频在没有关闭虚拟直播的时候,会一直循环播放。但是实际上我们测试发现点播视频结束后,并没有循环播放,而是直接停止了。

16.png

对于这种问题,我们首先考虑的是推流的命令是否存在问题,因此测试的时候我们关注了该命令,发现命令中是对m3u8进行拉流然后再推流。但是命令中有-vcodec copy -acodec copy ,这个命令是针对H264的,不进行转码操作,所以导致直播出现断层,无法循环播放。

我们可以对代码做以下修改:

 

// 转换成 h264 有两种参数操作 libx264、h264_nvenc
// copy 为默认原数据编码
if vod.Rotate == 0 {
   switch vod.VidioCodecOriginal {
   case "H.264":
      vcodecstr = "copy"
   case "VP9":
      // vp9 编码,仅能够转换成 h265 编码, nvenc 代表设置编码
      vcodecstr = "hevc_nvenc"
   case "HEVC":
      // hevc 编码为 h265 编码,转换成 h264,有两种 h264_nvenc、libx264、copy
      // libx264 会导致 cpu 使用率 为 100%
      vcodecstr = h265VideoTranWay
   default:
      vcodecstr = videoTranWay
   }
}
 
if strings.EqualFold(vod.AudioCodecOriginal, "AAC") {
   acodecstr = "copy"
}
//判断点播源文件是否存在,并且是视频优先从源文件
if vod.Path != consts.EmptyString && efile.Exisit(filepath.Join(conf2.GetConf().DirVODSrc, vod.Path)) && strings.Contains(vod.Type, "video") {
   src = filepath.Join(conf2.GetConf().DirVODSrc, vod.Path)
   if vod.VideoCodec == "H.264" && vod.AudioCodec == "AAC" && vod.Rotate == 0 {
      vcodec = []string{vcodecstr}
      acodec = []string{acodecstr}
   }

新代码中不对m3u8文件进行拉流,是将点播的源数据当做视频源进行拉流,然后通过不同的文件编码类型,进行不同的命令操作拉流。

17.png

当然如果不想点播视频循环播放,也可以自行修改。如果大家有接入RTMP协议视频流的需求,可以联系我们获取EasyDSS平台的测试账号进行测试,如果还想了解更多视频相关解决方案,欢迎访问TSINGSEE青犀视频官方网站。

标签:vod,视频,播放,点播,vcodecstr,copy,虚拟,直播
来源: https://blog.51cto.com/u_15179958/2796510

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有