自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 IPC网络摄像机rtsp视频流web上H5播放方法

最近因为项目需要,预研了一下rtsp视频流在web上通过H5播放的解决方案,通过网上大量搜索和删减,最终确定一个比较理想且实现较为简单的方案:websocket rtsp proxy + streamdian.js播放器组合;1、H5播放器使用开源的streamdian.js,该公司开源了播放器,不过只实现了aac+h264视频流的解码,对于大多数应用场景来说,基本够用;2、streamdian公司发布的后端websocket rtsp proxy是收费的,根据媒体代理数进行计费,计费单位$,对我大

2020-05-14 10:43:56 8791 26

原创 基于rtsp协议实现媒体资源发布或者视频直播

互联网直播业务,除私有协议外,大多采用rtmp协议进行媒体发布或推流,而很少选择使用rtsp协议推流和发布;而rtsp协议也是一个很好的协议,可以分别支持rtpoverudp和rtpoverrtsp,媒体控制更加灵活。下面简单介绍一下如何采用rtsp协议进行推流或媒体资源发布。1、rtsp支持标准的推流扩展,通过扩展announce消息后,可以使用rtspclient主动将媒体流发布到服务器,然后在服务器提供直播或点播服务,不过live555等大多开源项目默认并不支持该扩展;早年间,跟华为、上...

2020-05-21 11:30:49 1209

原创 Windows下H264视频编码码率控制对比测试

针对Intel-gpu /nvidia-gpu /x264三种不同编码器,编码类型H264,码率配置为3M, 码率分别配置为CBR/VBR的情况下,图像质量(PSNR SSIM)及其码率波动进行对比测试,结论如下:1、 Intel-gpu加速编码,固定码率和可变码率下,视频质量差别不大,vbr可变码率稍优,可根据实际场景选配cbr/vbr模式;2、 X264软编码,可变码率比固定码率,质量稍优,码率波动不大,可优先使用vbc可变码率模式;3、 Nvidia-gpu加速编码。固定码率...

2020-05-19 15:35:58 643

原创 SQLite数据库性能测试报告

数据库性能测试,以下是测试结果和结论,1.1 汇总数据库操作耗时结果汇总统计取20次操作的平均值(单位:毫秒)测试环境CPU Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz内存 Samsung 16GB DDR4 2400硬盘 SanDisk SD8SB8U-128G-1006操作系统 CentOS Linux release 7.6.1810 (Core)  单表数据量级 1万 10万 100万内存数据库...

2020-05-19 15:10:01 2146

原创 vs2015、vs2017、vs2019、msvc自动编译脚本

分享一个msvc自动编译脚本,方便每周或每天定时发布Windows程序,脚本片段:rem 记录编译时间echo *************************************************版本构建开始时间: %date% %time%*********************************************** >>build.logrem 设置编译器进程名set DstProgram=devenv.exerem 搜索目标进程以及其目录ech.

2020-05-19 10:51:15 2786

原创 MSVC版本号对应

MSC 1.0 _MSC_VER == 100MSC 2.0 _MSC_VER == 200MSC 3.0 _MSC_VER == 300MSC 4.0 _MSC_VER == 400MSC 5.0 _MSC_VER == 500MSC 6.0 _MSC_VER == 600MSC 7.0 _MSC_VER == 700MSVC++ 1.0 _MSC_VER == 800MSVC++ 2.0 _MSC_VER ==...

2020-05-19 10:33:50 3248

转载 select真的有限制么?

在刚开始学习网络编程时,似乎莫名其妙地就会被某人/某资料告诉select函数是有fd(file descriptor)数量限制的。在最近的一次记忆里还有个人笑说select只支持64个fd。我甚至还写过一篇不负责任甚至错误的博客(突破select的FD_SETSIZE限制)。有人说,直接重新定义FD_SETSIZE就可以突破这个select的限制,也有人说除了重定义这个宏之外还的重新编译内核。事实具体是怎样的?实际上,造成这些混乱的原因恰好是不同平台对select的实现不一样。Windows的实现

2020-05-19 10:18:00 718

转载 Linux 性能观察工具

今天整理笔记,顺便分享一个Linux性能观察工具图表,由于时间久远,不知道出处了。

2020-05-19 10:01:00 148

转载 ONVIF开发经验总结(附源码)

ONVIF开发经验总结.......................................................................................................1一、利用gsoap2.8.14生成Onvif相关源代码................................................................21.生成onvif.h头文件的方法.........................

2020-05-18 17:43:38 3178

原创 基于live555实现sip-rtsp媒体网关或媒体服务器

前面的文章我们已经实现了rtsp->sip;ES<->PS媒体互转的流媒体服务器,或者媒体网关功能,可以支持媒体转发和分发功能;如果是做视频监控的流媒体服务器或者网关的话,通常还需要补充sip->rtsp协议实现;这边文章就干脆补充完整。要实现sip->rtsp协议的媒体转发服务器,其实方案很多,随便移植一个开源的sip协议栈,然后集成一个rtspclient进去就可以实现了,例如osip做UAS + live555做rtspclient,或者pjsip +rtsp...

2020-05-18 12:51:29 1353

原创 基于live555实现rtsp-sip流媒体网关服务器

live555项目里面有个sipclient模块,一直不知道他是用来干什么的,也始终没有搞明白live555把这个代码加进来干什么,实在想不出来他的应用场景;做音视频通话?做会议?做播放器?事实上,他啥都做不了,真的要做这些应用我估计只有傻子才会用live555来做sip协议栈吧!唯一可能的应用场景就是视频监控的gb28181客户端,但是里面的代码并不支持gb28181,再说老外好似也不清楚我们大天朝的国标吧!好吧,我暂且认为,这是live555团队的个人嗜好吧!闲话扯了这么多,那好吧!步入正题。前面.

