1、需求背景目前不是所有的直播推流设备都支持GB28181的国标注册,有的只能输出直播流,有的只能支持RTSP的推流。 那么,项目中如何把 rtsp推流或直播流转成GB/T281812、开启RTSP2.1、基础配置配置RTSP端口3、获取RTSP推流地址3.1、RTSP推流地址格式示例:rtsp://192.168.2.135 (stream_通道号),比如通道 6 的推流ID就是 stream_63.3、RTSP推流地址示例通道1:rtsp://192.168.2.135:1554/stream_1通道3:rtsp://192.168.2.135 :1554/stream_3通道6:rtsp://192.168.2.135:1554/stream_64、配置设备推流将上面生成的rtsp推流地址,配置到无人机 或是 推流的设备上面5、配置拉转RTSPLiveNVR 6、配置级联到GB28181国标平台具体参见:LiveNVR支持RTSP/RTMP/HLS/HTTP-FLV流转换成GB28181输出级联接入到国标平台
视频流的传输一定涉及到视频帧的获取,TSINGSEE青犀视频开发的平台比如EasyNVR、EasyGBS等观看视频的时候,1S会产生一个关键帧,是否流畅就跟视频帧有很大关系。 国标GB28181协议视频推流组件EasyGBD内的默认帧率是20,那么我们如何提高EasyGBD的推流帧率? millisPerFrame = 1000 / 30; x264.create(width, height, 30, bitrate/1000); EasyGBD是GB/T28181 Device的简称,是国标GB28181
在之前的博文中,我们和大家分享了国标EasyGBD视频推流组件在开发过程中,实现了视频采集功能(EasyGBD搜集视频采集数据功能是如何实现的),那么同样,音频采集也是我们需要完善的地方。 AudioFormat.ENCODING_PCM_16BIT, bufferSize); 3、
因此TSINGSEE青犀视频为了提高国标协议下视频传输的质量,在国标GB28181协议视频平台EasyGBS通道添加了CDN功能。 EasyGBS通道添加CDN功能的具体表现就是在每个设备播放的时候传入CDN地址,然后程序收流的时候会将流数据转推到这个地址。 然后修改这个通道的CDN地址,前端在播放的视频流传递过来,然后后端播放时将流数据转推到该地址。 下面我们测试一下,当在EasyGBS播放的时候,播放界面如下: 同时播放这个RTMP的推流cCDN地址,也可以正常播放,功能实现正常。 TSINGSEE青犀视频开发的多种视频平台中,有支持国标GB28181协议的EasyGBS,有支持RTSP协议的EasyNVR,有支持RTMP协议的EasyDSS,当然也有兼容目前市面上大部分常见协议的
1.png 2.png 3.png 4.png 5.png
tv_file{ #开启实时 live on; #开启hls hls on; #rtmp推流请求路径 测试: windows 终端 telnet 服务器地址 1935 遇到的问题: telnet不可用, 控制面板->程序和功能->启用和关闭Windows功能->勾选Telnet Client 7.推流测试 ,打开软件 在 来源 模块,点击+,媒体源,新建一个, 在本地文件添加一个视频文件上去, 勾选:循环、当源变为活跃状态时重新启动播放、在可用时使用硬件解码 在右下角 控件 模块,点击设置,点击推流 服务:自定义 服务器:rtmp://服务器地址:1935/tv_file 串流密钥:test(这处随便,也就是保存到服务器端的文件名) 开始推流: 然后在服务器段就可以看到 .ts .m3u8 文件 cd /usr/local/nginx/html/tv_file ls test-0.ts test-1.ts test-2.ts test.m3u8 8.拉流测试 下载安装
这几天我们和大家分享了不少关于国标GB28181协议的视频推流平台EasyGBD的开发过程,大家可以翻阅一下我们之前的博文,能够对EasyGBD的了解更加深入一点,当然了,我们也欢迎大家的实际测试,如果需要 EasyGBD的硬编码的流程如下: 1、初始化编码器 2、配置编码器参数 3、开始编码 4、获取编码器的输入缓存inputBuffers 和输出缓存outputBuffers 5、将要编解码的数据拷贝到
MAKEWORD(1, 1); WSAStartup(version, &wsaData); int res = 0; RTMP* rtmp = RTMP_Alloc(); RTMP_Init(rtmp); 推流 res = RTMP_SetupURL(rtmp, "rtmp://192.168.34.40/live/test");//推流 PRINTERROR(res, 1, "RTMP_SetupURL ; //if unable,the AMF command would be 'play' instead of 'publish' RTMP_EnableWrite(rtmp);//推流要设置写 \n"); //推流 FILE *fp_push=fopen("save.flv","rb"); FlvHeader flvheader; fread(&flvheader //if unable,the AMF command would be 'play' instead of 'publish' //RTMP_EnableWrite(rtmp);//推流要设置写
Android平台下RTMPDump的使用介绍了如何将RTMPDump移植到Android平台下,并读取解析flv文件进行推流。 有了上面两篇文章的基础后,接下了就是整合,在Android平台下使用MediaCodec进行硬编码,然后使用RTMPDump进行推流。 先来张效果图: ? 主要增加三个方法:建立连接,推流数据,释放连接。 我们还是使用Android RTMP推流之MediaCodec硬编码一(H.264进行flv封装)里的代码。 第三步 c++层方法实现 c++层推流逻辑的编写。我们将方法写到rtmp_handle.cpp。
一般我们讲到视频推流第一个想到的就是RTMP协议,作为基于TCP的主流推流协议,就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视/音频数据。 但是由于近年来使用国标GB28181协议的项目逐渐增加,仅依靠RTMP协议来做推流已经不能满足大家需求了,因此根据现在视频推流技术的发展,TSINGSEE青犀视频开发了EasyGBD来填补国标协议推流项目的空缺 mCamera.setErrorCallback((i, camera) -> { throw new IllegalStateException("Camera Error:" + i); }); 3、
一般在安防视频直播时,分辨率是可以通过摄像机来进行调整的,但在国标GB28181协议推流平台EasyGBD中,由于是通过手机相机直接采集视频流,则无法一键修改分辨率和码率。 我们和大家分享一下: 1、在SettingActivity中可以手动修改码率的值: 在推流页面列出当前机器的所有分辨率,可以手动修改。 给x264设置最终码率的值: int bitrate = 72 * 1000 + bitrateKbps; x264.create(width, height, 20, bitrate/1000); 3、
图片发布好之后,根据参考文章【腾讯云】TRTC直播推流实践使用云函数模板"TRTC直播推流"给对应SdkAppId的对应roomId(111)发送推流。 注意播放域名地址生成使用的AppName,StreamName必须和推流的一样,否则推流之后播放地址看不到图片云直播测试推流/播放参考云直播文档 web推流点击"云直播"->"Web推流",以"多路混流 图片设置好输入源后,可以在右边预览查看图片输入推流的WebRTC推流地址后,点击"开始推流"。 RecordURL": "https://81.71.145.239/static/", "Width": 1280, "Height": 720, "Mode": 3, , "EncryptKey": "", "AuthUrl": "" } } }}样例json中Mode为3表示录制和云直播推流模式
今天考虑一个mcu混合的实现,也就是接收多路过来的rtp流,然后转发出去一路的rtmp流,使用ffmpeg测试做的记录,刚开始一直通过ffmpeg推送的文件流不能满足要求,还是对参数配置不熟悉; 0、ffmpeg 1、udp或者rtp推流 >最简单模式: ffmpeg -re -i d:\videos\1080P.264 -vcodec copy -f rtp rtp://127.0.0.1:1234 ffplay 192.168.0.100 m=audio 5005 RTP/AVP 97 a=rtpmap:97 PCM/8000/1 a=framerate:25 c=IN IP4 192.168.0.100 2、rtsp推流 rtmp推流 ffmpeg -re -i /root/mp4/1.flv -vcodec copy -acodec copy -f flv rtmp://192.168.2.161/live/rtsp_test concat=n=3:v=1:a=1 表示有三个输入文件,输出一条视频流和一条音频流。
三、推流 因为librtmp用的是C语言,为了方便调用,我用OC封装了一下一个类RTMPPuser。 用来推流的代码是 RTMPPusher *pusher = [[RTMPPusher alloc]init]; BOOL success = [pusher connectWithURL offset += thisChunkSize; [self write:chunk]; sleep(1); } while (offset < length); } 3、 写入推流 - (NSUInteger)write:(NSData *)data{ @synchronized (self) { int sent = -1; if RTMP_Write(_rtmp, [data bytes], (int)[data length]); } return sent; } } 以上代码可以在推流
推流 推流:将直播的内容推送至服务器的过程。 即指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。 “推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是糟糕。 要想用于推流还必须把音视频数据使用传输协议进行封装,变成流数据。 常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1–3秒,对于手机直播这种实时性要求非常高的场景,RTMP也成为手机直播中最常用的流传输协议。 在这个过程中有三个要素:1-服务器【提供视频文件存储的地方】 2-传输协议【就是你要通过什么方式传输视频】3-读取终端【就是通过什么播放出来】 示意图 以下是从网络上搜寻到的有关推流与拉流的示意图, 一张示意图没有看明白,没有关系,再来一张示意图: 其实可以简要的理解为推流就是直播端,而拉流就是客户端哦。
对应RTMP推流,业界有很多开源方案。如使用FFMPEG推流,librtmp(rtmp-dump),gstream推流。由于ffmpeg和gstreamer比较庞大,仅仅用来推流,有大炮打蚊子之嫌。 NULL; NALU * CopyNALU(NALU * src); void FreeNALU(NALU * nalu); }; Wrapper_RtmpLib对外提供RTMP推流接口 \n"); return 0; } 基本思路如下: 读文件----解析NAL单元---利用 SendData发送一个完成的NAL单元完成推流 编译main.cpp Wrapper_RtmpLib.cpp 运行可执行程序推流 . 3.如果是云主机,在云主机内不能推公网IP,而要推内网IP 192.168.1.226,客户端访问需要外网IP。 客户端播放效果如下:。
撸了个FFmpeg的循环推流脚本,你的VPS除了吃灰以外还能24小时不间断直播视频。自己用的脚本,单纯分享一下,如有问题自行解决。 安装FFmpeg才能正常推流,是否现在安装FFmpeg? ${font}" sleep 2 fi } stream_start(){ # 定义推流地址和推流码 read -p "输入你的推流地址和推流码(rtmp协议):" rtmp # 判断用户输入的地址是否合法 ${font}" echo -e "${green} 1.安装FFmpeg (机器要安装FFmpeg才能正常推流) ${font}" echo -e "${green} 2.开始无人值守循环推流 ${font }" echo -e "${green} 3.停止推流 ${font}" start_menu(){ read -p "请输入数字(1-3),选择你要进行的操作:" num case "
简介 前面讲到了在Android平台下使用FFmpeg进行RTMP推流(视频文件推流),里面主要是介绍如何解析视频文件并进行推流,今天要给大家介绍如何在Android平台下获取采集的图像,并进行编码推流 学习本章之前最好先看之前的文章,这里是一套连贯的教程 RTMP服务器搭建(crtmpserver和nginx) 音视频编码相关名词详解 基于FFmpeg进行RTMP推流(一) 基于FFmpeg进行RTMP 推流(二) Linux下FFmpeg编译以及Android平台下使用 Android平台下使用FFmpeg进行RTMP推流(视频文件推流) 打开摄像头并设置参数 具体代码查看CameraActivity.java (ofmt_ctx, pCodec)这个就和之前的推文件流一样了。 输出视频数据 ret = av_interleaved_write_frame(ofmt_ctx, &enc_pkt); 释放资源 在结束编码推流后我们也需要释放相关的资源 if (video_st
云直播测试推流/播放参考云直播文档 web推流点击"云直播"->"Web推流",以"多路混流"为例,选择"多路混流" ? 输入推流的WebRTC推流地址后,点击"开始推流"。看到界面上显示已经再推流 ? url,可以看到直播推流的画面,表示推流/播放测试成功。 RecordURL": "https://81.71.145.239/static/", "Width": 1280, "Height": 720, "Mode": 3, , "EncryptKey": "", "AuthUrl": "" } } }}样例json中Mode为3表示录制和云直播推流模式
流媒体系统是一个比较复杂的系统,简单来说涉及三个角色:流媒体服务器、推流客户端和收流客户端。推流客户端是内容生产者,收流客户端是内容消费者。示意图如下: ? 本文提及的收流与推流的功能,属于协议层的处理。 2.2 推流 推流有两个需要注意的地方。 rtmp推流必须推送flv封装格式,udp推流必须推送mpegts封装格式,其他情况就当作是输出普通文件。这里使用push_stream变量来标志是否使用推流功能,这个标志后面会用到。 推流测试: .