首页 » Web前端 » php挪用rtmpdump技巧_音视频根本收集传输 RTMP封包

php挪用rtmpdump技巧_音视频根本收集传输 RTMP封包

访客 2024-12-03 0

扫一扫用手机浏览

文章目录 [+]

在根目录下供应了一个 Makefile 与一些 源文件
这里的源文件将会编译出一系列的可实行文件。
然后我们需 要的并不是可实行文件,真正的对 RTMP 的实现都在 librtmp 子目录中。
在这个子目录中同样包含了一个 Makefile 文件。
通过阅读 创造,它的源码并不多: OBJS=rtmp.o log.o amf.o hashswf.o parseurl.o 。
因此我们 不进行预编译,即直接放入 AS 中借助 CMakeLists.txt 来进行编译。
这么做可以让我们方便的对库本身进行调试或 修正(实际上我们确实会轻微修正这个库的源码)。
在 AS 中复制 librtmp 置于: ,并为其编写 CMakeLists.txt

# 预编译宏set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_CRYPTO" )# 所有源文件放入 rtmp_source 变量file(GLOB rtmp_source .c)# 编译静态库add_library(rtmp STATIC ${rtmp_source} )

在 中导入这个 CMakeLists.txt

php挪用rtmpdump技巧_音视频根本收集传输 RTMP封包 php挪用rtmpdump技巧_音视频根本收集传输 RTMP封包 Web前端

cmake_minimum_required(VERSION 3.4.1)# 导 入 其 他 目 录cmakelist add_subdirectory(src/main/cpp/librtmp) add_library(XXX SHARED ...)#XXX须要链接rtmp库target_link_libraries(XXX rtmp ...)

