RTMP协议封包由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte.完整的RTMP包头应该是12bytes,包含了时间戳,AMFSize,AMFType,StreamID信息, 8字节的包头只纪录了时间戳,AMFSize,AMFType,其他字节的包头纪录信息依次类推 。
Streaming from RTSP -> Get Audio/Video frame -> Convert frame -> RTMP push。librtmp提供了推流的API,可以在rtmp.h文件中查看所有API。
与 HTTP同样是一个基于 TCP 的 Real Time Messaging Protocol。通过阅读 发现,它的源码并不多: OBJS=rtmp.o log.o amf.o hashswf.o parseurl.o 。
RTMP 在可靠流式传输的基础上提供了双向的消息多路复用服务,在通讯双方之间传输与时间相关的并行流数据,如音频,视频和数据消息。协议实现方通常为不同的消息类型指定不同的优先级,这样在网络带宽受限时能改变底层传输顺序。
RTMP是一种用来进行实时数据通信的网络协议,主要是将平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信,是目前主流的流媒体传输协议,广泛用于直播领域,可维持持久网络连接并允许低延迟通信。
推流推流:将直播的内容推送至服务器的过程。即指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是糟糕。
几乎所有 IP 摄像机都支持 RTSP,这是因为 IP 摄像机早在 RTMP 协议创建之前就已经存在,与 RTSP 和 IP 摄像机结合使用时,IP 摄像机本身充当 RTSP 服务器,这意味着要将摄像机连接到 IP 摄像机服务器并广播视频。
RTMP作为目前主流的流媒体传输协议,广泛应用于音视频领域。那么我们如何快速在嵌入式板子上搭建起自己的rtmp流媒体服务器?本篇文章将带大家实践一下。概述Nginx是一个以高效稳定著称的高性能的HTTP和反向代理web服务器,它同时也是基于事件驱动开发的异步高性能跨平台服务器。