高性能视频推送库Car-eye-push 设计

使用PlotNeuralNet绘制深度学习网络图的基本操作 阅读详情

在4G时代,移动终端网络越来越快,网络流量费越来越便宜,客观上为视频在各种领域应用创造了条件,尤其移动端视频监控,视频直播成为当下几个热点。car-eye-push就是为这些需求设计而成的一个高性能推送视频流库,它支持RTSP和RTMP两个种主要的视频直播协议。通过该库可以快速有效的将视频音频数据推送到视频服务器。下面记录下在整个推送库中涉及到几个要点。

1. 解决视频卡机不连续的问题

    car-eye 视频库中本身就包含一个环形队列池,能够在网络不十分好的时候具备一定的缓冲能力。在遇到缓冲满的时候,根据优先保持视频关键帧的数据的前提下删除最远的不能推送成功的数据。

2. 在推送音视频数据的时候,声音和视频不同步的问题

其实严格来说这个工作在客户端可以根据时间戳进行处理,但在推送这端,进行一点的同步也是有必要,我们采取音视频同步

到机器时间的方法,保证数据帧尽量在相同的时间推送出去。要知道视频和音频推送是在不同的线程中完成,这就需要处理临界段的问题。

3. 解决断开重连的问题

这个真的很重要,尽管网络采用4G,但终究是移动网络,在没有信号的时候,库本身要具有一定的重新连接能力。我们对视频发送长时间不成功,网络断开等都进行了自动连接处理。这不仅仅体现在设备端,同样体现在不同播放端。

4. 推送文件的精确定位

car-eye-push库不仅仅应用于视频直播,还应用历史回放。这样就要对历史文件进行处理。播放的程序可能是一些文件的一部分。甚至可能在客户端就要求视频对视频文件直接定位,快进等。所以我们需要对MP4等文件格式进行在时间轴上精确定位。

car-eye-push支持多通道推送数据,支持windows android,linux等多种系统,支持ARM,x86,x64和mips多种架构   API 接口简单,方便快速移植到自己的系统中。

我们看下他的接口定义:

接口说明:

/*
* Comments: 使用有效的Key进行CarEye推流器的注册以便使用, 使用本系统前必须进行注册才能正常使用
* Param key: 有效的密钥
* Param packName: 针对Android系统的应用程序包名
* @Return int CAREYE_NOERROR: 成功, 返回结果参考CarEyeError
*/
#ifdef ANDROID
CE_API int CE_APICALL CarEye_Register(char* key, char* packName);
#else
CE_API int CE_APICALL CarEye_Register(char* key);
#endif

/*
* Comments: 注册推流状态事件
* Param event: 获取推流状态的回调函数
* @Return None
*/
CE_API void CE_APICALL CarEye_RegisterStateChangedEvent(CarEyePusher_StateChanged event);

/*
* Comments: 启动RTSP推流通道 推流地址以三个参数进行组合: rtsp://svrip:port/name
* Param svrip: 流媒体服务器IP地址或域名
* Param port: 流媒体服务器端口号
* Param name: 推流的sdp名
* Param mediaInfo: 要推流的媒体信息
* @Return int 大于等于0: 启动的推流通道号 小于0错误编号参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StartRTSPPusher(char* svrip, unsigned short port, char* name, CarEye_MediaInfo mediaInfo);

/*
* Comments: 关闭指定的RTSP推流通道
* Param channel: 已启动的RTSP推流通道号
* @Return int 是否成功关闭, 状态码参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StopRTSPPusher(int channel);

/*
* Comments: 获取当前通道的推流器是否已经连接到服务器并做好推流准备
* Param channel: 通道号
* @Return int 0未做好准备, 非0做好准备
*/
CE_API int CE_APICALL CarEye_PusherIsReady(int channel);

