zoukankan      html  css  js  c++  java
  • EasyDSS多路视频合成一个视频流时如何解决卡顿、内容丢失等问题?

    在我们进行EasyDSS某个项目的定制版本开发时,项目要求能够在EasyDSS内生成一个完整的多路合成视频文件和复合的播放地址。起初的执行逻辑是根据需求直接将符合要求的ts文件按照时间和通道顺序写入提供播放的m3u8文件中。但在后期测试中发现,这样直接进行合成出的MP4文件以及m3u8播放文件都会出现音画不同步、卡顿、视频内容丢失等问题。

    因为是多路的视频文件合成,视频的分辨率、视频格式编码、时间戳等等信息都有可能影响最终的合成结果,所以采用这种强制的拼接方式会导致m3u8文件无法正常播放。而现有的MP4合成逻辑也是通过生成的m3u8制作,所以也会影响MP4文件的最终效果。

    例如多路视频中有部分内容的时间戳相同,这样就会出现视频能够播放的帧数与实际长度不符,产生卡顿,视频丢失,或者音画不统一的问题。

    为了更快的实现MP4和m3u8播放文件的生成,新的模式是独立生成MP4和m3u8文件,MP4的生成不再依赖m3u8文件,直接通过ts录像文件切片生成。这样不仅能够提高合成速度,也可以避免因为m3u8文件的错误从而导致MP4文件的错误。

    同样的m3u8文件的生成规则也有直接将符合条件的ts文件信息写入改成了,由ffmpeg重新对符合条件的文件进行编辑生成新的ts文件和m3u8文件。

    Ts转MP4 Ffmpeg命令参数:

    Ts转m3u8 Ffmpeg命令参数:

    EasyDSS能够获得众多开发者的青睐,主要优势包括以下几点:

    1、接收RTMP直播流,并且转成HLS、FLV、RTMP等协议流进行第三方调用及播放;

    2、EasyDSS内设立了虚拟直播的功能,可以将其他视频流转成直播流,并分享给第三方系统;

    3、支持自行上传视频文件,并通过点播的方式播放;

    4、平台内设角色管理、用户管理、通道管理等多重权限管理机制,支持权限分配,便于多人管理团队的共同使用。

    有兴趣的朋友可以联系我们了解,我们均提供为期30天的试用版本供大家测试使用。

  • 相关阅读:
    浅尝EffectiveCSharp_6
    浅尝EffectiveCSharp_7
    浅尝EffectiveCSharp_9
    CLR_via_C#.3rd 翻译[1.6 框架类库]
    浅尝EffectiveC#_11
    CLR_via_C#.3rd 翻译[1.9 与非托管代码的操作]
    wcf学习笔记_2(修改wcf配置文件)
    CLR_via_C#.3rd 翻译[1.4.2 不安全代码]
    CLR_via_C#.3rd 翻译[1.4.1 IL与验证]
    CLR_via_C#.3rd 翻译[1.8 通用语言规范]
  • 原文地址:https://www.cnblogs.com/easydss/p/15104314.html
Copyright © 2011-2022 走看看