摘要: Linux SmartPlayerSDK背景 Linux(含x86_64架构和aarch64架构)的RTSP|RTMP直播播放SDK,是大牛直播SDK发布的一款用于Linux平台的视频播放器开发库,支持多种视频流协议,旨在提供低延时的流媒体播放和高质量的渲染。通过集成此SDK,开发者可以方便地在应用 阅读全文
posted @ 2025-03-27 22:09 音视频牛哥 阅读(1) 评论(0) 推荐(0)
摘要: ngx_rtmp_hls_module 用于支持 RTMP 流式传输的 HLS (HTTP Live Streaming) 模块的代码。它包含了实现流媒体文件切片、播放列表生成、加密等功能的多个模块和函数。下面我会针对初学者逐步讲解代码的主要部分。 1. 模块结构 全局变量和函数: next_pub 阅读全文
posted @ 2025-03-27 21:40 音视频牛哥 阅读(2) 评论(0) 推荐(0)
摘要: 在实时视频流的场景中,RTMP 协议作为一种传统且高效的流媒体传输协议,广泛应用于各类直播和点播系统。两款流行的开源 RTMP 服务器分别是基于 Nginx 的 Nginx RTMP 模块 和 SRS(Simple Real-Time Server)。这两者都在流媒体行业有着广泛的应用,各自有其优缺 阅读全文
posted @ 2025-03-27 15:48 音视频牛哥 阅读(9) 评论(0) 推荐(0)
摘要: 引言 Nginx 是一个高性能的 Web 服务器和反向代理服务器,广泛应用于大规模网站的高并发访问中。RTMP(Real-Time Messaging Protocol)是由 Adobe 提出的一个用于流媒体传输的协议,广泛应用于视频直播领域。通过 Nginx 的 RTMP 模块,我们可以轻松实现一 阅读全文
posted @ 2025-03-27 15:33 音视频牛哥 阅读(5) 评论(0) 推荐(0)
摘要: ngx_rtmp_mp4.c 实现了 Nginx RTMP 模块中的 MP4 支持,主要用于将音视频流保存为 MP4 文件格式。MP4 文件格式被广泛应用于视频流的存储与播放,它包括了多个结构化的数据块(boxes),如 ftyp、moov、mdat 等。Nginx RTMP 使用该模块将实时的 R 阅读全文
posted @ 2025-03-27 14:57 音视频牛哥 阅读(2) 评论(0) 推荐(0)
摘要: ngx_rtmp_dash_module.c实现了一个 Nginx RTMP 模块,主要功能是支持通过 DASH(动态自适应流媒体)协议进行流媒体发布。DASH(Dynamic Adaptive Streaming over HTTP)是一种流行的视频流协议,它允许根据网络状况自动调整视频的分辨率和 阅读全文
posted @ 2025-03-27 14:52 音视频牛哥 阅读(2) 评论(0) 推荐(0)
摘要: ngx_rtmp_send.c 是 Nginx RTMP 模块中的发送部分,主要用于构建和发送 RTMP 消息。它处理各种 RTMP 控制消息和用户消息的创建与发送,涵盖了 RTMP 协议中的多种消息类型,如 chunk size、abort、ack、ping、play status 等。 1. 宏 阅读全文
posted @ 2025-03-27 12:54 音视频牛哥 阅读(1) 评论(0) 推荐(0)
摘要: ngx_rtmp_limit_module.c 实现了一个 Nginx RTMP 模块,主要功能是限制 RTMP 连接的数量。该模块使用共享内存来维护连接的计数,并在超过最大连接数时拒绝新连接。下面我们来详细分析这段代码。 1. 核心数据结构 1.1 ngx_rtmp_limit_main_conf 阅读全文
posted @ 2025-03-27 12:44 音视频牛哥 阅读(6) 评论(0) 推荐(0)
摘要: ngx_rtmp_receive.c 是 Nginx RTMP 模块中的接收部分,主要处理 RTMP 协议的消息接收、解析和处理。通过对不同类型的 RTMP 消息进行解析和分发,它为 Nginx RTMP 流媒体服务器提供了接收流数据、用户命令、AMF 数据等功能。以下是这段代码的详细分析。 1. 阅读全文
posted @ 2025-03-27 12:23 音视频牛哥 阅读(1) 评论(0) 推荐(0)
摘要: ngx_rtmp_log_module.c 代码是 Nginx RTMP 模块中的日志模块,主要用于记录 RTMP 流会话中的各类操作和事件。通过配置,用户可以定制 RTMP 服务器的日志输出,包括客户端连接、流发布、播放、断开等信息的日志记录。该模块支持灵活的日志格式,并允许将日志输出到指定文件。 阅读全文
posted @ 2025-03-27 12:20 音视频牛哥 阅读(7) 评论(0) 推荐(0)
摘要: ngx_rtmp_stat_module 是 Nginx RTMP 模块中的统计模块,提供了实时 RTMP 流量统计功能,允许 Nginx RTMP 服务器输出与流、带宽、客户端等相关的统计信息。这些统计信息通常以 XML 格式输出,供外部监控和管理系统使用。此模块允许通过 HTTP 请求查看 RT 阅读全文
posted @ 2025-03-27 12:17 音视频牛哥 阅读(1) 评论(0) 推荐(0)
摘要: ngx_rtmp_handler 是 Nginx RTMP 模块中的核心处理部分,主要负责处理 RTMP 流会话中的数据接收、发送、ping 操作以及分块大小的设置等。 1. 全局变量 ngx_rtmp_naccepted: 记录接受的 RTMP 连接数。 ngx_rtmp_bw_out 和 ngx 阅读全文
posted @ 2025-03-27 11:34 音视频牛哥 阅读(2) 评论(0) 推荐(0)
摘要: ngx_rtmp_mp4_module 实现了 Nginx RTMP 模块中的 MP4 相关功能,主要用于处理 RTMP 流的 MP4 视频文件格式。这包括了从 MP4 文件中解析音视频数据,并将其转换为 RTMP 协议流的过程。 1. 模块的主要目标 该模块的目标是支持 RTMP 流媒体协议与 M 阅读全文
posted @ 2025-03-27 11:13 音视频牛哥 阅读(2) 评论(0) 推荐(0)
摘要: ngx_rtmp_proxy_protocol 实现了 Nginx RTMP 模块中的 Proxy Protocol 功能。Proxy Protocol 是一种用于在代理服务器和后端服务器之间传递客户端信息的协议,通常用于传递客户端的真实 IP 地址和端口信息。在 Nginx 中,Proxy Pro 阅读全文
posted @ 2025-03-27 11:03 音视频牛哥 阅读(4) 评论(0) 推荐(0)
摘要: ngx_rtmp_netcall_module 模块主要实现了 RTMP 会话与外部 HTTP 服务的交互,它通过发起 HTTP 请求和处理外部服务的响应来扩展 RTMP 服务器的功能。通过这个模块,Nginx 可以向外部系统发送实时通知、获取数据或者进行其他类型的网络调用。该模块支持 HTTP 请 阅读全文
posted @ 2025-03-27 10:58 音视频牛哥 阅读(1) 评论(0) 推荐(0)
摘要: 1. 配置指令 模块通过 ngx_rtmp_notify_commands 定义了多个配置指令,这些指令允许用户配置与 RTMP 会话相关的事件通知 URL 和方法。 enum { NGX_RTMP_NOTIFY_PLAY, NGX_RTMP_NOTIFY_PUBLISH, NGX_RTMP_NOT 阅读全文
posted @ 2025-03-27 10:48 音视频牛哥 阅读(2) 评论(0) 推荐(0)
摘要: 1. ngx_rtmp_amf.h 头文件分析 该文件定义了 AMF 数据格式的基本类型、扩展类型、读写标志和数据结构。 主要常量和类型定义: 基本类型(用于标识 AMF 数据类型): NGX_RTMP_AMF_NUMBER: 数字类型(0x00) NGX_RTMP_AMF_BOOLEAN: 布尔类 阅读全文
posted @ 2025-03-27 10:37 音视频牛哥 阅读(3) 评论(0) 推荐(0)
摘要: ngx_rtmp_live_module.h 头文件分析 这个头文件定义了直播模块相关的结构体、函数声明和一些常量,主要用于支持 RTMP 协议中的直播流。 1. 核心数据结构: ngx_rtmp_live_chunk_stream_t: 该结构体用于表示一个数据流中的“块”,包含: active: 阅读全文
posted @ 2025-03-27 10:17 音视频牛哥 阅读(3) 评论(0) 推荐(0)
摘要: 1. ngx_rtmp_relay_module.h 头文件分析 这个头文件主要定义了与 RTMP 中继(relay)相关的数据结构、函数声明以及一些常量。 主要数据结构: ngx_rtmp_relay_target_t:代表一个 RTMP 中继目标。包含了目标的 URL、应用名称、播放路径、SWF 阅读全文
posted @ 2025-03-27 09:57 音视频牛哥 阅读(1) 评论(0) 推荐(0)
摘要: ngx_rtmp_bitop.h 头文件分析 这个头文件定义了与比特流读取相关的数据结构和函数声明,具体包括: 结构体 ngx_rtmp_bit_reader_t: pos:一个指针,指向当前读取的位置。 last:一个指针,指向数据的结束位置。 offs:当前字节内的偏移量,表示当前读取的比特位置 阅读全文
posted @ 2025-03-27 09:51 音视频牛哥 阅读(2) 评论(0) 推荐(0)