2020-05-15 18:02:53 2012

原创 基于live555实现流媒体代理服务器(7)-终结篇

前面已经讲了基于live555实现rtsp流媒体代理服务器的完整的流程,以及高性能改造;核心的内容已经讲完了,这篇文章就做一个总结。看看这样做出来的服务器是否还有一些缺陷或者可能的问题。总体上来说,按照前面的方法你已经可以实现了一个高性能的rtsp流媒体代理服务器了,或者叫rtsp协议媒体网关了;那么他还可能存在哪些问题呢?1、live555递归问题:函数递归调用比较费cpu,而且不是一个推荐的处理方式,很多公司甚至直接禁止在代码中出现递归调用,不过live555中无法避免;我们怎么办呢? 1.

2020-05-15 16:17:36 557 4

原创 基于live555实现流媒体代理服务器(6)-epoll实现

前面的文章中,将live555改造成了多线程服务器或代理服务器;本来在live555中,单线程select性能是足够的,fd资源通常情况下也够用;但是改成多线程后,select可能就不够用了,得换成epoll;或者如果你在同一个项目中,其他线程使用了过多的fd资源,不管是文件fd还是socketfd,都会导致fd值增大而超过1024,出现FD_SET溢出;这个时候,就需要epoll出场了,live555改epoll实现比较简单,不多讲,直接给出可以运行的源代码cpp。#include "BasicUs.

2020-05-15 11:20:20 618

原创 基于live555实现流媒体代理服务器(5)-多线程

基于live555实现多线程代理服务器或点播服务器,其实是一个比较复杂的流程,为了方便后续的讲述,这里首先给出架构设计,或者说是思路吧!1、首先需要找到创建多线程的点,或说时机;一般来说,至少有两种思路:一种是,单线程处理所有的rtsp消息或信令;使用多线程处理rtp/rtcp媒体流,类似信令和媒体分开处理,这种方法对于rtpoverudp应该没有问题,但是rtpoverrtsp的话,就有些复杂了,或者是否能够实现,我还不太确定;另一种就相对简单了,使用线程池的思路,在live555初始化时候,...

2020-05-15 10:47:38 715 4

原创 基于live555实现流媒体代理服务器(4)-多线程

基于live555实现rtsp代理服务器,前面的三篇文章已经讲完了,如果你只是实现小规模的rtsp代理,其实已经足够,后续的文章就不用看了。前面的文章已经可以确保代理几十路流转发和分发都已经戳戳有余了。不过,前面几篇文章如果想要都理解透彻的话,还是需要一定的live555代码阅读功力的。如果你本来就对live555原理熟悉,并且也基于他开发过项目,应该不难,如果是初学者,估计够呛!那么下面要讲的内容,会更加复杂一些,至少需要对live555有一个全面的认识,才能够看得懂并能够用起来;初步估计应该至少有l

2020-05-14 18:20:51 793

原创 基于live555实现流媒体代理服务器(3)

基于live555实现rtsp代理服务器总体业务逻辑流程,现在就可以梳理一下了,参见协议流程图:注意几点即可:1、在rtsp代理服务器收到describe消息的时候,通过streamId首先查询前向的rtspurl;然后通过rtsp代理客户端发送options、describe等消息,都是需要异步通信的,通过上一篇文章的介绍的异步通信方式即可;直到等到了前向的sdp,我们才能给后向回复带sdp的200 OK响应;2、setup消息无需关系顺序,原流程无需修改,上面图片可能少画了一个setu.

2020-05-14 16:50:14 787

原创 基于live555实现流媒体代理服务器(2)

基于live555单线程实现异步通信的方式,live555提供了两种异步通信的方式:一种是事件触发机制,可参考MAX_NUM_EVENT_TRIGGERS的定义或调用;另一种是递归。事件触发的方式比较简单,不过live555里面触发的事件最多只能32个,当然,你也可以自己扩展,这里就不多讲了;今天要说的是递归,这个方式效率不高,很多公司的代码中甚至明文禁止使用递归,我估计这个也是live555经常被评估为不适合做服务器的原因吧!使用递归来进行异步通信在live555中的一些例程中可以找到,不过可能很

2020-05-14 15:41:00 602

原创 基于live555实现流媒体代理服务器(1)

live555是一个高效简单且优秀的流媒体开源项目,我们可以轻松的基于他开发rtspclient或rtspserver,分别实现rtsp播放器或rtsp点播服务器,但是如果想基于他开发rtsp代理服务器就没有那么简单了,接下来,我会分享一系列的文章来介绍如何实现,欢迎感兴趣的同学关注!好了,关子卖完了,讲一下实现的方法。其实live555项目默认自带了一个rtsp代理服务器:live555ProxyServer.cpp,打开这个文件看一下,或者调试一下,在启动参数里面设置需要代理的前向rtspurl..

2020-05-14 15:05:22 1122

h264视频编码码率控制测试结果.xlsx

文档中分别通过FFmpeg的Intel-gpu加速、NVIDIA-cuda加速、x264软编码等模式下,分别测试了对应编码算法对码率控制cbr/vbr的效果,并通过客观质量评估给出评估结果。

2020-05-19

onvif-Client-功能实现源代码.cpp

源代码实现了onvif client的主要功能,并且支持gcc-4.8.5和vs2017编译和运行。通常情况下,下载的源码不能直接编译运行,因为没有提供依赖的库函数,所以替换一下必要的库函数就可以直接复用了。

2020-05-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除