/*
* Comments: 启动RTSP推流本地文件通道 推流地址以三个参数进行组合: rtsp://svrip:port/name
* Param svrip: 流媒体服务器IP地址或域名
* Param port: 流媒体服务器端口号
* Param name: 推流的sdp名
* Param fileName: 要推流的本地文件路径 目前暂时支持MP4文件
* Param startMs: 推流起始的毫秒数
* Param endMs: 推流结束的毫秒数 endMs必须大于startMs, 否则推流失败, 当两个参数都为0时推送全文件
* @Return int 大于等于0: 启动的推流通道号 小于0错误编号参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StartNativeFileRTSP(char* svrip, unsigned short port, char* name, char* fileName, int startMs, int endMs);

/*
* Comments: 关闭指定的本地文件RTSP推流通道
* Param channel: 已启动的RTSP推流通道号
* @Return int 是否成功关闭, 状态码参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StopNativeFileRTSP(int channel);

/*
* Comments: 启动RTMP推流通道
* Param svrip: 流媒体服务器IP地址或域名
* Param port: 流媒体服务器端口号
* Param name: 推流的通道名
* Param mediaInfo: 要推流的媒体信息
* @Return int 大于等于0: 启动的推流通道号 小于0错误编号参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StartRTMPPusher(char* svrip, unsigned short port, char* name, CarEye_MediaInfo mediaInfo);

/*
* Comments: 关闭指定的RTMP推流通道
* Param channel: 已启动的RTMP推流通道号
* @Return int 是否成功关闭, 状态码参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StopRTMPPusher(int channel);

/*
* Comments: 启动RTMP推流本地文件通道
* Param svrip: 流媒体服务器IP地址或域名
* Param port: 流媒体服务器端口号
* Param name: 推流的通道名
* Param fileName: 要推流的本地文件路径 目前暂时支持MP4文件
* Param startMs: 推流起始的毫秒数
* Param endMs: 推流结束的毫秒数 endMs必须大于startMs, 否则推流失败, 当两个参数都为0时推送全文件
* @Return int 大于等于0: 启动的推流通道号 小于0错误编号参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StartNativeFileRTMP(char* svrip, unsigned short port, char* name, char* fileName, int startMs, int endMs);

/*
* Comments: 关闭指定的本地文件RTMP推流通道
* Param channel: 已启动的RTMP推流通道号
* @Return int 是否成功关闭, 状态码参考CarEyeError
*/
CE_API int CE_APICALL CarEye_StopNativeFileRTMP(int channel);

/*
* Comments: 推送流媒体数据到指定通道中
* Param channel: 要推送的通道号
* Param frame: 要推送的帧数据
* @Return int 是否推送成功, 状态码参考CarEyeError
*/
CE_API int CE_APICALL CarEye_PushData(int channel, CarEye_AV_Frame* frame);

有关car-eye-push 开源平台和源码下载:www.car-eye.cn QQ技术交流群:590411159

RK3588 Weston 下面是使用 weston -B=vnc-backend.so --width=1280 --height=720 ,使用vnc的客户端来远程访问weston桌面。Wayland是一套display server(Wayland compositor)与client间的。,而Weston是Wayland compositor的参考实现。7:在基于wayland 运行Qt 程序。根据不同版本,支持的后端也不相同。2:当前weston支持的后端。4:weston的配置文件。3:weston中的录屏。 阅读详情

相关推荐

通达信主力检测利器

主力轨迹:100*EMA(EMA(MTM,N1),N1)/EMA(EMA(ABS(MTM),N1),N1),COLORWHITE;主力拉高:IF(VAR51<REF(VAR51,1),VAR51,0),COLORYELLOW,NODRAW;洗盘:IF(VAR5<REF(VAR5,1),VAR5,0),COLOR000079,NODRAW;主力进场:IF(VAR5>REF(VAR5,1),VAR5,0),COLORRED,NODRAW;MAZL:MA(主力轨迹,N2),COLORYELLOW;

zhibiaogong的博客 7458

car-eye 流媒体SDK

car-eye 流媒体SDK是car-eye 开源团队针对android IOS windows linux等各种平台下开发的流媒体推送库和播放库的提供的一系列应用API接口。分成car-eye pusher,player,FFMPEG, server 各个章节,为各种流媒体音视频应用提供了完整的解决方案。以下是详细的文档说明:Car-eye RTSP client 库说明1 RTSP库接口说明关...

Car_eye的博客 1037

OV5640调试大坑,关于binning、RES分辨率与EV曝光

OV5640在使用binning模式时,必须考虑使用场景,分辨率下降叠加动态范围压缩,会使目标对象细节在高光环境下大量丢失,2x2的binning模式,分辨率会远低于感光面积的1/4。

chongyun_的专栏 1824

SQL Server 2008 高可用性视频(二)-- 日志传送

  做数据库的朋友都知道, 其实数据库的工作大致可以分为三类: 数据库设计与开发, 数据库管理, 数据库商业智能. 其中数据库管理的工作大部分是由DBA在做, DBA们除了要保证正常的数据库运行, 还要采取必要措施提升数据库的性能, 比如数据库的性能优化, 以及保证数据库系统的高可用性. 我在前面发了几篇对SQL Server数据库进行调优的文章, 下面会再开一个SQL Server高可...

weixin_30521649的博客 3万+

BGE-M3 文本情感分类实战:预训练模型微调,导出ONNX并测试

