背景 尽管Windows平台有诸多优势,Linux平台的发展还是势不可挡,特别实在传统行业,然而Linux生态构建,总是差点意思,特别是有些常用的组件,本文基于已有的Linux平台RTSP、RTMP播放模块 ,构建Unity下的RTSP和RTMP直播播放。 先上个直观感受图,本视频以Windows平台采集秒表计时器窗体,然后编码打包传输到RTMP服务,Unity3D的Linux平台RTMP播放器拉流播放,整体延迟毫秒级。 _ + 1) / 2); u3d_frame.y_stride_ = d_y_stride; u3d_frame.u_stride_ = d_u_stride; u3d_frame.v_stride Unity下,简单来说就是拉流解码回调,上层绘制,其实也没有那么复杂,需要注意的是DllImport的写法、之前C++结构体或枚举的转换、Unity3D对Linux的版本兼容等一些细节,对熟悉C#的开发者来说
好多开发者在做AR、VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大、而且周期长,不适合快速出产品 废话不多说,以Windows平台多路播放为例: 1.Native播放器吐RGB/YUV420/NV12等其中的一种未压缩的图像格式 比如Windows平台,我们回调YUV上来(NT_SP_E_VIDEO_FRAME_FROMAT_I420 ),本文以调用大牛直播SDK(Github)的Windows平台RTSP、RTMP播放器SDK为例,具体代码如下: public void Play(int sel) { u3d_frame.v_stride_ = d_v_stride; u3d_frame.y_data_ = new byte[d_y_size]; u3d_frame.u_data 具体播放效果如下 windows4player.png 总结 Unity3d下,做多路播放的话,首先确保调用的拉流解码数据的模块具备回调yuv/rgb数据能力,回上来后,再上层直接刷新显示即可,是不是没有你想的那么复杂
技术背景好多开发者,提到希望在Unity的Android头显终端,播放2路以上RTMP或RTSP流,在设备性能一般的情况下,对Unity下的RTMP|RTSP播放器提出了更高的要求。 实际上,我们在前几年发布Unity下直播播放模块的时候,就已经支持了Android多实例播放RTMP|RTSP,随着大家对这块的技术诉求和性能要求越来越高,我们需要持续考虑如何低资源占用的播放多实例流。 对于每一路RTMP或RTSP流,可以分别创建个播放实例,并启动播放。可以创建一个管理类,用于统一管理多个播放器实例,方便对多路流的播放状态进行监控和控制。 ;NT_U3D_SetRTSPTimeout(videoctrl[sel].player_handle_, rtsp_timeout); //设置RTSP超时时间 以上是Unity下多路播放RTMP|RTSP的技术探讨,感兴趣的开发者,可以单独跟我沟通讨论。
随着VR类、游戏类场景的快速发展,开发者对Unity3d低延迟的直播需求量越来越大,前两年,大牛直播SDK发布了Windows平台、Android平台和iOS平台的Unity3d RTMP和RTSP的播放 本文以Android平台为例,我们的实现:基于大牛直播SDK现有非常成熟的native RTMP和RTSP播放模块,回调解码后的原始数据,传递给Unity3d,实现相应的绘制即可,对应demo,可以参考 Native RTSP或RTSP直播播放SDK回调RGB/YUV420/NV12等其中的一种未压缩的图像格式; 2. Unity3D创建相应的RGB/YUV420等Shader; 3.Unity3D从各个平台获取图像数据来填充纹理即可。 "); } is_running = true; } 开始播放后,native模块,回调yuv/rgb数据,unity3d模块,做相应的绘制处理即可。
技术背景好多开发者,希望我们能探讨下Unity平台RTMP或RTSP直播流数据播放和录制相关的模块,实际上,这块流程我们已经聊过多次,无非就是通过原生的RTMP或者RTSP模块,先从协议层拉取到数据 目前,Unity3D下,我们覆盖了以下常用的模块:Windows平台RTMP直播推送模块(采集Unity窗体、摄像头或屏幕);Windows平台轻量级RTSP服务模块(采集Unity窗体、摄像头或屏幕) ;Windows平台RTMP|RTSP直播播放模块;Linux平台RTMP直播推送模块(采集Unity窗体、Unity声音),也可扩展轻量级RTSP服务模块;Linux平台RTMP|RTSP直播播放模块 |RTSP直播播放模块;iOS平台RTMP|RTSP直播播放模块。 图片技术实现本文以Android平台RTMP、RTSP播放模块为例,介绍下Unity相关接口设置和逻辑处理:开始播放 public void Play() { if (is_running
从摄像机获取的RTSP视频流直接在浏览器中播放,这里采用vlc插件进行播放,设置步骤如下 1、下载32位的vlc播放器,安装时选择安装插件,安装路径不要有空格,注意64位播放器安装上也不能正常播放 安装目录,可参考你的安装路径进行修改,注意不能有空格 3、新建一个html页面,内容包含以下代码。 events=’false’width=”720″height=”410″> object> div> body> 其中,value=’rtsp://184.72.239.149/vod/mp4://BigBuckBunny loop: (true或false),是否循环 fullscreen:是否全屏 controls:显示默认的控件 4、目前测试IE浏览器和360浏览器可以正常支持vlc插件播放 5、若需要播放多个视频 ,将object标签拷贝几次,将id改一下,将不同的RTSP视频流地址修改即可。
今天就Unity下的RTSP|RTMP的低延迟播放,从以下几个维度,抛砖引玉,做个探讨: 选择合适的播放插件 Unity下的RTSP|RTMP低延迟播放,业内想到最多的是大牛直播SDK的SmartPlayer ,支持 RTMP 和 RTSP 直播流播放,在资源占用、延迟等方面表现较好。 [支持播放协议]RTSP|RTMP; [多实例播放]支持多实例播放; [事件回调]支持网络状态、buffer状态等回调; [视频格式]支持H.265、H.264,此外,还支持RTSP MJPEG播放; 技术实现以大牛直播SDK的Windows平台Unity下的RTSP|RTMP直播播放模块为例,开始播放实现如下,开始播放之前,可以选择用软解码还是硬解码:/* SmartPlayerWinMono.cs 4路海康2560*1440分辨率的RTSP流,资源占用如下:总结Windows平台如果对延迟和资源占有等,要求非常高,可以选择合适的低延迟RTSP或RTMP播放插件、优化播放参数设置、优化网络环境、优化代码和渲染流程
使用2比1的全景视频,把VedioPlayer组件加到球体上。 因为球体是使用mesh,会受到光照的影响,导致视频可能出现一边明一边暗情况,所以把球的shader换为自发光
如果基于Unity3d完全重新开发一个播放器,代价大,周期长,不适合快速出产品,最好的方式就是集成现有Native平台上成熟稳定播放器. 集成Navtive播放器可行性分析: 安卓: Unity3d可以调用安卓java接口,这方面的例子很多,搜索能找到一大堆。 IOS: Unity3d 可以调用C接口, c又可以调用object-c,那么C#--call-->C---call---object-c. 这类例子也非常多。 Windows: Unity3d调用C#就不用说了,天生支持,C#调用c dll, 可以使用P/INVOKE技术,或者把C接口封装成com组件也可以。 综上Unity3d和3个平台交互是没问题的. 这三个平台已经有成熟稳定低延时的rtmp/rtsp播放器SDK了,只要这些现有的播放SDK能吐图像数据, 然后让Unity3d绘制即可。
好多开发者的使用场景,需要在Windows特别是Android平台实现Unity3D的全景实时视频渲染,本文以Windows平台为例,简单介绍下具体实现: 如果是RTSP或RTMP流数据,实际上难点,主要在于拉取 RTSP或RTMP流,解析解码,然后把解码后的YUV数据,回调到Unity层,Unity创建个Sphere,创建个材质球(Material),并把材质球挂在到Sphere即可。 本文以Windows推送端采集全景视频,编码推送到RTMP服务器,播放端拉流回调数据并在Unity渲染为例(左侧是Unity播放端,滑动鼠标,可以实现全景内容切换): unity全景.jpg 废话不多说 ,大概流程如下: 本文以调用我们写的RTSP、RTMP直播播放模块为例,首先是初始化模块,然后设置拉流的参数信息: public void Play(int sel) { if (videoctrl 0.0f, 0.0f, 0.0f); } } 以上是Unity3D下实现RTMP或RTSP全景视频播放的大概流程,感兴趣的开发者可自行尝试。
GitHub – 131/h264-live-player: A live h264 player for the browser (ideal for raspberrypi / raspicam ) 网页播放 rtsp视频流 原文:网页播放rtsp视频流_江山夜雨的博客-CSDN博客_web播放rtsp RTSP协议 (1)是流媒体协议。 (2)RTSP协议是共有协议,并有专门机构做维护。 (3)RTSP协议一般传输的是 ts、mp4 格式的流。 (4)RTSP传输一般需要 2-3 个通道,命令和数据通道分离。 如果客户使用ie或者firefox的话,可以使用vlc player,vlc player 同样需要安装插件,需要电脑上安装vlc player的本地客户端(安装时勾选插件选项),然后通过 标签来引入播放 loop="false" controller="true" pluginspage="http://www.apple.com/quicktime/"></embed> </object> 3、
1.using UnityEngine; using System.Collections; using pumpkin.swf; using System.Collections.Generic; using pumpkin.events; using pumpkin.display;
文章目录 一、 编辑模式与播放模式 1、 编辑模式示例 2、 播放模式示例 一、 编辑模式与播放模式 ---- Unity 编辑器 中 有 2 种模式 : 编辑模式 : Edit Mode , 进入 Unity 编辑器后的 默认模式 , 在该模式下可以任意添加物体场景 , 修改物体属性 , 进行场景编辑 ; 播放模式 : Play Mode , 点击工具栏的 运行按钮 , 进入运行模式 , 在该模式下也可以添加物体 , 编辑物体属性 , 但是一旦退出该模式 , 添加修改内容不会保存 , 会自动消失 ; 1、 编辑模式示例 进入 Unity 编辑器的默认模式 , 可以任意地添加元素并进行保存 ; 2、 播放模式示例 " 内容 ; 退出 播放状态 后 , 之前添加的球体消失 ; 该模式中 , 修改物体属性 , 添加删除物体 , 效果马上可见 ; 但是一旦退出 播放模式 回到 编辑模式 , 在播放模式的所有操作都会被删除
本代码是使用GStreamer播放RTSP视频流,没有使用playbin,而是自己构建pipeline,经测试可以正常播放视频。 data.sink), "sync", FALSE, NULL); /* Set the URI to play */ g_object_set (data.source, "location", "rtsp pad */ gst_object_unref (sink_pad); } 编译命令: gcc rtspplay.c `pkg-config --cflags --libs gstreamer-1.0` RTSP 地址换成自己的即可,上述代码只是简单展示如何使用pipeline播放RTSP视频。
最近项目中需要实时播放摄像头rtsp视频流,于是就专门做了些研究。而浏览器不能直接播放,只有通过插件或者转码来实现这个需求。 方案一: html5 + websocket_rtsp_proxy 实现视频流直播 实现原理 实现步骤 服务器安装streamedian服务器 客户端通过video标签播放 var errHandler rtmp方式的最大的优点在于低延时,经过测试延时普遍在1-3秒,可以说很实时了;缺点在于它是adobe开发的,rtmp的播放严重依赖flash,而由于flash本身的安全,现代浏览器大多禁用flash flash允许 参考链接 方案三:ffmpeg + video,rtsp转hls播放 HLS (HTTP Live Streaming) 直播 是有苹果提出的一个基于http的协议。 复制代码 优缺点 优点: 可以直接播放RTSP,无需任何中介服务器的帮助 缺点: 需要手动安装插件; 基于NPAPI,不被最新的 Chrome 和 Firefox 支持 如果你项目的其他功能都能兼容客户电脑上的
Unity环境下RTMP|RTSP播放器 Unity环境下RTMP或RTSP直播播放我们前几年就有发布,并已应用在好多传统行业领域,比如教育或工业仿真或一些低延迟的控制场景。 Native RTSP或RTSP直播播放SDK回调RGB/YUV420/NV12等其中的一种未压缩的图像格式; 2. Unity3D创建相应的RGB/YUV420等Shader; 3.Unity3D从各个平台获取图像数据来填充纹理即可; 需要注意的有几点: 1. 相关博客: Windows平台Unity3d下如何同时播放多路RTSP或RTMP流 https://cloud.tencent.com/developer/article/1800633 如何在Unity3d 平台下低延迟播放RTMP或RTSP流 https://cloud.tencent.com/developer/article/1592731
三、协议功能播放控制:客户端可以通过RTSP命令控制媒体流的播放,如播放、暂停、停止、快进和快退等。 如何实现RTSP播放器 本文以大牛直播SDK的Windows平台RTSP直播播放器为例,大概介绍下,如何集成RTSP直播播放能力。 D3DRender检测目前,几乎很少存在不支持D3D绘制的情况,考虑到系统通用性,我们在播放之前,先做检测,具体调用接口如下:/* * handle: 播放句柄 * hwnd: 这个要传入真正用来绘制的窗口句柄 NT_SP_StartPlay开始播放RTMP或RTSP流数据。 停止播放NT_SP_StopPlay停止播放RTMP或RTSP流数据。关闭播放实例NT_SP_Close调用Close接口后,player handler置空。
一个URL可以是“http://myserver.com/myvideo.mp4”或“rtsp://myserver.com:8080/mystream.rtsp”,这取决于所使用的平台支持和流媒体服务 ○ http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8 RTSP rtsp://rtmp.infomaniak.ch/livecast 在这个例子中,我们展示了如何使用组件在材质上播放视频,材质被应用到场景中的3D模型上。 这对于在3D网格上播放视频非常有用。 Demo_Mapping3D.unity 1.Demo包含一个视频播放器和一个3D场景 2.有些3D模型的影像是透过pply ToMaterial手写板制作的 Demo_Multiple.unity
技术背景2015年,在大家精力放在点播播放的时候,大牛直播SDK已开始布局RTMP、RTSP的低延迟直播技术。 技术特点超低延迟与稳定性超低延迟:大牛直播SDK的RTSP播放器在延迟控制方面表现出色,能够将播放延迟稳定地控制在较低水平,这对于直播场景尤为重要,能够显著提升用户体验。 功能丰富多实例播放:支持同时播放多路RTSP流,适用于需要同时监控多个视频源的场景。 功能覆盖 [支持播放协议]高稳定、超低延迟、业内首屈一指的RTSP直播播放器SDK; [多实例播放]支持多实例播放; [事件回调]支持网络状态、buffer状态等回调; [视频格式]支持H.265、H.264 RTSP播放器在超低延迟、稳定性、跨平台支持、功能丰富性、易用性与集成性等方面均表现出色,是一款值得推荐的流媒体播放解决方案。
Video is decoded and presented in the browser using the W3 Media Source Extensions that is well supported 实现了浏览器 MSE (Media Source Extensions) 播放相机 RTSP (Real Time Streaming Protocol) 流。 update sudo apt-get install valkka # 安装 nginx sudo apt-get install nginx # 安装 python websockets pip3 ://:8554/test}' # 测试接收 RTSP 流 vlc rtsp://127.0.0.1:8554/test 启动程序: killall -9 nginx python3 ws_serve_new.py 更多 技术: WebSocket[2] MediaSource[3]: 构建媒体流,供 video/audio 元素播放 WebRTC[4]: 可直接捕获客户端视频流,并点对点传输、不依赖服务器中转 WebCodecs