首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户1692782的专栏

    协议转换之rtsprtmp

    不过呢,本篇我们暂时不讨论这个,咱们聊技术,说到直播,rtmp协议依然是主流!不过呢,音视频中,流媒体协议rtsp也占有很大份额!日常生活呢,我们也会遇到一些不同流媒体协议转换的问题! 本篇记录实现一个rtsprtmp直播的程序!闲言少叙,接下来置入主题。 需求 有一个摄像头,比如海康的监控摄像头,可以通过rtsp的方式访问其视频画面! 实现思路 我们的程序,称之为rtsp2rtmp,使用该程序实现拉取摄像头rtsp视频,并将rtmp视频流转换为rtmp视频,然后推送到直播服务器,直播服务器采用nginx+rtmp_module的方式实现 rtsp2rtmp,使用FFmpeg API来实现! m_nRet < 0) { break; } av_packet_unref(&pkt); github传送门 https://github.com/mlfcjob/Rtsp2Rtmp.git

    4.8K30发布于 2020-07-14
  • 【使用Java编写FFmpeg实现RTSPRTMP详解】

    标题:使用Java编写FFmpeg实现RTSPRTMP详解 引言: RTSP(Real Time Streaming Protocol)是一种用于实时媒体传输的网络协议,而RTMP(Real Time 本篇博客将介绍如何使用Java编写FFmpeg来实现RTSP的拉取和RTMP的推送。 以下是一个简单的示例代码,展示了如何使用FFmpeg拉取RTSP并推送到RTMP。 步骤4:运行程序 编译并运行Java程序,你将会看到FFmpeg开始拉取RTSP并推送到RTMP。 ffmpeg多个视频推向一个rtsp地址 FFmpeg可以将多个视频推向一个RTSP地址。

    74710编辑于 2025-08-29
  • 来自专栏EasyNVR

    视频流媒体服务器RTSPRTMP方案EasyNVR如何实现视频其他直播间?

    主要原因在于rtsp协议的视频(默认是需要插件才可以播放的)经由EasyNVR处理后可以满足无插件的全平台直播。 处理后会获取到RTMP、HLS视频,这就解决了插件直播的问题,只要终端设备支持H5,就可以播放EasyNVR分发出的视频。 ? EasyNVR如何实现视频其他直播间 解答问题 1.获取到直播间的地址: ? 2.将对应的地址添加到需要的通道的CDN配置选项中 ? 3.成功将视频流到对应的rtmp流媒体直播间,并且有直播间进行视频分发。 ? ? 该功能可以动态运用,将EasyNVR接入的视频进行推到需要直播的流媒体服务器进行直播分发。

    6K20发布于 2020-04-23
  • 来自专栏RTSP/RTMP直播相关

    多路RTSP-RTMPRTMP定制版

    大牛直播SDK(Github)多路RTMP/RTSPRTMP转发软件,系原有转发SDK基础上,官方推出的Windows平台定制版。 如监控类摄像机、NVR等,通过厂商说明或Onvif工具,获取拉RTSP地址,图形化配置,完成拉流转发等操作,轻松实现标准RTMP服务器(或CDN)对接。 视频转发支持H.264、H.265(需要RTMP服务器或CDN支持扩展H.265),音频支持配置PCMA/PCMUAAC后转发,并支持只转发/录制视频或音频,RTSP端支持鉴权和TCP/UDP模式设置和 (必须填):需要转发的RTSPRTMP地址; ² RTMP地址:需要RTMP地址; ² 流播放地址:需要预览的播放地址; ² 音视频转发选项:可选择之转发音频或视频,亦或同时转发音视频; ,选中需要转发的配置项,点击“”按钮; [image] 如需停止,选中配置项,点击“停止”即可; 如需对某一路录像,在完成“录像全局配置”的前提下,选中配置项,点击“录像”即可; [image

    3.2K30发布于 2019-09-11
  • 来自专栏RTSP/RTMP直播相关

    Android平台RTSP如何添加动态水印后转RTMP或轻量级RTSP服务

    技术背景我们在对接外部开发者的时候,遇到这样的技术诉求,客户用于地下管道检测场景,需要把摄像头的数据拉取过来,然后叠加上实时位置、施工单位、施工人员等信息,然后对外输出新的RTSP,并本地录制一份带动态水印叠加后的数据 ,通过启动轻量级RTSP服务,发布RTSP,生成二次处理后的RTSP新的拉url,如果需要推送至RTMP,只要调用推送RTMP的接口即可,本地录制,可以设置录制目录等信息,保存二次编码后的MP4文件到本地 }发布RTSP://发布/停止RTSPclass ButtonRtspPublisherListener implements View.OnClickListener {public void onClick btnPusherPauseRecorder.setText("暂停录像");} else {Log.e(TAG, "Resume recorder failed..");}}}}}二次处理的数据,也可以推到 RTSP服务、推送至RTMP服务的sample代码,如果需要本地录像,也可以本地录制,配合我们的RTMPRTSP播放器,整体延迟毫秒级(实测非常低,有需要的开发者可以私聊我测试),可完全用于摄像头的控制

    76610编辑于 2023-12-25
  • 来自专栏C/C++与音视频

    视频RTMP实践

    对应RTMP,业界有很多开源方案。如使用FFMPEG,librtmp(rtmp-dump),gstream。由于ffmpeg和gstreamer比较庞大,仅仅用来,有大炮打蚊子之嫌。 接口。 \n");     return 0; } 基本思路如下: 读文件----解析NAL单元---利用 SendData发送一个完成的NAL单元完成 编译main.cpp Wrapper_RtmpLib.cpp 运行可执行程序 . 3.如果是云主机,在云主机内不能公网IP,而要内网IP 192.168.1.226,客户端访问需要外网IP。 客户端播放效果如下:。

    9.3K30编辑于 2022-06-14
  • 来自专栏TSINGSEE青犀视频

    如何对EasyRTSPLive进行修改将其支持多通道拉RTSPRTMP功能?

    最近很多用户在使用我们经典流媒体EasyNVR的时候提出一个需求:是否可以精简其中的功能模块,只做一个拉的功能,不需要流媒体的功能,类似于做一个视频网关的软件产品。答案当然是可以的。 TSINGSEE青犀视频现有的平台中已经有两款产品支持这样的功能,一款是EasyRTSPLive,另一款是EasyRTMPLive,他们的特色功能就是拉视频网关的功能。 image.png 拿EasyRTSPLive来说,当前我们编译出来的DEMO,供大家测试使用的是拉一路一路的工具版,基于这个需求,不少网友找过来问能否有一个多通道的工具版,这个也是可以的,只需要修改代码就能完成 EasyRTSPLive 上克隆代码到本地; 2、用VS2010打开工程文件,如下图: image.png 3、找到通道限定的位置代码,在main.cpp 定义的全局变量中,如下: //用户可自定义的RTSP RTMP拉流转路数,官方工具版默认1路拉,用户可通过代码定制多路RTSPRTMP #define MAX_CHANNEL_INDEX 1 4、修改为自己所需要的通道数量,如#define

    1.3K30发布于 2021-04-21
  • 来自专栏RTSP/RTMP直播相关

    如何实现Android端获取RTSPRTMP流转RTMP

    :通过RTMP直播推送SDK的编码后数据输入接口,把回调上来的数据,传给RTMP直播推送模块,实现RTSP|RTMP数据流到RTMP服务器的转发; 3. RTMP实时静音:只需要在传audio数据的地方,加个判断即可; 8. 拉流速度反馈:通过RTSP播放端的实时码率反馈event,拿到实时带宽占用即可; 9. 设置RTMPRTSP的URL; 2. 设置RTMP的URL; 3. 实时播放|录像过程中,实时静音、实施快照; 4. 实时播放; 5. 实时录像; 6. 拉取的数据,实时,对应“开始”; 7. 拉取的数据,注入轻量级RTSP服务,启动服务后,发布RTSP,对外提供可访问的RTSP URL。 注意:以上播放、录像、RTMP、注入轻量级RTSP服务四者是可单独工作,也可随时启动或停止相关功能,互不影响。

    3.6K10发布于 2021-04-06
  • 来自专栏流媒体

    Android RTMP之MediaCodec硬编码二(RTMPDump

    简介 在前面的两篇文章中:Android RTMP之MediaCodec硬编码一(H.264进行flv封装)介绍了如何MediaCodec进行H264硬编码,然后将编码后的数据封装到flv文件中。 Android平台下RTMPDump的使用介绍了如何将RTMPDump移植到Android平台下,并读取解析flv文件进行。 主要增加三个方法:建立连接,数据,释放连接。 我们还是使用Android RTMP之MediaCodec硬编码一(H.264进行flv封装)里的代码。 第三步 c++层方法实现 c++层逻辑的编写。我们将方法写到rtmp_handle.cpp。

    5.2K50发布于 2018-08-23
  • 来自专栏RTSP/RTMP直播相关

    Windows平台如何实现RTSP|RTMP录像?

    ​好多开发者使用场景,除了实现基础的低延迟RTSPRTMP播放外,还需要实现RTSPRTMP数据的本地录像功能。 本文以大牛直播SDK的Windows平台播放模块为例,介绍下如何实现RTSPRTMP录像。 功能设计 [拉]支持拉取RTSP录像; [拉]支持拉取RTMP录像; [逻辑分离]和播放、转发功能完全分离,支持随时录像; [参数设置]支持设置单个录像文件大小、录像路径等,并支持纯音频、纯视频 、音视频录制模式; [音频转码]支持音频(PCMU/PCMA,Speex等)AAC后再录像; [265支持]支持RTSP/RTMP H.265录制到MP4文件; [事件回调]从开始录像,到录像结束均有 若能从视频源获取视频时长的话,则上报, param1表示视频时长,单位是毫秒(ms)*/}设置拉的URLNT_SP_SetURL:支持rtsp/rtmp/本地FLV文件(全路径)。

    73510编辑于 2024-10-01
  • 来自专栏RTSP/RTMP直播相关

    Unity平台如何实现RTSPRTMP推送?

    技术背景Unity平台下,RTSPRTMP播放和RTMP推送,甚至包括轻量级RTSP服务这块都不再赘述,今天探讨的一位开发者提到的问题,如果在Unity下,实现RTSP播放的同时,随时RTMP推送出去 RTSPRTMP,在原生环境下老早已经有了,这里,其实就是把原生的挪到Unity即可,相关流程如下:图片技术实现本文以Windows平台为例,在RTSP播放模块的基础上,加个RTSPRTMP推送模块 ,需要注意的是,如果是其他比如PCMA、PCMU的,考虑到通用性,可以AAC后再回调数据上来,此外,拉或播放的时候,判断是不是已经打开了RTSP URL,确保同一路流在一个实例内,不要开两个实例,占用额外的资源 开始RTMP、停止:public bool StartPush(int sel, String url){ if (videoctrl[sel].is_pushing_) return RTMP推送,相对RTMPRTSP播放或,对接更容易,因为基本不涉及到页面交互,感兴趣的开发者可以尝试看。

    68300编辑于 2023-07-14
  • 来自专栏小锋学长生活大爆炸

    如何使用OpenCV RTMP直播

    服务器地址 rtmp = r'rtmp://txy.live-send.acg.tv/live-txy/' # 读取视频并获取属性 cap = cv2.VideoCapture(0) size = (int RTMP是什么? RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。 该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。 RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。 RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。 树莓派是什么?

    11.6K20发布于 2020-08-13
  • 来自专栏流媒体

    基于FFmpeg进行RTMP(二)

    在前面一节基于FFmpeg进行RTMP(一)我们写了最简单的一版代码。但细心调试过的兄弟会发现当我们把文件换成mp4后,发现上面的代码在写入文件头时报错。也就是说上一版的代码是有bug的。 说明我们的速度有问题。快了或慢了都会有问题。我们大概可以定位到,我们在计算延时的时候出现了错误。 test.mp4放到bin目录下即可 const char *inUrl = "hs.mp4"; //输出的地址 const char *outUrl = "rtmp://192.166.11.13 ////////////////////////////////////////////////////////////////// // 准备 << endl; //每一帧数据 //int64_t pts [ pts*(num/den) 第几秒显示] //int64_t dts 解码时间 [P帧(相对于上一帧的变化

    9.2K50发布于 2018-08-23
  • 来自专栏RTSP/RTMP直播相关

    Windows平台如何实现RTSP添加动态水印|视频处理后转RTMP或轻量级RTSP服务

    ​技术背景 我们在做Windows平台数据转发的时候,除了常规的RTSPRTMP推送外,还有个场景就是,好多开发者希望拉取的RTSP,做二次视频分析,或者加动态水印等,处理后的数据,再二次编码推送到 RTMP服务或轻量级RTSP服务。 技术实现 本文就以Windows平台拉取RTSP,回调yuv数据到上层,处理后的数据,二次投递到RTMP服务和轻量级RTSP服务,然后叠加动态水印,并实现处理后的数据实时录像功能,废话不多说,先上图: 上图拉取了RTSP,然后左侧窗体显示,添加动态水印后,再在右侧预览,并把数据重新投递到推送端,考虑到编码性能,我们可选硬编码。 二次编辑(如增加动态水印)或视频分析(视觉算法处理)后,再录像、RTMP或轻量级RTSP服务流程,经过二次处理后的数据,配合我们的SmartPlayer,依然可以整体毫秒级的延迟体验

    86810编辑于 2023-12-27
  • 来自专栏码客

    Nginx添加rtmp模块搭建rtmp服务器

    前言 搭建基于rtmp协议的服务器。 nginx-1.12.2 nginx 3、备份文件 cp -r /etc/nginx /etc/nginx_bak mv /usr/sbin/nginx /usr/sbin/nginx_bak 下载rtmp 模块 仓库地址:nginx-rtmp-module cd /usr/lib64/nginx/modules/ git clone https://github.com/arut/nginx-rtmp-module.git NGINX_HOME=/usr/local/nginx export PATH=$PATH:$NGINX_HOME/sbin 重新编译环境变量 source /etc/profile 配置Nginx的rtmp 请求路径,文件存放路径 hls_fragment 5s; #每个TS文件包含5秒的视频内容 } } } 启动nginx cd /usr/local/nginx

    8.9K20发布于 2019-10-22
  • 来自专栏韩曙亮的移动开发专栏

    【Android RTMP】RTMPDump 流过程 ( 独立线程 | 创建器 | 初始化操作 | 设置地址 | 启用写出 | 连接 RTMP 服务器 | 发送 RTMP 数据包 )

    文章目录 一、 Java 层传入的 RTMP 地址处理 二、 RTMPDump 流线程 三、 创建 RTMP 对象 四、 初始化 RTMP 对象 五、 设置 RTMP 地址 六、 启用 RTMP 独立线程 : RTMP 操作需要在一个独立的线程中完成 , 涉及到网络的操作都是耗时操作 , 在 Android 中都要在线程中执行 ; 2 . 初始化 RTMP RTMP_Init(rtmp); // 设置超时时间 5 秒 rtmp->Link.timeout = 5; 五、 设置 RTMP 地址 ---- 设置 RTMP 地址 , 如果设置失败 结束, 关闭与 RTMP 服务器连接, 释放资源 if(rtmp){ RTMP_Close(rtmp); RTMP_Free(rtmp); } 十一、 RTMPDump 代码 - 获取 Rtmp 地址 char* pushPath = static_cast<char *>(args); // rtmp RTMP* rtmp = 0;

    3.7K20编辑于 2023-03-27
  • 来自专栏视频云直播

    rtmp异常快速恢复方案

    紧急情况中,采取了断流迫使端重新,快速恢复了的稳定。 如上图所示,在21点47分左右,重新后,帧率稳定在30帧,卡顿率也恢复到正常水平。 2、RTMP 302重定向具体方案 为了解决流过程中,网络异常问题,采用了RTMP 302 重定向的方案,具体实现逻辑如下图所示: 步骤一,流过程中,rtmp server端支持持续弱网检测,支持域名 上述解决方案,在流过程中,通过RTMP 302的方式获取到服务器慢速信息,根据客户端以及服务器端慢速信息,来进行断流重,快速恢复直播,提高成功率。 对上述方案进行扩展,在开始时,利用302进行服务端的负载均衡。服务器端在刚收到客户端数据时,给客户端发送RTMP 302信息,来进行高负载302调度,提高的成功率。 3、结论 综上所述: 1、在流过程中,给客户端发送RTMP 302控制消息,客户端使用服务器提供的重定向地址,进行断流重,可以快速恢复异常,提升上行流质量; 2、在开始时,服务器端可以综合后台机器负载以及带宽资源情况

    3.2K10编辑于 2022-01-12
  • 来自专栏码客

    OSSRS搭建rtmp服务器

    封装成FLV 详细配置:https://github.com/ossrs/srs/wiki/v2_CN_SampleHttpFlv listen 1935; max_connections 封装成HLS 详细配置:https://github.com/ossrs/srs/wiki/v2_CN_SampleHLS listen 1935; max_connections /objs/srs -c conf/http.hooks.callback.conf 测试 ffmpeg -re -stream_loop -1 -i /data/rtmptest.mp4 -vcodec /objs/srs -c conf/ffmpeg.transcode.conf>log.txt & ffmpeg -re -stream_loop -1 -i /usr/local/srs2/doc /log.txt & ffmpeg -re -stream_loop -1 -i /data/rtmptest.mp4 -vcodec copy -acodec copy -f flv -y rtmp

    8.6K30发布于 2019-10-22
  • 来自专栏流媒体

    Android平台下使用FFmpeg进行RTMP(摄像头

    简介 前面讲到了在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

    7.4K51发布于 2018-08-23
  • 来自专栏职场亮哥

    排查rtmp协议时握手bug

    概况 流程序的过程:从一个观看地址拉,然后流到另一个地址。主要用于cdn之间,目前市面上大多数cdn厂商都愿意不支持动态,因此只能通过流程序进行。 bug现象:使用obs studio流到微赞可以成功,但是使用Erlang版本的流程序流到微赞却失败。 因此obs studio还是能成功。相对应的在我们的流程序中,需要针对这个情况不进行强认证,删除掉匹配的操作即可。 微赞流走加密流程,S2和C1不匹配,具体数据包截图如下: ? 到此,整个rtmp握手过程就比较清楚了。 至此,成功,示例图如下: ? 结论 虽然Adobe公司自己出的rtmp协议不是iso标准的,但是你们这些公司好歹也尽量按照规定来啊,贼坑。

    2.3K21发布于 2020-10-10
领券