首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏RTSP/RTMP直播相关

    Android平台实现Unity3D下RTMP推送

    像Unity3D下的RTMP或RTSP播放器一样,好多开发者苦于在Unity环境下,如何高效率低延迟的把数据采集并编码实时推送到流媒体服务器,实现Unity场景下的低延迟推拉流方案。 如果只需要拿到Unity的窗体或摄像机数据推出去,可在Unity下获取到需要推送的原始数据,然后封装原生的RTMP推流接口,调用原生SDK实现数据推送,这种做法的好处是,可以自定义需要采集的数据内容,只要按照原生 ,介绍下Unity环境下的Android平台RTMP推流,数据采集在Unity完成,数据编码推送,调用大牛直播SDK(官方)Android平台RTMP直播推送SDK原生库对外二次封装的接口,高效率的实现 RTMP推送。 下图系Android平台Unity环境下采集屏幕,编码推送RTMP服务器,然后Windows平台播放器拉取RTMP流播放,为了方便看到延迟效果,特地在Android端的Unity窗口显示了当前时间,可以看到

    1.2K30发布于 2021-06-08
  • 来自专栏RTSP/RTMP直播相关

    Android平台如何实现Unity3D下RTMP推送

    像Unity3D下的RTMP或RTSP播放器一样,好多开发者苦于在Unity环境下,如何高效率低延迟的把数据采集并编码实时推送到流媒体服务器,实现Unity场景下的低延迟推拉流方案。 如果只需要拿到Unity的窗体或摄像机数据推出去,可在Unity下获取到需要推送的原始数据,然后封装原生的RTMP推流接口,调用原生SDK实现数据推送,这种做法的好处是,可以自定义需要采集的数据内容,只要按照原生 本文以Android平台为例,介绍下Unity环境下的Android平台RTMP推流,数据采集在Unity完成,数据编码推送,调用大牛直播SDKAndroid平台RTMP直播推送SDK原生库对外二次封装的接口 ,高效率的实现RTMP推送。 下图系Android平台Unity环境下采集屏幕,编码推送RTMP服务器,然后Windows平台播放器拉取RTMP流播放,为了方便看到延迟效果,特地在Android端的Unity窗口显示了当前时间,可以看到

    1.5K20发布于 2021-06-08
  • 来自专栏RTSP/RTMP直播相关

    如何在RTMP推送端和RTMP播放端支持Enhanced RTMP H.265(HEVC)

    技术实现本文以大牛直播SDK的Windows平台RTMP直播推送RTMP直播播放模块为例,考虑到老的扩展CodecID 12的场景依然使用,我们添加了个设置接口:RTMP推送端,对应文件为SmartPublisherSDK (4bits)做了如下调整: | IsExHeader(1bit)FrameType(3bits) | VideoTagHeader的第一个字节的第0位来判断是否是Enhanced RTMP格式,如果这一位是 = dts)*p |= 1;else*p |= 3; p++; *p++ = 'h';*p++ = 'v';*p++ = 'c';*p++ = '1'; //....RTMP播放端,对应的sample判断代码如下 推流URL,实现Enhanced RTMP推送,播放端拉流播放,整体延迟如下:可以看到,尽管开启了Enhanced RTMP,整体延迟还在毫秒级。 技术总结鉴于目前RTMP扩展265这块,大多还是用的老的CodecID设置为12的模式,如果需要支持新的Enhanced RTMP,除了推送端和播放端外,RTMP服务端也需要做响应的调整,来适配这种情况

    1.1K10编辑于 2024-03-05
  • 来自专栏RTSP/RTMP直播相关

    Android平台RTMP推送端实现外部数据对接推送和录像

    ​ 背景 好多开发者在做Android平台RTMP推送对接的同时,除了编码前的数据外,还有些外部编码数据推送诉求,他们希望外部的编码音视频数据不止可以实现RTMP推送,还可以同时在推送端实时录制下来,本文以我们 (官方)Android平台RTMP直播推送模块为例,介绍下外部数据对接流程和数据录制流程。 对接流程 开始推送 private boolean StartPush() { if (isPushing) return false; //relayStreamUrl = "rtmp 编码后视频宽高 * * @return {0} if successful */ public native int SmartPublisherPostVideoEncodedDataV3( * * @return {0} if successful */ public native int SmartPublisherPostAudioEncodedDataV3(

    1.2K20发布于 2021-06-21
  • 来自专栏RTMP推送

    Android平台RTMP推送模块的设计意义

    ​为什么要做RTMP推送RTMP是一种广泛使用的流媒体传输协议,它允许视频和音频数据在互联网上实时、高效地传输。 集成便利性:许多直播SDK都提供了RTMP推送的接口和示例代码,使得开发者能够相对容易地将RTMP推送功能集成到自己的应用中,降低了开发难度和成本。 做好了RTMP推送模块,发现现有的RTMP播放都不足以满足我们毫秒级的延迟诉求,继续自研框架,做了RTMP的直播播放器。本文以大牛直播SDK的Android平台RTMP直播推送模块为例。 RTMP推送: 设置推送URL:通过SmartPublisherSetURL接口设置RTMP推送的URL。推送控制:提供startPush、stopPush等接口控制推送的开始和停止。 推送RTMP示例:展示了如何配置推送参数、设置硬编码、启动和停止推送等步骤。总结RTMP优势在于它能够提供低延迟的实时音视频传输,同时具有良好的跨平台支持,可以在不同的操作系统和设备上运行。

    58210编辑于 2024-09-26
  • 来自专栏RTSP/RTMP直播相关

    Unity平台如何实现RTSP转RTMP推送

    技术背景Unity平台下,RTSP、RTMP播放和RTMP推送,甚至包括轻量级RTSP服务这块都不再赘述,今天探讨的一位开发者提到的问题,如果在Unity下,实现RTSP播放的同时,随时转RTMP推送出去 RTSP转RTMP,在原生环境下老早已经有了,这里,其实就是把原生的挪到Unity即可,相关流程如下:图片技术实现本文以Windows平台为例,在RTSP播放模块的基础上,加个RTSP转RTMP推送模块 player_handle_); videoctrl[sel].player_handle_ = IntPtr.Zero; } videoctrl[sel].is_playing_ = false;}如果需要转RTMP 开始转推RTMP、停止转推:public bool StartPush(int sel, String url){ if (videoctrl[sel].is_pushing_) return 推送,相对RTMP、RTSP播放或推流,对接更容易,因为基本不涉及到页面交互,感兴趣的开发者可以尝试看。

    69000编辑于 2023-07-14
  • 来自专栏RTSP/RTMP直播相关

    Unity3D下如何采集camera场景数据并推送RTMP服务?

    推送服务本文以大牛直播SDK开发的Unity3D下Android平台的RTMP推送camera场景的demo为例,结合Unity和原生模块交互,大概介绍下核心实现逻辑。 图片开始推送RTMP服务: public bool StartRtmpPusher() { if (is_pushing_rtmp_) { 推送: private void StopRtmpPusher() { if(! _ = 0; NT_PB_U3D_UnInit(); } is_pushing_rtmp_ = false; }技术总结Unity3D下采集camera 场景并推送RTMP具有重要的意义,可以为实时监控、在线直播、视频教程制作、增强现实和虚拟现实应用以及数据记录和分析等领域提供有力的支持。

    93140编辑于 2023-09-01
  • 来自专栏RTSP/RTMP直播相关

    RTMP推送端如何调整采集端音量

    Windows平台推送端(以C#为例): /* *设置输入音量, 这个接口一般不建议调用, 在一些特殊情况下可能会用, 一般不建议放大音量 *index: 一般是0和1, 如果没有混音的只用 Android推送端: /** * 设置输入音量, 这个接口一般不建议调用, 在一些特殊情况下可能会用, 一般不建议放大音量 * * @param index: 一般是0和1, 如果没有混音的只用 final String[] in_audio_volume_sel = new String[]{ "0", "0.2", "0.5", "0.8","1", "1.5", "2", "2.5", "3"

    90900发布于 2020-06-15
  • 来自专栏RTSP/RTMP直播相关

    如何实现RTMP推送Android Camera2数据

    Camera API2相较于API1有很大不同, 并且API2是为了配合HAL3进行使用的, API2有很多API1不支持的特性, 比如: 更先进的API架构; 可以获取更多的帧(预览/拍照)信息以及手动控制每一帧的参数 获取数据后对接RTMP推送: 通过OnImageAvailableListenerImpl 获取到原始数据,推送端以大牛直播SDK https://github.com/daniulive/SmarterStreaming / 的万能推送接口为例,获取数据后,调用SmartPublisherOnImageYUV420888() 完成数据传送,底层进行二次处理后,编码后传输即可。 不缩放 * * @param scale_height: 缩放高, 必须是8的倍数, 0不缩放 * * @param scale_filter_mode: 缩放质量, 范围必须是[1,3] videoWidth, videoHeight, 1); } } } } 以上就是基础的Android Camera2介绍,和RTMP

    1.8K00发布于 2020-04-05
  • 来自专栏用户1692782的专栏

    手撕Rtmp协议细节(3)——Rtmp Body

    上一篇讲了RTMP数据包中关于Header的数据组织格式,不过一个完整的RTMP数据包除了Header之外,紧跟着的是RTMP Body,这一篇就继续来说一下RTMP Body的数据组织结构了。 AMF英文全称Action Message Format,是Adobe定义的一套用来进行数据打包的格式,主要的版本有AFM0和AMF3,不过发展至今,实际场景中AMF0一直用的比较多,AMF3相对少见, 那么AMF和RTMP Body又有什么关系呢,不才,RTMP数据包的序列化就是按照AMF的格式进行的。 这样,我们通过对RTMP Body的分析,也熟悉了AMF0的一些标准,当然还有其他的一些类型,朋友有需要可以自行学习,举一反三了,Adobe关于AMF0和AMF3的官方文档放在下方,各位自取哈。 AMF3:https://www.adobe.com/content/dam/acom/en/devnet/pdf/amf-file-format-spec.pdf AMF0:https://wwwimages2

    3.3K40发布于 2020-05-20
  • 来自专栏RTSP/RTMP直播相关

    Unity环境下实现Camera高帧率RTMP推送

    Unity下RTMP直播背景方面不再赘述,今天主要讨论的是,Unity环境下,如何实现Camera高帧率RTMP推送,这里提到的高帧率,不再局限于常规环境下的30帧,以VR头显为例,更高的帧率(比如50 图片图片之前,我们老早实现了Unity环境下的RTMP低延迟推送,原生环境下,比如windows下,可轻松实现50帧+的编码和RTMP推送(需要播放端也有高帧率播放的能力)。 param scale_height: 缩放高, 必须是偶数, 0或负数不缩放 * * @param scale_filter_mode: 缩放质量, 传0使用默认速度,可选等级范围是:[1,3] UInt32 flag, IntPtr pReserve);以上是Unity环境下高帧率RTMP 推送一点抛砖引玉的介绍,实际开发过程中,可能还需要考虑多实例、异常网络环境处理等各种情况,如果原生开发这块,有很好的积累,这块都不难。

    93320编辑于 2022-08-21
  • 来自专栏RTSP/RTMP直播相关

    Android平台RTMP直播推送模块技术接入说明

    ​技术背景大牛直播SDK跨平台RTMP直播推送模块,始于2015年,支持Windows、Linux(x64_64架构|aarch64)、Android、iOS平台,支持采集推送摄像头、屏幕、麦克风、扬声器 audio数据(AAC/PCMA/PCMU/SPEEX)video_opt:0:不推送视频;1:推送编码前视频(YUV420SP/YUV420P/RGBA/ARGB);2:推送编码后视频(H.264)3 enhanced RTMP, SDK默认是开启enhanced RTMPRTMP推送URL设置SmartPublisherSetURL设置RTMP推送url编码前实时视频数据camera数据SmartPublisherOnCaptureVideoData 启动RTMP推送停止推送RTMPSmartPublisherStopPublisher停止RTMP推送关闭推送实例关闭实例SmartPublisherClose关闭推送实例,结束时必须调用close接口释放资源设置授权授权 GOP)、码率(bit-rate)设置;支持RTMP推送 live|record模式设置;支持前置摄像头镜像设置;支持软编码、特定机型硬编码;支持横屏、竖屏推送;支持Android屏幕采集推送;支持自建标准

    1.1K10编辑于 2024-08-07
  • 来自专栏国标视频云平台

    SkeyeRTMPPusher推送RTMP扩展支持HEVC(H265)

    不久前刚实现SkeyeRTMPPusher扩展支持h265推送,当时在网上也查找了很多资料,发现都不尽详细,而官方也没有更新对HEVC(H265,后文统称HEVC)tag的支持,反正是走了不少弯路,当然 ,在广大网友以及ffmpeg代码的帮助下我最终实现了通过SkeyeRTMPPusher推送HEVC视频帧数据到SkeyeSMS,这里我将把实现过程详细的记录下来,供广大网友参考。 首先, RTMP头部信息封装并没有定义HEVC,我们采用CDN联盟的HEVC扩展标准,将HEVC的VideoTagHeader定义为12,详见下图: 图片 然后,我们在H264封装的基础上进行改进,以支持 HEVCDecoderConfigurationRecord)); hvcc->configurationVersion = 1; hvcc->lengthSizeMinusOne = 3;

    54730编辑于 2023-04-23
  • 来自专栏RTSP/RTMP直播相关

    Windows平台RTMP直播推送集成简要说明

    好多开发者在集成大牛直播SDK (官方)的Windows平台RTMP推送模块时吓一跳,怎么这么多接口? URL */ NT_PB_E_EVENT_ID_CONNECTION_FAILED = NT_PB_E_EVENT_ID_BASE | 0x3, /*连接失败, param5表示推送URL = NT_PB_E_EVENT_ID_BASE | 0x10, /* 推送rtsp时服务器不支持rtsp推送, param5表示推送URL */ } SetCommonOptionToPublisherSDK , buffer3, buffer2.Length); IntPtr file_name_ptr = Marshal.AllocHGlobal(buffer3.Length); Marshal.Copy(buffer3, 0, file_name_ptr, buffer3.Length); capture_image_call_back

    2.8K20发布于 2021-04-01
  • 来自专栏RTSP/RTMP直播相关

    Android平台RTMP多实例推送的几种情况探讨

    好多开发者提到,如何实现Android平台,多实例推送,多实例推送,有几种理解: 1. 多路编码,多个实例分别推送到不同的RTMP URL(如Android采集板卡同时接2路出去); 2. 同一路编码,多个实例分别推送到不同的RTMP URL(如推送到内网、外网不同的RTMP服务器); 3. 部分路编码、部分路对接编码后的H.264/AAC数据,多个实例分别推送到不同的RTMP URL(混合推)。 目前,市面上的大多设计,都不够灵活,以下以“Android回调编码后的音视频数据”为例,推送一路原始的编码后的RTMP数据出去,然后,编码后的数据,回调到上层,再启动一个新的Publisher实例,推到新的 (对应新的publisherHandle),音视频编码后的数据,通过新的实例,调用编码后的音视频数据接口,继续推RTMP出去,从而实现多实例推送目的。

    75240发布于 2020-06-01
  • 来自专栏TSINGSEE青犀视频

    EasyCVR平台如何推送RTMP流实现上级平台级联?

    EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发 RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 有用户反馈,现场的设备是运动相机,不支持国标和其他协议接入EasyCVR平台,只能通过rtmp_push推送到EasyCVR平台。 EasyCVR平台机制上并不支持rtmp_push协议的级联,但是依然有办法可以实现用户的需求。 因为现场只有这种协议,所以,我们将rtmp_push协议分发出来的RTSP流再接入到EasyCVR平台,转换了一道变成了RTSP接入,再次级联就能成功获取到视频通道了。

    56130编辑于 2023-06-16
  • 来自专栏RTSP/RTMP直播相关

    Unity3D下如何实现RTMP推送摄像头或屏幕数据(Windows平台)

    好多开发者提到,苦于在unity3d下实现RTMP直播推送,本次以大牛直播SDK(Github)的Windows平台RTMP推送模块(以推摄像头为例,如需推屏幕数据,设置相关参数即可)为例,介绍下unity3d 的RTMP推送集成。 简单来说,Unity3D环境下,可以直接调用C#的接口封装,针对此,我们先做了一层封装 (nt_publisher_wrapper.cs),核心代码如下: 初始化和基础参数设置: private UInt32 event_id, Int64 param1, Int64 param2, UInt64 param3, 上层刷下即可,如下图: 经测试,unity3d下,RTMP推送,配合RTMP播放端,依然可以实现毫秒级延迟的推拉流体验。

    1.7K10发布于 2020-06-10
  • 来自专栏RTSP/RTMP直播相关

    跨平台低延迟RTSP转RTMP推送技术方案探讨

    实现RTSP摄像头数据转RTMP推送到服务器,可以用第三方库或者工具实现,总体设计架构如下:图片一个好的转发模块,首先要低延迟! 转推:通过RTMP直播推送SDK的编码后数据输入接口,把回调上来的数据,传给RTMP直播推送模块,实现RTSP数据流到RTMP服务器的转发;3. 配置FFmpeg:安装完FFmpeg后,您需要配置其命令行参数,以便将RTSP流转换为RTMP流,并将其推送到目标服务器。 SDK技术方案以大牛直播SDK的Windows平台RTSP转RTMP推送C++的demo为例:1. 开始推流到RTMP服务器:推流的流程,如之前所述,调用RTMP推送模块,然后数据源传编码后的音视频数据即可,下图的demo源码,同时展示了,RTSP流获取到后,转推RTMP的时候,数据解密的处理:bool

    1.6K40编辑于 2023-07-11
  • 来自专栏RTMP推送

    多路RTSP转RTMP推送方案的两个选择

    ​技术选型RTSP转RTMP推送到流媒体服务器,说起来技术实现不难,简单来说,获取RTSP流后,拿到未经解码的H.264/H.265和audio数据,重新打包RTMP发送出去即可。 -f flv 指定输出格式为FLV,RTMP流通常以FLV格式封装。rtmp://[服务器地址]/[应用名称]/[流密钥] 是目标RTMP服务器的推送地址。 方案2:SmartRelaySDK大牛直播SDK发布的RTSP转RTMP推送模块(SmartRelaySDK)C#的界面如下:技术设计:1. 转推:通过RTMP直播推送SDK的编码后数据输入接口,把回调上来的数据,传给RTMP直播推送模块,实现RTSP数据流到RTMP服务器的转发;3. 数据转AAC后转发:考虑到好多监控设备出来的音频可能是PCMA/PCMU的,如需要更通用的音频格式,可以转AAC后,在通过RTMP推送;7.

    76810编辑于 2024-08-09
  • 来自专栏RTSP/RTMP直播相关

    Android平台音视频推送RTMP还是GB28181?

    好多开发者可能会疑惑,走RTMP怎么可能低延迟?网上看到的RTMP推拉流延迟,总归要2-3秒起,如果是自己实现框架,RTMP推拉流逻辑自己实现的话,延迟确实可以控制在毫秒级,这个已无需赘述。 随着无纸化会议、智慧教室、智能化硬件产品的普及,RTMP的技术方案发展一度非常好,有些无人机或智能机器人,都可以自带推送RTMP流数据,配合大牛直播SDK的RTMP低延迟播放器模块,可以实现毫秒级的技术体验 图片我们实现demo的时候,RTMP推送和GB28181都放到一起了,也就是说,可以同时使用RTMP推送和GB28181设备接入,也可以单独使用。 技术对比RTMP推送图片 RTMP采用的是TCP传输,采用全自研框架,易于扩展,自适应算法让延迟更低、采集编码传输效率更高。延迟配合我们的播放器,轻松实现毫秒级延迟。 "); isPushingRtmp = true; } }停止RTMP推送//停止rtmp推送 private void stopPush() {

    69840编辑于 2023-05-26
领券