迷茫的蜉蝣
音视频技术探索者,每周一篇音视频技术博客
展开
-
live555搭建实时播放rtsp服务器
createNewStreamSource函数是需要我们实现的函数,函数创建了H264FramedLiveSource类对象,这个类对象就是我们实现doGetNextFrame函数的类;当然live555源码的实现技巧,运行流程也是很值得借鉴的;live555可以说是rtsp的专项库,既可以搭建rtsp服务器,也可以搭建rtsp客户端;FramedSource类中只有一个doGetNextFrame纯虚函数,用于获取媒体流,其他不用实现;我是以帧的方式获取的视频流,在实际的开发中,不一定非要一次取一帧;原创 2024-07-19 09:36:01 · 326 阅读 · 0 评论 -
TS协议之PES(ES数据包)
TS=TS头+PES头+ES。TS,PES头是在音视频流传输过程中需要的数据信息,而ES其实就是我们所说的要打包的音视频原始流数据:视频流(H264/H265), 音频流:(AAC)。最后一个ts:TS头+填充字节+部分ES;第一个ts:TS头+PES头+部分ES;协议:ISO/IEC 13818-1。第二个ts:TS头+部分ES;也就是一帧数据只有一个PES。0xc0:含有PTS和DTS。0x80:只含有PTS。原创 2023-08-06 16:49:13 · 1521 阅读 · 0 评论 -
live555 rtsp服务器实战之doGetNextFrame
注意:该篇文章可能有些绕,最好跟着文章追踪下源码,不了解源码可能就是天书;原创 2024-07-17 17:32:49 · 265 阅读 · 0 评论 -
live555的核心数据结构值之闭环双向链表
描述:一个节点保存有前一个节点的地址和后一个节点的地址,并且最后一个节点的下一个节点地址指向第一个节点,第一个节点的前一个节点的地址指向最后一个节点;该链表的添加方式为头插法;原创 2024-06-27 10:12:43 · 382 阅读 · 0 评论 -
live555 rtsp服务器实战之createNewStreamSource
live555用于实际项目开发时,createNewStreamSource和doGetNextFrame是必须要实现的两个虚函数,一般会创建两个类来实现这两个函数:假如这两个类为H264LiveVideoServerMediaSubssion和H264FramedLiveSource;H264LiveVideoServerMediaSubssion为实时视频会话类,用于实现createNewStreamSource虚函数;原创 2024-07-15 14:35:48 · 221 阅读 · 0 评论 -
live555关于RTSP协议交互流程
在构造函数中setBackgroundHandling会把客户端套接字fOurSocket和对应的处理函数incomingRequestHandler添加到闭环双链表中,在doEventLoop中循环遍历,客户端有信令交互就调用相关的处理函数;UDP流媒体传输服务器需要创建两个四个UDP套接字,用于传输音频RTP,音频RTCP,视频RTP,视频RTCP;该文档是以H264的传输为例所以只介绍视频RTP端口,视频RTCP端口的创建过程,音频类似;TCP流媒体传输使用的时信令交互的套接字,这里不做解释;原创 2024-07-13 16:37:52 · 461 阅读 · 0 评论