live555 livemedia库结构分析[原创]

本文深入剖析了live555开源项目的livemedia库,涵盖整体框架、核心类如FramedSource、FramedFilter、Sink、RTSPClient和MediaSession的详细分析。文章指出,该库采用消息循环处理socket读写,以select()为基础,构建了一个类似于窗口机制的运行结构。同时,文中强调了多线程处理、对象释放和回调函数使用等方面的注意事项。
摘要由CSDN通过智能技术生成

live555是国内视频项目开发经常会用到的一个开源项目,该项目体积小巧,功能全面,尤其适合移植到嵌入式平台。可惜的是的相关文档太少,除了mail listfaq之外几无可寻,几天前刚好有个项目需要用到livemedia库,于是笔者花了几个天时间把livemedia的主要部分做了点分析。不足之处,希望有兴趣的朋友补充。

整体框架

先简单介绍下live555,项目分为两个大部分:

  1. 底层livemedia库;提供各种功能实现,包括视频文件读写,rtsp协议,rtp协议,等等。
  2. 基于livemedia开发的几个应用,包括rtsp服务器live555 media server,接收视频的客户端openrtsp,playsip等。

可以看出livemedia库是各种应用的基础,其内部由各种class组成,结构庞杂。我们先分析它的基本框架:livemedia与一般类库区别最大的一点,就是它的运行结构,整个运行过程就是一个消息循环,类似窗口机制。不同的是它采用select()循环处理socket读写和各种定时任务、触发任务。下面即是内部循环的代码:

void BasicTaskScheduler0::doEventLoop(char* watchVariable) {
  // Repeatedly loop, handling readble sockets and timed events:
  while (1) {
    if (watchVariable != NULL && *watchVariable != 0) break;
    SingleStep();
  }
}
可以看出,watchVariable是用户设置的循环退出条件ÿ
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值