本文介绍了如何基于BGE-M3开源模型实现一个简单的二分类情感分析任务,展示了NLP中经典的“预训练 + 微调”范式。首先,加载预训练模型和分词器,并构建分类头整合到模型中。接着,进行数据预处理并构建DataLoader。然后,定义优化器、损失函数和训练循环,进行模型微调。微调过程中,可以选择基于[CLS] token的单特征提取或基于池化策略的多特征融合。最后,通过验证与推理评估模型性能,并导出ONNX模型以适应生产环境。BGE-M3在语义表征任务中表现优异,适合作为文本分类、语义搜索等下游任务的基础模型

大鹏的专栏 1403

[工具使用]黑暗引擎FOFA

黑暗引擎FOFAFOFA(点我进入)逻辑运算符搜索子域名domain搜索指定内容的host全部域名bodycert搜索选定应用的网站搜索指定开放端口的IP搜索指定协议的IP搜索IP或者网段的信息搜索指定CSS/JS网站常用的一些内容其他 FOFA(点我进入) 官网这样描述:FOFA是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。 简单理解就是,一个本土加强版shodan,知道某产品在互联网的部署情况、

网络安全知识分享 3万+

开始(Get Started)

开始-Get Started介绍性视频技巧和窍门基础入门技巧和窍门用户界面主题设置按键绑定语种显示遥测 介绍性视频 介绍性视频 用这一套介绍性视频开启你的旅程!这些视频被设计用于vscode的功能和让你快速熟悉vscode。vscode对各种各样的像JavaScript和TypeScript语言的开箱即用的支持。这些视频使用JavaScript,但vscode可以随意使用你喜欢的语言! 开始 - 安装和学习vscode的基础功能: Getting started 自定义 - 通过改变设置、主题按键绑定个

喝咖啡的猫的博客 3万+

【大模型】AI 辅助编程操作实战使用详解

AI 编程实战使用详解

congge 8460

微信网页全屏播放自动播放问题

video视屏播放在微信网页中的全屏自动播放一直是个很头疼的问提 1.自动播放问题 Android中是无法自动播放了,只能做用户引导页喽,微信app内核webkit版本低不支持 IOS中 加autoplay并且在onload事件之后调用一次play() id="Movies" src="./cdnfile/in.mp4" x5-playsinline="" x5-video-playe

Rings_G的博客 5517

【施磊】C++课程笔记目录

【C++编程】施磊老师C++笔记目录

GeniusAng的博客 4122

前端使用二开Thingsboard一、二、三事(四)-部件库

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 739

网页H5纯Web无插件多路RTSP视频播放

MiniWebRTSP纯Web无插件视频播放MiniWebRTSP视频播放主要特点浏览器兼容性视频编码协议音频安装教程使用说明联系我们仓库地址 MiniWebRTSP视频播放 **MiniWebRTSP **网页轻量化无插件多路播放RTSP视频。 通过WS协议实现超低延迟高性能,无需要经过浏览器转码,可达到与原生应用一样的性能(500ms以内)。多厂家、多设备类型支持,支持网络IPC、NVR、行业...

raylfx的博客 4225

LeRobot 入门教程(七)数据集

LeRobot Dataset v3.0 是机器人学习数据的标准化格式,支持多模态时间序列数据和视频的统一访问。该版本通过基于文件的存储(Parquet/MP4)、关联元数据和Hub原生流式处理等新特性,显著提升了性能并降低了存储开销。文档详细介绍了格式设计、安装使用、数据记录与加载方法,以及从v2.1迁移到v3.0的步骤,特别针对大型数据集(如DROID 1.0.1)的处理提供了SLURM集群移植方案。v3.0通过优化文件组织和元数据管理,实现了更快的加载速度、更高的内存效率和更好的可扩展性。

2506_90492529的博客 2054

什么是TypeScript,为什么我会用它代替JavaScript?

TypeScript是JavaScript的超集,主要提供可选的静态类型,类和接口。其中一个重要好处是使IDE能够在您键入代码时提供更丰富的环境来发现常见错误。 要了解我的意思,请观看Microsoft关于该语言的介绍性视频。 对于大型JavaScript项目,采用TypeScript可能会产生更强大的软件,同时仍可部署常规JavaScript应用程序。 它是开源的,但如果您使用支持的IDE,则只...

凡森 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

视频播放—— H5同层播放器接入规范

H5同层播放器接入规范 x5-video-player-type 启用H5同层播放器 通过video属性“x5-video-player-type”声明启用同层H5播放器 x5-video-player-type支持的值类型:h5 示例: <video src="http://xxx.mp4" x5-video-player-type="h5"/> 注:...

