1、首先,我们需要打开相应的工具软件并单击进入。
2、然后在以下界面中,我们可以看到上面的浏览器图标,点击进入工具自己的浏览功能。
3、在以下界面中,我们进入您想要获得直播的实时房间,点击进入。
4、然后我们可以看到界面显示播放按钮,点击进入。
5、这样,在工具的右上角会出现一个红点提示,点击进入视图。
6、点击后,我们可以看到这个直播的rtmp直播地址,如下图所示。
推流到Nginx的时候,推流地址是指向appname的,每路流是根据streamname来保证原子性的,所以当有两路流的时候,更改推流地址的streamname即可保证流的原子性。PS:
推流地址为rtmp://localhost:1935/appname/streamnameNginx 是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择
下面介绍如何在Mac上搭建流媒体服务器,以便后续的自己研究的项目或者demo向服务器上进行推流
首先需要安装brew,brew是一款管理软件的第三方平台,安装的方式也很简单,请自行查阅安装方式
执行下面2句命令,即可安装rtmp推流的nginx服务器
执行完后,可以查看ngix安装在哪里
可以看到M1 是安装在这个目录下/usr/local/etc/nginx
打开这个目录,可以看到有个nginxconf文件,这里就是服务器的一个配置文件,如果支持rtmp,则里面的内容会有一个rtmp的json
这个json说明:
1你本地的nginx服务器会监听1935端口号,
2服务器会创建一个mytv的程序
后续你可以向这个地址进行推流,并且进行拉流播放
后面我们会使用ffmpeg向这个地址推流
rtmp://localhost:1935/mytv/room
并且用vlc拉取这个地址的流进行播放
执行命令,即可启动nginx服务器
验证是否启动成功,只需要在浏览器中访问下以下链接
在浏览器地址栏输入: >RTMP视频流格式与FLV很相似,通过查看FLV的格式文档,就能够知道RTMP视频数据应该怎么拼接。
RTMP中的数据就是由FLV的TAG中的数据区构成。
一般情况下,组装的RTMPPacket(RTMPDump中的结构体)为:
NALU就是NAL UNIT,nal单元。NAL全称Network Abstract Layer, 即网络抽象层,H264在网络上传输的结构。一帧经过 H264 编码器之后,就被编码为一个或多个片(slice),而装载着这些片(slice)的载体,就是 NALU 了 。
我们通过x264编码获得一组或者多组 x264_nal_t 。结合RTMP,我们需要区分的是SPS、PPS、关键帧与普通帧:
一段h264视频由N组GOP(group of picture)组成,GOP指的就是画面组,一个GOP是一组连续的画面 。之前的学习中我们知道I帧能够独立解码,而P、B需要参考其他帧。
属于I帧的子集,有一种特殊的I帧,被称之为IDR帧,IDR帧的作用为即时刷新。
上面的这张描述的是2组GOP。其他I帧与IDR帧的区别就在于:刷新。当解码器解码帧5的时候,可以跨过帧4参考到帧3,普通I帧不会导致解码器的解码信息数据刷新。而IDR帧则会刷新解码需要的SPS、PPS数据,所以帧8不可能跨帧7参考解码。
往RTMP包中填充的是H264数据,但不是直接将x264编码出来的数据填充进去。
一段包含了N个图像的H264裸数据,每个NAL之间由:00 00 00 01 或者 00 00 01进行分割。
在分割符之后的第一个字节,就是表示这个nal的类型。
即为上面的
在将数据加入RTMPPacket的时候是需要去除分割符的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)