没有合适的资源?快使用搜索试试~ 我知道了~
ffserver源代码分析
4星 · 超过85%的资源 需积分: 9 107 下载量 44 浏览量
2010-05-13
21:41:47
上传
评论
收藏 68KB DOC 举报
温馨提示
试读
8页
ffserver源代码分析,适合初学者浏览ffserver的源代码,理解其设计的思路。重点研究ffserver对rtp rtcp的支持,研究ffserver管理多个连接的方法。
资源推荐
资源详情
资源评论
FFServer 源码分析
@author FlyFire
@copyleft
在本章将浏览 ffserver 的源代码,理解其设计的思路。重点研究 ffserver 对 rtp rtcp 的支持,
研究 ffserver 管理多个连接的方法。
为使用 rtsp 管理多播,进行 rtp rtcp 的流媒体传输做准备。
在研究 ffserver 源码之前,我们需要理解 ffserver 的配置文件 ffserver.conf。在 ffserver.conf
中透露了管理 ffserver 的蛛丝马迹。
ffmpeg ests\目录下的 ffserver.conf
MaxBandwidth 指每个连接的最大带宽
Feed 和 Stream 配置了该 ffserver 的输入和 ffserver 的输出。Feed 是一个 ffserver 获得流的地
方。可以是从一个 ffmpeg 的 encoder 或者另一个 ffserver 或者是一个编码好的文件。每个
Feed 中包含一个 video 和/或一个 audio。
定义每个输出的流。流的格式 帧率 来源 GOP 等。
现在分析 ffserver.c
1. main()
首先解析了配置文件,打开指定的文件流
然后创建子进程,并在子进程中执行 http_server
2. http_server
a.打开 ffserver 的监听端口
b.打开 rtsp 的监听端口
c start_multicast
.为各个需要多播的流创建相应的 multicast ip 和 multicast port。
并初始到各个 multicast 组的 rtp 连接的 context。
所谓初始相应的 rtp 连接的 Context 是指 分配 HttpContext
在 HttpContext 中指明相应连接的 protocol state sessionId。
//这里注意当 HttpContext 中使用的是本地 avi 文件,它的域是怎样初始化的
注意在这里,只要是组播就一定使用 rtp rtcp 协议。所以在 start_multicast()中,初始到
各个 multicast 组的 rtp 连接的 context。
如果当前的流是 multicast,
C0 创建该流的 HttpContext
rtp_new_connection()
初始化该 HttpContext 对应的 from_addr session_id 和 protocol
将该 HttpContext 加到由 first_http_ctx 引导的链表中
C1.对该流的 HttpContext 执行 open_input_stream
C10. av_open_input_file 打开相应的输入文件
在 av_open_input_file 中,对相应的输入文件的格式进行 Probe。并将 Probe 的
结果,用以初始化 HttpContext 中的 AVInputFormat。
当打开一个本地文件时,常常是根据后缀名进行 Probe 的。可以看到,在
zhuxu67
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页