
开源流媒体平台和开源车辆管理平台
文章平均质量分 60
流媒体实现和管理系统的一些介绍
CarEye 官方博客
这个作者很懒,什么都没留下…
展开
-
CarEye 管理系统开发基本约定
后台开发规范记录原创 2022-09-06 17:15:54 · 687 阅读 · 0 评论 -
CarEye GT1078 转GB28181 方案
最近因为业务需要,将GT1078 的设备链接到政府平台,政府平台还不是GT/808系列的,而是GB28181 上级平台,所以造成了需要进行数据和格式的转化。具体主要流程如下:GT/T1078 视频平台级联到上级公安部平台要点:车辆管理系统录入公安部编码,将机构,设备,通道跟国标编码一一对应 平台将设备信息通过websocket接口上传到CarEye GB28181 服务器 CarEye GB28181 服务器将设备信息同步到上级平台 上级指令通过CarEye 服务器转化成webSOCET发送到原创 2022-03-23 11:34:34 · 4660 阅读 · 0 评论 -
Car-eye 车辆管理平台
最近在忙着完善新的管理平台,car-eye 车辆管理平台发展至今已经将近三年。我们似乎一直想跟着国家交通部的政策在做一个平台。跟着一些平台运营商学习开发一个标准的平台,满足JT/T796 或者是JB35658的标准。或者是按照JT905协议做一个网约车管理平台。可实际的上无论从技术上还是从市场上看都不尽如人意。这引发了我的思考,市场究竟需要一个什么样的平台。从2011年起,国家对于车辆管理平台标准经历了几次革新或者说改进,有这几个标志性事件作为节点。1). 2011年国家指定了GT808/809协议原创 2021-09-11 17:24:50 · 977 阅读 · 1 评论 -
Car-eye 视频服务重新调整和优化
car-eye 视频服务器已经从最初的JT/T1078 视频服务器发展到集成JT1078,JB28181两套协议的视频服务,另外我们还需要做状态检测,提供丰富的API给平台获取状态,这需要视频服务器从框架层进行深度优化。优化主要做以下工作1. 指令和视频流的分离2. 独立于行业内的业务的抽象,如URL格式组织3. 可配置参数的服务器,通过平台远程配置4. 可扩展的视频服务器群,通过接口获取服务器状态优化后的服务器与web平台,客户端能更好的交互,接口也丰富不少。具体框架图如下原创 2021-04-21 19:35:40 · 298 阅读 · 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 评论 -
RTMP 推流增加对H265的支持
RTMP协议本身是不支持H265的。但现在的设备越来越追求更高的压缩比和更高的图形质量。H265相对其他的媒体格式更多受到厂家的重视。rtmp协议要支持H265首先要定义一个ID。按照大家的约定来看,基本使用12(0xc)作为ID. 同时相对H264对NALU的分析要进行改变。并对发送的Metadata数据进行修改。先看下发送metadata:int SendVideoSpsPpsVps(RTMP* r, unsigned char* pps, int pps_len, unsigned char原创 2020-08-07 19:13:23 · 1769 阅读 · 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 评论 -
音视频传输中时间戳平滑处理
在音视频中一般时间戳从设备中系统时间得来,通常是以毫秒作为单位的linux时间。因为网络传输或者时间有时候突变的因为,造成了时间戳混乱。有必要对时间戳做一下处理。包括突变时候平滑处理,包括音视频不同步的时候的处理,下面算法解决了时间戳计算问题,在移动设备上很有好处:static int RTMP_CanculateTimestamp(CarEye_RTMP_Handle handle, Me...原创 2018-10-04 14:32:41 · 1647 阅读 · 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 评论 -
Car-eye 流媒体服务提升和问题备份
Car-eye 流媒体服务器是Car-eye 开源团队基于nginx-rtmp mouldule 开发和维护的高性能RTMP 服务。目前已经进入商用阶段。代码可以从git上下载试用。对于原版的基础上做了几处大的提升1. gop-cache 功能 该功能主要为了加快首屏时间,争取做到秒开。原版本身不支持该功能,这个功能加入大大缩短了开屏时间,而且配合我们拉流库和推送库,可以做到秒开。2. FLV-...原创 2018-07-11 10:31:05 · 346 阅读 · 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移植(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移植(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 评论 -
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移植(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 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 评论 -
视频流中的缓冲池处理
在视频处理中,为了让图像能流畅的播放,往往需要一个缓冲区、循环队列往往被用到其中。下面的无限循环队列就用来做流媒体中的缓冲区处理,用以解决视频的不流畅的问题:#include "ssqueue.h"#include <time.h>#include <stdarg.h>#include "trace.h"int SSQ_Init(SS_QUEUE_OBJ_T *pObj,...原创 2018-02-11 22:03:04 · 1593 阅读 · 1 评论 -
lvs keepalived nginx-rtmp 视频流服务负载均衡系统搭建
拓扑图如下:一、为什么要使用负载均衡技术?1、系统高可用性2、 系统可扩展性3、 负载均衡能力LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的配置文件,并能实现无缝配置变更!二、LVS+Keepalived...转载 2018-03-25 13:53:10 · 1182 阅读 · 0 评论 -
高性能视频推送库Car-eye-push 设计
在4G时代,移动终端网络越来越快,网络流量费越来越便宜,客观上为视频在各种领域应用创造了条件,尤其移动端视频监控,视频直播成为当下几个热点。car-eye-push就是为这些需求设计而成的一个高性能推送视频流库,它支持RTSP和RTMP两个种主要的视频直播协议。通过该库可以快速有效的将视频音频数据推送到视频服务器。下面记录下在整个推送库中涉及到几个要点。1. 解决视频卡机不连续的问题 car...原创 2018-03-25 22:08:39 · 543 阅读 · 0 评论 -
Car-eye 开源平台的下一步思考
car-eye 开源平台经过团队几个月努力,基本形成了以车载视频为基础,车辆管理平台,流媒体服务器,视频直播等多功能的开源平台架构。我们先来看下目前的基本架构:其中中心服务器主要架构有两台方案:一种是主要针对车辆管理系统的设计的:采用extjs java 框架。实现了808协议。另外一套方案主要视频功能更突出,并未实现全部车辆管理系统全部功能,并采用最新的java架构:目前的平台还存在以下不足:1...原创 2018-03-31 13:26:23 · 597 阅读 · 0 评论 -
Nginx RTMP 模块 nginx-rtmp-module 指令详解
译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解。指令Corertmp语法:rtmp { ... }上下文:根描述:保存所有 RTMP 配置的块。server语法:server { ... }上下文:rtmp描述:声明一个 RTMP 实例。rtmp { server { }}listen语法:listen (addr...转载 2018-04-01 18:17:45 · 684 阅读 · 0 评论 -
ngnix RTMP module 学习笔记
源码地址:https://github.com/Tinywan/PHP_Experience说明: rtmp的延迟主要取决于播放器设置,但流式传输软件,流的比特率和网络速度(以及响应时间“ping”)可能会对延迟产生影响,具有播放器的本地rtmp服务器 使用“否”缓冲区(如0.1-0.2秒缓冲区等)可能会在0.8-1.2秒之间总是延迟,当事情正好工作时 nginx配置文件rtmp { s...转载 2018-04-01 18:30:17 · 525 阅读 · 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.5Nginx...转载 2018-04-01 18:38:39 · 947 阅读 · 0 评论 -
nginx优化——包括https、keepalive等
nginx优化——包括https、keepalive等一、nginx之tcp_nopush、tcp_nodelay、sendfile1、TCP_NODELAY你怎么可以强制 socket 在它的缓冲区里发送数据?一个解决方案是 TCP 堆栈的 TCP_NODELAY选项。这样就可以使缓冲区中的数据立即发送出去。Nginx的 TCP_NODELAY 选项使得在打开一个新的 socket 时增加了TC...转载 2018-04-01 18:57:32 · 530 阅读 · 0 评论 -
使用FFMPEG3.4.2版本进行视频的解码为YUV格式
本文章是转载开源团队路过之君的博客,最他移植ffmpeg解码器到我们的视频项目中。全文如下:最近关注的流媒体方向技术,FFMPEG学习是绕不过去的,不过网上关于FFMPEG的应用基本是基于2015年左右的版本,最新的FFMPEG视频解码部分变动还是挺大的,特此记录一下解码过程:首先当然是FFMPEG的解码器等的初始化:// 一定要先调用该注册FFMPEG,否则下面的都无法使用av_register...转载 2018-04-05 09:51:21 · 345 阅读 · 0 评论 -
car-eye server 开发之 Nginx RTMP server
car-eye 开源团队平台开始是基于RTSP协议开发的。在做好了RTSP和RTMP推送和播放两端的库和demo之后,我们决定启动RTMP服务器的开发。nginx RTMP是俄罗斯战斗民族开发一个高性能的RTMP服务器,现在已经停止维护。他的强大在于Nginx的稳定性和高并发性。先将代码下载下来并开始编译:https://github.com/Car-eye-team/Car-eye-RTMP...原创 2018-04-08 09:38:57 · 453 阅读 · 0 评论 -
基于nginx-rtmp-module模块实现的HTTP-FLV直播模块(nginx-http-flv-module)
本文章转自开源团队未央千城的博客,全文如下: 近几年直播行业火爆,开源的直播软件解决方案有SRS(Simple-RTMP-Server)和nginx-rtmp-module,前者是国人发起的一个优秀的开源项目,目前国内很多公司都使用它作为直播解决方案,由C++编写;后者依赖Nginx,以第三方模块的方式提供直播功能,由C编写。SRS采用多线程方式,性能优秀,经受住了众多场景的考验,但是SRS3...转载 2018-04-14 10:24:54 · 2959 阅读 · 0 评论 -
Car-eye-http-flv-module 实现nginx-rtmp-mudule HTTP方式的FLV直播功能
nginx-rtmp-mudule RTMP 是一款优秀的RTMP服务器,客户端采用FLASH插件或者HLS,但flash插件消耗资源大,HLS延迟严重。nginx-rtmp-mudule 不支持HTTP方式的FLV直播。Car-eye-http-flv-module 是在nginx-rtmp-mudule RTMP基础上修改的流媒体服务器,除了支持flash播放器外,还支持现在常见的播放器。完美...原创 2018-04-15 19:18:11 · 904 阅读 · 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 评论 -
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 评论 -
流媒体框架
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。0.背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了说明:RTMP是...原创 2018-02-08 20:43:13 · 1314 阅读 · 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 · 695 阅读 · 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 评论 -
基于车载 流媒体播放器的客户端开发
最近接触了一个国内优秀的流媒体平台Darwin深度裁剪版本,看了一段时间后就想跟自己的开发的一个android设备对接,以了却我多年对多媒体更深入的理解。(本人曾经自己开发一个H264的移动电视的软解码播放器) 在搭建好服务器后,拿出了全志的T2开发板,开始使用其团队的EasyPusher库进行推送。首先我尝试视频直播的开发,在研究了两天后,发现为我的机器的系统的解码器已经原创 2018-01-30 14:22:15 · 1080 阅读 · 0 评论 -
car-eye 车载流媒体开发中数据采集和编码传输
车载流媒体作为一个热点越来越引起大家的重视,car-eye 行车记录仪,是基于RTSP协议开发的开源android程序,支持最多四路视频录像,支持最多四路视频上传。传输视频采用RTSP协议。首先我们介绍一下,视频数据从摄像头获取到编码,到传输给流媒体服务器的过程:1. 摄像头数据通过priewcallback获得数据为YV12的数据设置好基本的预览的参数:parameters.setP原创 2018-01-30 15:36:21 · 1194 阅读 · 0 评论