美文网首页直播搭建
网络直播系统中关于视频流的那些“奥秘”

网络直播系统中关于视频流的那些“奥秘”

作者: 云豹侃直播 | 来源:发表于2019-03-06 13:41 被阅读0次

    直播行业是互联网行业近年来关注的焦点,同时深受大众的喜爱。随着国家对直播行业的监管加强,直播行业的发展也逐渐规范化,这种正向发展也在一定程度上带动了产业发展,掀起了一股网络直播系统开发热潮。今天主要想跟大家简单分享一下,关于视频流方面的小知识。

    1.什么是DTS和PTS?

    DTS和PTS分别是解码时间戳和显示时间戳的简称,是解码器进行解码和显示帧时相对于系统参考的时间戳。一般情况下,解码器会在它开始读取mpeg流时启动系统时钟,需要注意的是系统时钟的初始值是第一个数据包的SCR值(SCR可以理解为解码器应该开始从磁盘读取数据时的时间),通常为0但是也可以不从0开始。

    2.两者之间的联系是什么?

    DTS时间戳决定了解码器在SCR时间等于DTS时间时进行解码,PTS时间戳也是类似的。通常DTS/PTS时间戳所指示的是晚于音视频包中的SCR的一个时间。比如,一个视频数据包的SCR是100ms,也就是说这个包是播放100ms以后从磁盘中进行读取的,那么DTS/PTS值就差不多是200和280ms,表明当SCR到200ms时这个视频数据应该被解码且在80ms之后被显示出来。如果在磁盘中读取视频数据时,速度不够快以至于1秒内并不能读取足够的视频数据,那么这种情况下DTS/PTS时间戳就会指示视频从硬盘中读出来之前需要进行解码或显示。

    但是现在依靠解码器,这些都不算事什么大问题了,一些解码器可以尽快读取文件以方便显示视频,可以的话可以直接忽略掉SCR。但是在所提供的列表中,平均的视频流速率一般在~3mbps,但它的峰值达到了14mbps。这就意味着mux率需要调整足够大去处理14mbps的部分。

    音视频同步原理可以简称为ffmpeg,那么ffmpeg对于视频文件进行解码的大致流程是怎样的呢?1. 注册所有容器格式和CODEC;2.打开文件;3. 从文件中提取流信息;4. 穷举所有的流,查找其中种类;5. 查找对应的解码器;6. 打开编解码器;7. 为解码帧分配内存;8. 不停地从码流中提取中帧数据;9. 判断帧的类型,对于视频帧调用;10. 解码完后,释放解码器;11. 关闭输入文件

    通常媒体内容在播放时,经常会遇到令人头痛的情况就是音视频不同步。从技术层面来看,解决音视频同步问题的最佳方案就是时间戳。为避免出现音视频不同步的现象,需要掌握两点关键:一个是在生成数据流时要打上正确的时间戳,如果数据块上的时间戳本身就有问题那就没办法了。另一个就是在播放时基于时间戳对数据流的控制,也就是对数据块早到或者晚到采取不同的处理方法。基于时间戳的播放过程中,如果仅仅只是对早到或晚到的数据块进行等或快速处理,有时候这样做是完全不够的。

    以上就是网络直播系统中关于视频流中DTS/PTS和直播中经常出现的音视频不同步问题的相关内容,由此可见,开发一个优质的直播app并不是件容易的事情。

    相关文章

      网友评论

        本文标题:网络直播系统中关于视频流的那些“奥秘”

        本文链接:https://www.haomeiwen.com/subject/upptpqtx.html