
流媒体
CarEye 官方博客
这个作者很懒,什么都没留下…
展开
-
CarEye 视频平台解决方案
介绍视频平台的方案原创 2023-06-13 16:02:57 · 1315 阅读 · 0 评论 -
车载和安防视频平台的融合
GB28181和GT1078视频平台的整体融合,促进CarEye云平台持续发展原创 2022-09-01 17:01:15 · 369 阅读 · 1 评论 -
GB28181 媒体服务器流中的识别组包策略
按照GB28181协议,设备一般需要用SSRC来标志自己设备的流,但很遗憾的是设备不一定会按照这协议来发送数据流。厂家各种各样做法对服务器上的开发造成了一些困难。现实情况是很多服务器开发商不得不对每个设备分配一个端口来接收数据。采用多端口组包的最大问题就是端口需要分配很多,造成服务器安全性能下降,另外对端口消耗很大占用了服务器端口资源。streaming-GBS采用混合模式对媒体流进行处理1. 对不同的设备采用不同策略,如能使用SSRC区分的设备我们采用固定端口收流,SSRC+IP地址来进行区分原创 2022-03-23 11:48:23 · 282 阅读 · 0 评论 -
CarEye 流媒体处理服务器
CarEye 在车载流媒体服务器的基础上发展了GB28181 视频处理服务器。将RTMP,RTSP 通用服务器跟车载和安防视频服务器集成,构成了流媒体服务集群原创 2022-03-03 16:26:57 · 380 阅读 · 0 评论 -
载重在车载上的应用(2)
随着车载监管越来越细化,车辆载重开始慢慢进入管理者视野。目前车载传感器有高,中,低 三个等级。由于加载的传感器的算法,传感器的个数不同。精度也不一样。低精度的单传感器主要用来物流管控,高精度的传感器主要用来环卫称重,物流监控,超载等。各个行业对传感器需求大致如下表:载重整体行业主要是面临成本上来的压力,算法的门槛比较高,致使应用无法推广。1. 传感器本身的成本比较高,安装比较复杂2. 算法应用比较复杂,平台鲜有整合好的3. 运维成本比较高CarEye 车辆管理平台,在原来视频平台原创 2022-02-23 12:02:35 · 1218 阅读 · 0 评论 -
GB28181 视频服务器文档整理
CarEye 开发GB28181 服务器有将近两年时间了,早期我们用纯C++开发了一个GB28181视频服务期,对外的接口是基于MQ协议的。这样开发出来的服务器主要有几个问题。1. SIP服务器和流媒体服务器是绑定在一个进程中的,因为没有分离,造成了视频处理和SIP服务器只能在一台服务器上运行,既不能打到GB28181协议的构架要求。也造成无法使用负载均衡的功能。2. 对外接口采用了MQ通信方式。虽然MQ消息处理实时,对一些数据处理,如报警,对讲等。但MQ本身是重量级构建,不方便一些应用场景快速构建原创 2022-02-05 16:14:23 · 2370 阅读 · 0 评论 -
移动设备接入视频服务器软负载均衡在car-eye平台中的应用
移动设备接入视频服务器和寻常的直播系统有一定的区别,一般直播系统是拉流多,一个直播多个观众的模式但移动设备是成千上万的设备,客户端观看视频的不多。其中国家交通部视频标准JT/T 1078 协议和公安部标准JB28181 视频标准都是由服务器来决定流媒体服务器的。这就决定了设备端的视频服务器是临时分配的。从而让软负载均衡实现有了可以发挥的空间。使用软负载均衡的好处有以下两点:1. 不需要硬件投入,成本低2. 移植性好,软件调度算法多种解决软负载均衡就要能通过软件的方式获取服务器的状原创 2021-04-21 19:21:47 · 232 阅读 · 0 评论 -
GB28181/GT1078 平台中视频下载的实现
car-eye 在GT1078 视频服务器开发中曾经搭建FTP服务器来实现视频文件下载功能。在GT1078 协议里,是通过FTP服务上传视频文件到FTP服务器,然后客户端从FTP服务器下载视频文件,这是标准的官方给出的下载实现方式。但是很遗憾的是,这种实现方式是有缺陷的--与设备厂家实现脱离了。我们在客户端的播放器一般都支持MP4的文件格式,里面的音视频格式一般是AAC和H264这种格式。但设备端的录像文件,各种各样,甚至有的厂家直接存储的bin文件。这直接导致了FTP上传的文件在客户端无法播放为止,分原创 2020-10-31 18:32:48 · 2034 阅读 · 0 评论 -
GB28181 服务器开发中遇到问题整理
car-eye GB28181平台中 web和视频服务器开发已经开始进入到发布版本阶段。在平台开过程中遇到过很多问题,下面整理下分享给各位开发者,同时也作为备份。1. 平台框架和通信。一般来说我们做一个平台的用户界面,通常用java,C#这些工具,而视频服务通常采用C++或go这类语言。所以基本要一个通信来实现数据共享和业务串联。通常的通信不外乎是采用底层的TCP通信,上层的http通信等。在JB28181项目中我们采用了mq消息队列作为通信方式。之所以采用这个中间件是因为MQ在各种操作系统,语言都原创 2020-10-14 15:56:09 · 1807 阅读 · 4 评论 -
car-eye 物联网音视频流媒体架构
car-eye 从车载领域的音视频解决方案全面向整个物联网发展,为此,我们以JB28181 级联为基础扩充了音视频服务器架构。满足不同行业的摄像头接入其中,应用于音视频监控,对讲,报警等应用。整体服务器的架构如下图:这死一个单机服务器网络构架。对数据并发比较大的系统,我们采用软负载均衡策略。满足设备流的并发需要。如以车载管理平台为例子:确保接入设备可以达到几百台,...原创 2020-02-22 11:03:23 · 713 阅读 · 0 评论 -
nginx-rtmp-module的缺陷分析
Arut最初在开发nginx-rtmp-module的时候只实现了单进程模式,好处是架构简单,推送和播放,数据统计,流媒体控制等都在一个进程上完成。但是这显然浪费了Nginx多进程(在Linux和FreeBSD平台上每个进程都可以绑定一个CPU核心,以减少进程切换带来的开销)的处理能力。但是,如果开启多进程模式,推送和播放如果不在同一个进程上,会造成播放失败的问题:另外,请求数据统计信息也是个...转载 2019-04-15 20:53:50 · 513 阅读 · 0 评论 -
两种视频服务器的软负载均衡
在视频应用中,通常一台服务器无法解决所有业务,需要考虑系统的负载均衡。现实世界主要考虑两种典型的应用,一是拥有大量接入摄像头的应用,客户端多,但设备更多,而且这种情况下设备还需要在没有客户端的情况下实现视频上传实现云存储,如在移动车载领域,视频监控领域。第二种应用是设备并不多,但拥有大量的客户端,这种应用更加常见,如直播,教育等行业。无论这两种应用的那种,当量上去以后都需要考虑多视频服务器架构,并...原创 2019-03-11 21:14:00 · 1225 阅读 · 2 评论 -
使用FFMPEG库将内存中的H264跟AAC数据流合成MP4文件
之前使用的FFMPEG基本都是打开指定链接或者文件读取数据进行操作, 此次要实现的功能是在服务器中读取内存中的H264跟AAC裸流进行文件合成保存, 这就有些难度了, 经过了两个周的资料搜索研究终于完成了该功能, 在此记录说明下, DEMO开源地址:https://gitee.com/careye_open_source_platform_group/MP4MuxerTest首先要感谢两篇...转载 2019-03-14 19:28:46 · 1464 阅读 · 0 评论 -
JT1077 平台上的文件处理
在JT1077 平台中各种文件存在于设备,云平台,客户端。实现文件的随时存储,分享是十分重要的。我们详细的整理了一下各个部分对文件处理过程。做出下面的流程web 数据库服务器是文件管理的中心。负责记录,销毁,查询文件。视频服务器负责生成一些文件。设备负责产生有效的音视频文件。各个服务器可以运行在一个硬件服务器上,也可以部署在多台上。 ...原创 2018-12-27 11:52:03 · 466 阅读 · 0 评论 -
车辆部标协议对接政府平台的框架
car-eye JT1078-808 平台已经出了第一版,下一版可能需要紧跟部标的几个大协议JT808 JT809 JT1078 JT1077 JT796 jt905。这里面JT808 1078 是设备端协议,JT809 JT1077 JT796 主要是货运市场的平台端协议或规则。JT1905主要是出租车市场的协议。JT905需要考虑营运数据和协议格式的兼容。JT809 主要针对政府平台上报。...原创 2018-12-27 11:41:57 · 2242 阅读 · 2 评论 -
音视频推流中的时间问题
web上看直播对时间的要求是十分苛刻的。时间需要均匀的变化。这在局域网或者是电脑PC端并不是十分大的问题。因为网络通常是稳定可靠的。但在移动终端中,网络是不稳定的,从而造成音视频数据中时间戳很可能是变化不是平稳的。前面我们已经提到平滑在web上展示的重要性,我们现在进一步讨论这种平滑的解决方案:首先,我们需要平滑时间,就需要根据前面时间戳的变化来推断下一个时间戳的时间,避免web在播放的时候因...原创 2018-12-27 11:18:52 · 1271 阅读 · 0 评论 -
调用流媒体服务器统计功能,根据客户关闭视频流
在car-eye JT1078 平台开发中可能遇到实时视频忘记关闭的情况,设备一直在推流在移动系统中是完全不可以接受的。为止,我们需要自动监控设备的推流和拉流情况,RTMP服务器提供了基于json格式的输出,用来表达有多少个客户端连接。但客户端观看为0的时候,平台自动关闭这个设备流/{"http-flv":{"nginx_version":"1.12.2","nginx_http_fl...原创 2018-11-14 18:18:13 · 722 阅读 · 0 评论 -
FFMPEG解码海思音频数据
解码流程:1、 读取海思g726音频数据,海思g726音频会多4个字节的海思头信息。2、选择ffmpeg g726编码器进行解码。ffmpeg g726解码器包括:AV_CODEC_ID_ADPCM_G726、AV_CODEC_ID_ADPCM_G726LE。如果海思g726码流类型为asf时,请选择AV_CODEC_ID_ADPCM_G726解码器类型;如果海思g726码流类型为RFC35...转载 2018-10-21 21:59:52 · 2463 阅读 · 0 评论 -
音视频传输中时间戳平滑处理
在音视频中一般时间戳从设备中系统时间得来,通常是以毫秒作为单位的linux时间。因为网络传输或者时间有时候突变的因为,造成了时间戳混乱。有必要对时间戳做一下处理。包括突变时候平滑处理,包括音视频不同步的时候的处理,下面算法解决了时间戳计算问题,在移动设备上很有好处:static int RTMP_CanculateTimestamp(CarEye_RTMP_Handle handle, Me...原创 2018-10-04 14:32:41 · 1647 阅读 · 0 评论 -
Car-eye 流媒体服务提升和问题备份
Car-eye 流媒体服务器是Car-eye 开源团队基于nginx-rtmp mouldule 开发和维护的高性能RTMP 服务。目前已经进入商用阶段。代码可以从git上下载试用。对于原版的基础上做了几处大的提升1. gop-cache 功能 该功能主要为了加快首屏时间,争取做到秒开。原版本身不支持该功能,这个功能加入大大缩短了开屏时间,而且配合我们拉流库和推送库,可以做到秒开。2. FLV-...原创 2018-07-11 10:31:05 · 345 阅读 · 0 评论 -
LVS+Keepalived+nginx-rtmp-module搭建流媒体服务器集群
架构机器配置管理IP地址角色备注192.168.70.240LVS负载均衡服务器(Director server)对外提供服务的VIP为192.168.70.73(不存在的虚拟IP)192.168.70.241流媒体服务器1(Real server 1)192.168.70.242流媒体服务器2(Real server 2) 服务器架构由于流媒体服务数据量比较大,要支持高并发的请求,对服务器架构和...转载 2018-03-25 13:49:45 · 694 阅读 · 0 评论 -
android流媒体 视频编码格式和H264编码
android中使用previewcallback 获得的YUV数据格式一般是YV12 或者NV21. 而H264的编码格式一般是YUV420P或者YUV420SP这种格式。编码之前进行数据格式转化、程序自动检测格式设置参数。讲视频流压缩,完成推流前的准备工作. 其中转化的代码如下:public byte[] convert(byte[] data) {// A buffer l原创 2018-02-07 10:21:27 · 4876 阅读 · 0 评论 -
car-eye 车载流媒体开发中数据采集和编码传输
车载流媒体作为一个热点越来越引起大家的重视,car-eye 行车记录仪,是基于RTSP协议开发的开源android程序,支持最多四路视频录像,支持最多四路视频上传。传输视频采用RTSP协议。首先我们介绍一下,视频数据从摄像头获取到编码,到传输给流媒体服务器的过程:1. 摄像头数据通过priewcallback获得数据为YV12的数据设置好基本的预览的参数:parameters.setP原创 2018-01-30 15:36:21 · 1194 阅读 · 0 评论 -
基于车载 流媒体播放器的客户端开发
最近接触了一个国内优秀的流媒体平台Darwin深度裁剪版本,看了一段时间后就想跟自己的开发的一个android设备对接,以了却我多年对多媒体更深入的理解。(本人曾经自己开发一个H264的移动电视的软解码播放器) 在搭建好服务器后,拿出了全志的T2开发板,开始使用其团队的EasyPusher库进行推送。首先我尝试视频直播的开发,在研究了两天后,发现为我的机器的系统的解码器已经原创 2018-01-30 14:22:15 · 1080 阅读 · 0 评论 -
流媒体服务器darwin 代码分析
darwin开源平台的源码分析原创 2018-02-04 12:04:34 · 2509 阅读 · 0 评论 -
流媒体框架
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。0.背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了说明:RTMP是...原创 2018-02-08 20:43:13 · 1314 阅读 · 0 评论 -
RTMP流媒体直播资料
RTMP 简介: http://blog.chinaunix.net/uid-26000296-id-3360244.htmlRTMP Message Formats (RTMP消息格式): http://blog.chinaunix.net/uid-26000296-id-3364963.htmlRTMP Commands Messages (RTMP命令消息): http://blog.chi...转载 2018-02-08 20:34:53 · 622 阅读 · 0 评论 -
Nginx RTMP 功能研究
Nginx-RTMP功能调研1. RTMP协议介绍...22.RTMP server.32.1当前的流媒体server.32.2Wowza功能...33.Nginx-based RTMP server.53.1 Nginx rtmp 功能点...53.2编译nginx rtmp模块...63.3配置以及功能介绍...63.4用nginx-rtmp-module搭建直播环境...83.5Ngin...转载 2018-02-08 20:21:22 · 244 阅读 · 0 评论 -
android jni 开发callback 传递参数
在android JNI开发中我们经常要在C中调用JAVA的程序,比如设计一个回调函数实现java与C之间的数据传递。在设计car-eye-player android版本的时候遇到这样的问题,记录一下。其中C中的callback调用代码如下:void callback(int channel){ JNIEnv *env; int mNeedDetach = -1; //...原创 2018-03-31 11:24:01 · 2220 阅读 · 0 评论 -
windows10 vs2015编译 带nginx-rtmp-module 模块的32位nginx
1 下载必要软件 从 http://xhmikosr.1f0.de/tools/msys/下载msys:http://xhmikosr.1f0.de/tools/msys/MSYS_MinGW-w64_GCC_610_x86-x64_Full.7z。 把MSYS_MinGW-w64_GCC_610_x86-x64_Full.7z压缩包里面的MSYS解压到C盘根目录。 安装windwos版...转载 2018-04-01 19:33:50 · 716 阅读 · 0 评论 -
FFMEPG 平台移植,接口简化和外部模块接入 (五)ffmpeg android移植(ffmpeg android studio 静态编译)
前面我们用在ubuntu下编译了android的动态库,但实际开发中,我们可能需要在android 这类开发工具中开发基于太ffmpeg的视频应用。在android studio 中编译需要注意以下几点1. As ndk 对应的sdk不能大于编译ffmpeg本身编译的NDK中使用的SDK。可以在application.mk中指定:APP_PLATFORM := android-XX 如果XX小于了...原创 2018-05-24 21:45:42 · 397 阅读 · 0 评论 -
FFMEPG 平台移植,接口简化和外部模块接入 (六)ffmpeg android移植(ffmpeg android 下解码器)
前面谈了android下NDK编译,编码器,水印,等。我们再看下解码器的接口。直接上代码:/* * Car eye 车辆管理平台: www.car-eye.cn * Car eye 开源网址: https://github.com/Car-eye-team * CarEyeDecoderAPI.h * * Author: Wgj * Date: 2018-05-16 22:54 * ...原创 2018-05-26 23:44:10 · 422 阅读 · 0 评论 -
FFMPEG android 多CPU架构快速编译方案
前面文章我们已经构架了ffmpeg在android下的编译方案,本文介绍一下ffmpeg视频开发中多CPU架构编译的一些注意事项和应用开发的一些注意事项。在android下,通常有arm,armv7,armv8a,x86等架构。尤其中间两种在嵌入式中用得越来越多。要想编译进去,需要注意以下几点:1. NDK的编译版本至少要大于等于r10,建议使用r10e. 这是因为在早期的版本中,并不支持64位C...原创 2018-06-02 23:56:31 · 1912 阅读 · 0 评论 -
FFMEPG 平台移植,接口简化和外部模块接入 (一)ffmpeg android移植(ndk 编译)
Car-eye-FFMPEG项目是Car-eye 开源平台的一个新项目,目的是在FFMPEG项目和其外部模块,如freetype,X264的基础上建立一个多平台编译,接口调用简单的工具集。本博客是一个连载,首先从android开始写吧。因为FFMPEG本身对android编译的支持就不是特别好。本文开发环境是ubuntu分步来做:1. 建立NDK编译环境,请参考外面的博客讲ndk安装到ubuntu...原创 2018-05-14 16:53:57 · 436 阅读 · 0 评论 -
FFMEPG 平台移植,接口简化和外部模块接入 (四)ffmpeg android移植(ffmpeg 视频编码)
FFMPEG 视频编码最常见的H264,H265需要X264,X265外部模块支持,可以从我们开源平台的FFMPEG编译项目里面获取代码和配置进行一键式编译:https://github.com/Car-eye-team/Car-eye-FFMPEG,我们下面的代码主要是为了简化代码调用结构。只需要配置参数,输入数据就可以进行视频编码,不多说,贴上代码:/* * Car eye 车辆管理平台: ...原创 2018-05-19 22:46:46 · 486 阅读 · 0 评论 -
FFMEPG 平台移植,接口简化和外部模块接入 (三)ffmpeg android移植(ffmpeg实现水印文字显示)
首先来看一副图,用来纪念对视频领域做出贡献的雷神:当然在这个图片里面的decode不是必须的,Filter 模块本身是一个非常独立的模块,但因为相关的程序,给人造成了他必须要依赖于编码器或者解码器来工作。OK 不多说,先看看内部实现代码:#ifndef __CAREYE_PUBLIC_H__#define __CAREYE_PUBLIC_H__#define __STDC_CONSTA...原创 2018-05-18 11:19:32 · 870 阅读 · 0 评论 -
FFMEPG 平台移植,接口简化和外部模块接入 (二)ffmpeg android移植(JNI 开发环境建立)
工欲善其事情,必先利其器。在android下使用ffmpeg必须使用JNI。先创建一个好的编译工具为先:按照下面步骤在android stdio 下创建JNI的编译环境1.配置Anroid Studio(这步是关键)选中项目,单击File菜单,选择Setting进入设置界面。或者按快捷键 Ctrl+Alt+S。:点击+号之后,打开Macros 配置宏命令界面,如下图:2.配置使用javah 、nd...原创 2018-05-18 09:42:06 · 579 阅读 · 0 评论 -
car-eye 车辆管理开源平台 MCU 系统之 按键扫描处理
在MCU系统中按键处理经常要处理扫描,去抖等操作。按键一般是在定时器开动以后进行扫描处理,如没个一段时间进入一个按键处理,判断按键的状态当按键持续时间达到一定数值的时候才认为是按键被按下:void Bsp_Key_Check(void){ static u32 keytime= 0; if(CheckSysTick((u32 *)&keytime, 20)) //每隔20原创 2018-02-01 11:05:18 · 825 阅读 · 0 评论