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天的试用版本供大家测试使用。

原文地址:https://www.cnblogs.com/easydss/p/15104314.html