没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
10页
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等。RTMP协议可用于实现直播、点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播。
资源推荐
资源详情
资源评论
C++实现 RTMP 协议发送 H.264 编码及 AAC
编码的音视频
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,
最初由 Macromedia 公司创建,后来归 Adobe 公司所有,是一种私有协议,主要用来联系
Flash Player 和 RtmpServer,如 FMS,Red5,crtmpserver 等。RTMP 协议可用于实现直
播、点播应用,通过 FMLE(Flash Media Live Encoder)推送音视频数据至
RtmpServer,可实现摄像头实时直播。不过,毕竟 FMLE 应用范围有限,想要把它嵌入到
自己的程序中,还是要自己来实现 RTMP 协议的推送。本人实现了一个
RTMPLiveEncoder,通过采集摄像头视频和麦克风音频,并进行 H.264 和 AAC 编码,然
后发送到 FMS 和 crtmpserver 上,实现实时直播,可以通过 flash player 正常观看,目前
效果良好,延迟时间在 2 秒左右。本文就介绍一下 RTMPLiveEncoder 的主要思路和关键
点,以期对需要这方面技术的朋友有所帮助。
技术分析
要实现 RTMPLiveEncoder,需要以下四种关键技术:
采集摄像头视频和麦克风音频
H264 编码和 AAC 编码
视频和音频数据封装为可被流媒体服务器识别的可播放流
RTMP 协议实现报文发送
其中,前两项技术在我之前的文章“采集音频和摄像头视频并实时
H264
编码和
AAC
编码”中已经介绍过了,这里就不再啰嗦了。
把音视频数据封装为可播放流,这个是一个难点。仔细研究一下,你会发现,RTMP
Packet 中封装的音视频数据流,其实和 FLV 封装音频和视频数据的方式是相同的,所以,
我们只需要按照 FLV 封装 H264 和 AAC 的方式,即可生成可播放流。
我们再看一下 RTMP 协议。Adobe 曾经发布过一份文档《RTMP Specification》,不
过 wikipedia
指出这份文档隐藏了很多细节,单独根据它是无法正确实现 RTMP 的。不过,
它还是有参考意义的。其实 Adobe 发布之前,RTMP 协议就已经被破解的差不多了,现在
也已经有比较完善的实现,比如:RTMPDump,它提供的是 C 语言的接口,这意味着可
以很方便的在其他语言中调用。
程序框架
资源评论
danyyy
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AIS2024 valid
- 最入门的爬虫代码 python.docx
- 爬虫零基础入门-爬取天气预报.pdf
- 最通俗易懂的 MongoDB 非结构化文档存储数据库教程.zip
- 以mongodb为数据库的订单物流小项目.zip
- 腾讯云-mongodb数据库, 项目部署.zip
- 腾讯 APIJSON 的 MongoDB 数据库插件.zip
- 理解非关系型数据库和关系型数据库的区别.zip
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功