C++音视频开拓学习资料:点击领取→音视频开拓(资料文档+视频教程+口试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

php挪用rtmpdump技巧_音视频根本收集传输 RTMP封包 php挪用rtmpdump技巧_音视频根本收集传输 RTMP封包 Web前端
(图片来自网络侵删)
RTMP 视频数据

RTMP 视频流格式与 FLV 很相似,通过查看 FLV 的格式文档,就能够知道 RTMP 视频数据该当怎么拼接。

RTMP 中的数据便是由 FLV 的 TAG 中的数据区构成。

FLV tags 构造

如上图,第一个字节 0x09 表示此段数据为视频,数据大小为 0x00,0x00,0x2F 即 47,韶光戳为 0x00,0x00,0x00,韶光戳扩展也为 0x00。
(第二行)流 ID:0x00,0x00,0x00。
接下来便是视频数据,通过此处的 数据大小字段得知,数据长为 47 字节。
则从 0x17 开始,一贯到末了一行的 0xC0,便是数据区域,而末了的 0x00,0x00,0x00,0x3A 即 58,表示的是这个数据块除末了 4 个字节的总大小。
本处为视频数据,那么从 0x17 开始,数据内容则为下面的部分。

视频数据

AVCVIDEOPACKET

视频数据中 0x17 则表示了 1:关键帧与 7:高等视频编码 AVC,如果是普通帧,则此数据为 0x27。
而类型为: 0x00 表示这段数据为 AVC 序列头(avc sequence header)。
末了三个字节为合成韶光。
而如果类型为 AVC 序列 头接下来的数据便是下面的内容:

C++音视频开拓学习资料:点击领取→音视频开拓(资料文档+视频教程+口试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

AVC 序列头

在 AVCVIDEOPACKET 中如果类型为 0,则后续数据为:

0x01 为版本,后续数据按照上表记录,末了四字节上面说过:为这个数据块除末了 4 个字节的总大小。
个中 SPS 与 PPS 是编码器在编码 H.264 视频时,在关键帧前会编码出的关于这个关键帧与须要参考该关键帧的 B/P 帧如何解码的内容,如:宽、高档信息。

其他

一样平常情形下,组装的 RTMPPacket(RTMPDump 中的构造体)为:

这里的 sps 与 pps 表示 AVC 序列头

以是对付视频的数据封装,AVC 序列头为:

H.264 数据

H.264 码流在网络中传输时实际因此 NALU 的形式进行传输的。
NALU 便是 NAL UNIT,NAL 单元。
NAL 全称 Network Abstract Layer, 即网络抽象层。
在 H.264/AVC 视频编码标准中,全体系统框架被分为了两个层面:视频编码层面 (VCL)和网络抽象层面(NAL)。
个中,前者卖力有效表示视频数据的内容,而后者则卖力格式化数据并供应头 信息,以担保数据适宜各种信道和存储介质上的传输。
我们平时的每帧数据便是一个 NAL 单元。
往 RTMP 包中添补的便是 NAL 数据,但不是直接将编码出来的数据添补进去。
一段包含了 N 个图像的 H.264 裸数据,每个 NAL 之间由: 00 00 00 01 或者 00 00 01 进行分割。
在分割符之后的第一个字节,便是表示这个 nal 的类型。

0x67:sps0x68: pps0x65: IDR 在将数据加入 RTMPPacket 的时候是须要去除分割符的。

以是完全的封包代码为:

NALU

NALU 便是 NAL UNIT,nal 单元。
NAL 全称 Network Abstract Layer, 即网络抽象层,H.264 在网络上传输的构造。
一 帧图片经由 H.264 编码器之后,就被编码为一个或多个片(slice),而装载着这些片(slice)的载体,便是 NALU 了 。

C++音视频开拓学习资料:点击领取→音视频开拓(资料文档+视频教程+口试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

音频数据

RTMP 的音频数据相对视频比较大略,只须要根据是否为音频 audio specific config(记录音频的格式)。
如果为 audio specific config 拼接 0xAF,0x00,否则就只须要添加 0xAF,0x00。

0xAF 的由来:

我们的编码为:

10:AAC,3:44100 采样率1:采样长度1:声道。
按照位数表示数据就为:0xAF

而 audio specific config 只须要在发起推流时,发送音频数据之条件议一次即可。
其数据为两字节:

第一个数据:AAC-LC 值为 2,占用 5 位,则数据为: 0001 0

第二个数据:采样率 44100 值为 4,占用 4 位,则数据为:0100

第三个数据:声道,双声道为 2,单声道为 1,则数据为:0010(双声道),0001(单声道) 末了三位为 0,这样组成的数据 5+4+4+3=16 位,两字节。

双声道:0x12 ,0x10

单声道:0x12 ,0x08

Nginx-RTMP 做事器搭建

Linux 操作:下载 nginx wget http://nginx.org/download/nginx-1.15.3.tar.gz解压tar xvf nginx-1.15.3.tar.gz 下载 nginx rtmp 模块 wget https://codeload.github.com/arut/nginx-rtmp-module/tar.gz/v1.2.1 解压tar xvf v1.2.1 进入 nginx 目录cd nginx-1.15.3 实行:

在这个过程中可能由于环境不同而涌现不同缺点,比如短缺 pcre、openssl 等,这时候就须要安装这些库。

https://blog.csdn.net/z920954494/article/details/52132125

编译完成后,安装在当前目录的 bin 目录下。

cd bin/conf

vim nginx.conf 修正为:

实在便是从 nginx-rtmp-module-1.2.1/test/nginx.conf 中拷贝

端口占用检讨: lsof -i:8080

须要把稳的是目录与端口是否被占用,比如 8080 端口被占用,可以改为了 8081,然后须要开放端口。

C++音视频开拓学习资料:点击领取→音视频开拓(资料文档+视频教程+口试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

如果利用的阿里云做事器可以进入阿里云掌握台开放

然后点击 配置规则 ,在新页面点击添加 安全组规则 ,开放 8081 端口,然后确定,就可以了。

配置完成后,就可以启动 nginx 了在 nginx-1.15.3 目录 实行 bin/sbin/nginx 即可启动bin/sbin/nginx -s stop 停滞 一定要在 nginx-1.15.3 目录启动,由于上面的配置 error_log logs/error.log debug; 会去实行命令的目录下查找 logs。
如果 error_log 改成一个绝对路径 那就没紧要了。
在浏览器输入 【IP】:8081/stat ,能访问就表示配置完成了。
此时一旦有播放器或者推流器连接到搭建的做事器刷新 此界面就能够看到如下界面:(手机推流,ffplay、网页、potplayer 播放)

标签:

相关文章

介绍j设计教程,从入门到精通的全方位指南

在当今这个数字化、视觉化的时代,设计已经成为了一种不可或缺的技能。而j设计,作为现代设计领域的重要分支,其独特的魅力和广泛的应用领...

Web前端 2024-12-05 阅读0 评论0

介绍年化利率计算器,理财路上的得力助手

随着金融市场的不断发展,越来越多的人开始关注理财投资。而在这个过程中,如何选择合适的理财产品、如何计算投资回报,成为了投资者们关注...

Web前端 2024-12-05 阅读0 评论0