weixin_30723433的博客 1048

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

webrtc QOS方法三(SVC实现)

一、概念 SVC(可适性视频编码或可分级视频编码)是传统H.264/MPEG-4 AVC编码的延伸,可提升更大的编码弹性,并具有时间可适性(Temporal Scalability)、空间可适性(Spatial Scalability)及质量可适性(SNR/Quality/Fidelity scalability)三大特性,使视频传输更能适应在异质的网络带宽。 二、概述 SVC以AVC视频编...

CrystalShaw的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SQL Server 2008 高可用性视频

嗨, 各位朋友, 这篇博文上有所有已发布的视频汇总. [置顶]SQL Server 2008 高可用性视频(一)--纵览与对比 SQL Server 2008 高可用性视频(二)-- 日志传送 SQL Server 2008 高可用性视频(三)-- 数据库镜像 SQL Server 2008 高可用性视频(四)-- 故障转移群集 全部视频 转载于:https://ww...

weixin_30902675的博客 602

dm368 resizer

dm365 dm368芯片拥有的resizer模块,可以从ipipe里面直接获取连续性视频数据,也可以从sdram获取视频帧数据,然后进行缩放。   所谓的缩放除了分辨率变化,还有格式变化。resizer可以将uyvy 422的图像变换为yuv420psemi格式。不过从不严格的意义上讲,这样的变化也导致的数据量的变小,也算是缩小吧,哈哈。   后端的缩放必须要在one shot模式下进行,这个和

micklf的博客 1841

程序大牛养成记-花川学院-专题视频课程

本视频为优快云学院自制搞笑短片,非学习性视频

huachuanxueyuan的博客 1202

(Adobe Premiere Pro CS4)[ISO]《Adobe非线性视频编辑软件》

软件大小:2.46GBAdobe Premiere Pro CS4[安全检测]已通过安全检测安全检测软体:ESET NOD32 Antivirus版本:3.0.669.0杀毒引擎版本:3538(20081020)[安装测试]未经过安装测试,使用者后果自负与本论坛无关共用伺服器:eDonkeyServer No1、eDonkeyServer No2、!! Saugstube !!共用服务时间:全天不...

心语家园 - www.xinyucn.cc 1583

网络分布视频技术与盈利性视频站点技术

如果你想经营或者正在经营一个网络视频的站点,你会担心视频版权,担心盈利模式,那么你可以采用我们做的分布式网络视频技术,我们采用了分布下载的策略支撑起海量用户,客户端定制播放器来保护视频版权,灵活多样的flash广告以及传统的视频广告使您进入盈利模式。有意联系:chenjianfeng@cabrtech.com声明:我们的分布下载不是BT方式,是我们自己独立开发的,有全部的源代码。

ArichiNAD的专栏 1万+

android 图片压缩_实用性视频转gif,压缩等常用文件工具处理及转换(含自写python工具)...

背景图:来源花瓣网本文包含一些实用性的工具的推荐使用,和利用python去写一些实用性工具,我会把类似于像视频转换,pdf压缩啊,统统的在这里做一个收集,感兴趣的可以收藏和关注我,背景:大概我写《android开发专栏》系列文章的时候,会遇到需要展示一个demo给大家观赏的需求,从17年到现在,我用过太多太多工具,但是都是变化的;最近在我完成上篇《动手写一个CollapsingToolbarLay...

weixin_39712969的博客 708

360度视频只是过渡,VR视频的“真交互”春天还没到

360度视频只是VR视频的过渡期,VR视频到底需要什么样的交互方式?为什么交互性的VR视频还没有出现在各大视频网站平台上? 最近,国外高清视频内容平台Vimeo宣布上线360度视频频道,允许用户上传、观看360度视频,而且Vimeo还开启了内容付费模式,让内容制作者在其平台上通过VR视频获取收入。同一时期,Facebook也...

weixin_34007879的博客 787

流媒体技术探讨

流媒体技术探讨流媒体技术探讨... 1一、可扩展性视频编码技术... 21、非扩展性视频编码流式技术... 22、传统的分层可扩展性编码... 33、精细的可扩展性编码... 4二、H.264的网络“亲和性”. 41、H.264在视频编码层的差错控制... 42、H.264在网络提取层的差错控制... 6三、在H.264中结合可扩展性视频编码技术... 61

小三的学习园地 3379

精准推送服务系统架构设计

OCPX接口设计

hauchun的博客 1799
上一篇: VC++2017关于项目出现"const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法
下一篇: Car-eye 开源平台的下一步思考
路过&
博客等级 码龄19年 126粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值