自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 C语言的堆与栈

程序运行中有两个存储空间可用,一个是栈,是归属于进程本身的,另外一个是堆,所有进程共用的。局部变量存放在栈中,而全局变量则放在堆中。 局部变量,如果是基本数据类型,那么就直接存在栈中,如果是应用数据类型,比如String str = new String("12");,会把对象...

2020-03-27 11:03:09

阅读数 9

评论数 0

原创 vs2015工程向vs2019工程迁移碰到的各种问题

把一个C++工程,从vs2015工程向vs2019工程迁移的过程中,碰到了好多问题,记录如下: 1. ConfigINI.cpp(85,55): error C2664: “std::string &trim(std::string &)”: 无法将参数 1 从“std::b...

2020-03-24 11:47:51

阅读数 77

评论数 0

原创 2. error MSB6003: 指定的任务可执行文件“CL.exe”未能运行。

用vs2019编译一个程序时,突然报这个错误。 解决:全网搜索资料,关于这个问题很少。后来,我发现是project property中,把C++语言标准改为:默认值。这样就fixed了。 我先前选择了vc++14。居然就导致了这个问题。 我build all一次,就没有问题了。不管是选择ISO C...

2020-03-02 23:49:11

阅读数 103

评论数 0

原创 vs2019使用体验

微软总是跟不上ISO标准,不过到vs2019的时候,终于跟上了。vs2015支持c++11,到vs2019,支持vc++14和vc++17。 编译器的审查变得更加严格了,象strcpy(), sprintf()都不能用了,直接就报错。 这样也好,规范化是好事情,我也就开始跟着改变吧。 strn...

2020-03-02 19:58:05

阅读数 208

评论数 0

原创 OBS编译(Windows)过程

先前obs编译,在公司电脑上面,编译不出来obs.exe。在家中电脑上,编译出的obs.exe不支持video capture设备。 我一直怀疑是环境原因,后来新换了一台笔记本电脑,我又安装了最新的vs2019和qt5.14.1,再来编译一次。 这次成功,记录如下: 下载源码: https://...

2020-02-17 08:01:49

阅读数 42

评论数 0

原创 视频运维工程师的修炼

1. 工作内容细化: 1.1 视频服务器,CDN供应商,DNS服务商的帐号管理。 1.2 加速域名,DNS解析记录维护。 1.3 视频中心,视频各级源站,录像节点,回放节点部署与维护。 1.4 自建CDN加速节点部署,流量规划与监控。 1.5 视音频相关参数配置及优化测试。 2. 必备技能 2....

2020-02-15 09:48:43

阅读数 60

评论数 0

原创 RTMP直播视频时延分析

RTMP + CDN的视频直播架构很容易搭建,但问题在于时延大,会累积。一般情况下,视频直播时延在2~3s,网络差一些就会有3~7s。长期播放的累积时延可能超过150s。 视频的实时性归纳为三个等级: 伪实时: 视频消费延迟超过3秒,单向观看实时,通用架构是CDN + RTMP+HLS,现在基...

2019-12-29 09:53:34

阅读数 121

评论数 1

原创 基于ffplay的video流测试工具开发

直接基于ffmpeg来修改,去掉SDL。数据库选用mongodb,方便用C语言对接db。 既然不需要显示,那还是基于linux来开发比较方便一些。 一、setenv yum -y install gcc gcc-c++ make git bzip2 二、compile git clone h...

2019-12-29 09:52:09

阅读数 41

评论数 1

原创 扑克牌自动图像识别在博彩行业的应用

一、行业痛点 通常情况下,扑克牌是通过扫码来识别的。这种方案存在诸多缺陷: 游戏桌台须定制,主要是开孔,安装扫码机。 扫码机并不是100%可靠,牌稍有磨损(主要是条码磨损)就会导致多次扫码才能识别出来。 显然,这种方案带来游戏运营的耗材开销。 二、技术解决方案 图像识别技术在近几年有了长足的...

2019-12-29 09:50:22

阅读数 142

评论数 1

原创 利用SRS搭建商业CDN网络

SRS是一个搭建CDN平台的很好的基础,但在运维支撑方面还做得不够。 运维方面需要增加的功能: 1. 作为edge时,在线拉流用户数量。 2. push时,必须有合法token才允许推。 3. pull时,必须有合法token才允许拉。 4. 动态配置更新。可以用mqtt pub/sub协议。 需...

2019-12-29 09:47:51

阅读数 30

评论数 0

原创 SRS 转码功能生成竖屏size使用的流

针对移动H5来说,一般推流尺寸是用1280×720,这是横屏使用的流。 对于竖屏显示来说,如果在render时做crop的话,图像质量会下降甚至异形。 最好是用SRS转码出竖屏需要的流。用ffmpeg.transcode.conf listen 1935; max_connections 1000...

2019-12-29 09:40:57

阅读数 33

评论数 0

原创 mpv编译过程

mpv是一个优秀的开源播放器。https://github.com/mpv-player/mpv 按照windows: https://github.com/mpv-player/mpv/blob/master/DOCS/compile-windows.md 指导进行编译,碰到 问题#1:播放文件...

2019-12-29 09:39:17

阅读数 40

评论数 0

原创 django 表单上传文件 权限不正确,导致403错误

django 表单上传文件 权限不正确,导致403错误。 原因:实际上,Django上传程序就没有去设置权限。这样就导致如果这个文件的权限不正确,那传上来也就不正确。 比如: -rw-------. 1 root root 11209476 12月 10 22:06 tst_ap7loNT.apk...

2019-12-10 23:06:16

阅读数 37

评论数 0

原创 mpv编译过程

mpv是一个优秀的开源播放器。https://github.com/mpv-player/mpv 按照windows: https://github.com/mpv-player/mpv/blob/master/DOCS/compile-windows.md 指导进行编译,碰到 问题#1:播...

2019-09-14 23:03:42

阅读数 133

评论数 0

原创 SRS节点拉流的同时并forward到其它节点

srs_error_t SrsRtmpConn::acquire_publish(SrsSource* source) { srs_error_t err = srs_success; SrsRequest* req = info->req; if (!source-&g...

2019-09-09 19:31:07

阅读数 127

评论数 0

原创 FMLE同时推多路流到SRS异常,推1路则正常。

同时推两路log: [2019-09-04 05:46:54.102][Trace][8386][105] RTMP client ip=::ffff:107.150.28.246, fd=9 [2019-09-04 05:46:54.333][Trace][8386][105] simple h...

2019-09-09 19:28:43

阅读数 132

评论数 0

原创 SRS 转码功能生成竖屏size使用的流

针对移动H5来说,一般推流尺寸是用1280x720,这是横屏使用的流。 对于竖屏显示来说,如果在render时做crop的话,图像质量会下降甚至异形。 最好是用SRS转码出竖屏需要的流。用ffmpeg.transcode.conf listen 1935; max_connection...

2019-09-09 19:27:11

阅读数 102

评论数 0

原创 srs3.x代码阅读

srs使用了state-threads协程库,是单线程多协程模型。不用考虑线程安全,数据不用加锁。 int SrsServer::listen()中启动if ((ret = listen_rtmp()) != ERROR_SUCCESS) 进一步启动:SrsListener* listener =...

2019-09-09 19:26:26

阅读数 73

评论数 0

原创 利用SRS搭建商业CDN网络

SRS是一个搭建CDN平台的很好的基础,但在运维支撑方面还做得不够。 运维方面需要增加的功能: 1. 作为edge时,在线拉流用户数量。 2. push时,必须有合法token才允许推。 3. pull时,必须有合法token才允许拉。 4. 动态配置更新。可以用mqtt pub/sub协议。 需...

2019-09-09 19:23:43

阅读数 232

评论数 0

原创 google TCP BBR拥塞算法对于穿透GFW的作用

RTMP视频源站一般都需要建在国内的服务器上。从国外推流到国内,穿透GFW是一个巨大的挑战。 RTMP协议是基于TCP传输的,必然导致直播时延及累积时延。由于GFW的随意丢包机制,导致视频时延加大! 据网络测试,在部署了最新版内核并开启了TCP BBR 的机器上,网速甚至可以提升好几个数量级。 ...

2019-08-26 01:50:08

阅读数 249

评论数 0

原创 移动H5播放器wp5.js

移动H5播放器wp5.js产品规格: 1. 支持主流CDN加速的https://xxx.flv拉流播放,音频AAC和视频H.264编码。 2. 兼容chrome/firefox/safari/IE11浏览器,支持PC和移动android/iOS手机平台。 3. 视频加载速度快,播放无累积时延。 ...

2019-07-29 23:05:23

阅读数 139

评论数 0

原创 图像识别算法在视频游戏中的应用分析

真人在线视频棋牌游戏的兴起。如下图: 一般来说,现在全部都是采用二维码扫瞄方式来读牌。下图是采取图像识别技术来自动完成,淘汰二维码。 流程: 1. 高清网络摄像机NetCam架设于在桌面正上方,角度不一定需要90%,但要注意反光。 2. 程序通过NetSDK控制摄像机配置:1280x720...

2019-04-02 23:03:15

阅读数 185

评论数 0

原创 HTTP,cookies and session机制在django中的实现

无状态的HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器 传送到客户端的浏览器。 HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,...

2019-03-24 10:18:48

阅读数 125

评论数 0

原创 python序列化存在问题:too many values to unpack

经查,发现是model的定义: photo_type = models.IntegerField(choices=PHOTO_TYPE_LIST, verbose_name='相片分类', null=True) # PHOTO_TYPE_LIST = ( # (0, ...

2019-03-17 19:39:13

阅读数 105

评论数 0

原创 ffplay编译和安装

ffplay build: # yum -y install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel cmake hg num...

2019-03-09 14:46:12

阅读数 257

评论数 0

原创 视频直播CDN加速性能测试

国内做直播的公司有蓝汛,网宿,阿里,腾讯,七牛,华为等。 CDN加速性能有两个重要指标:首开时间(FirstPlayTime)也叫首屏时间,直播时延(LiveDelayTime)。 CDN一般宣传的指标是:首开时间小于1秒,称作秒开。直播时延在3秒以内。实际上,这是有使用条件的。 现有的网络环境非...

2019-02-21 22:56:29

阅读数 1466

评论数 0

原创 运维之redis cluster

首先说一下运维工作。 对于初创公司,运维工程师的工作可能需要从申请域名开始,购买/租用服务器,上架,调整网络设备的设置,部署操作系统和运行环境,部署代码,设计和部署监控,防止漏洞和攻击,业务均衡,数据备份和恢复等等。 对于大型的公司,对于运维工作的要求越来越高,也催生了更细化的运维分工:从大的方向...

2019-02-19 22:06:51

阅读数 63

评论数 0

原创 rootkit后门程序开发测试过程

rkant = rootkit ant,它是利用netfilter hook开发的一款linux后门rootkit程序。 rkant包括服务器端程序(on victim server)和客户端程序(on user client pc),在ubuntu上面测试通过。 功能: 1、任意端口复用。端口...

2018-12-27 21:37:55

阅读数 229

评论数 0

原创 python3.6 pycrypto安装

warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. msvs2015版本号为14.0,对应环境变量VS140COMNTOOLS。要安装这个VC IDE才行。我只安装了vs2010。记得勾...

2018-11-22 07:04:09

阅读数 135

评论数 0

原创 SDK tools directory is missing

Android开发 SDK tools directory is missing 问题是,现在google不让单独下载SDK,只能下载集成的android studio。我应该是先前安装时,重新给了目录,结果就报找不到SDK的目录了。 studio认为,已经安装过了。 去android中文网bai...

2018-11-07 06:34:44

阅读数 2976

评论数 0

原创 最近基于树莓派做了一个高性能的rtsp拉流转推rtmp的硬件盒子

看CPU占用率,40路没问题。

2018-09-03 07:18:59

阅读数 973

评论数 1

原创 Go 是互联网时代的C语言

原本2018年春节就应该好好学一下Go语言的,一直拖到今天。有点对不起一位前公司的老朋友Steve涛。 Go = C语言 + OOP。或是Go = C语言 + python。Golang就是在几十年不变的经典C语言基础上,增加了封装性和并发性。 特别是增加了字典和列表类型的处理。 Go 一般比...

2018-08-20 14:35:03

阅读数 2018

评论数 2

原创 产品规划的定义,方法,三篇文档及工具

产品的规划定义-把产品讲清楚,是市场调研后产品抽象的过程与结果–产品愿景,团队为之去努力的目标与方向–目标市场(互联网产品主要是指目标用户群体与群体关联的位置)–竞争分析–产品功能与详细描述–产品功能的优先级–产品用例(Use Case,主要用于更方便的人团队成员理解你的想法)–性能需求(最大并发...

2018-07-03 17:40:30

阅读数 1627

评论数 0

原创 python新用户无法register的问题调查

突然发现生产环境新用户无法注册。心中一惊!最后定位是model中有一列:department = models.ForeignKey('cmm.Department', null=True, verbose_name='隶属部门')既然是外键,又允许为nul...

2018-03-01 19:22:30

阅读数 367

评论数 0

原创 数据库建立冗余字段的原则

冗余字段,是设计数据的时候常用的一种手段。优点是,可以在很大程度上避免数据库的关联查询,不使用join提升查询速度。缺点是,数据一致性维护成本高,需要维护冗余字段的一致性。 数据库model设计,致力于不要建立冗余字段。因为维持数据一致性是一个big problem。 但是作为操作日志,记录,历史...

2018-02-13 17:45:09

阅读数 1117

评论数 1

原创 python可以在遍历列表时,直接对dict元素增加字段

example: for item in warehouse_list: warehouse_id = item['warehouse_id'] warehouse = Warehouse.objects.get(id=warehouse_...

2018-02-13 17:44:19

阅读数 3913

评论数 0

原创 rabbitMQ使用的一点小结

首先,queue这个概念,只在接收侧(消费者),在发送侧(生产者),只有一个routing_key的概念。 如何理解呢?这就是说,routing_key是全局的,你得定义为"queue.key"的形式,比如 MQ_ORDER_KEY = 'bill.order...

2018-02-10 23:06:20

阅读数 200

评论数 0

原创 pika.exceptions.ConnectionClosed: Connection to 127.0.0.1:5672 failed: timeout

设置pika的连接socket_time参数超时时间长一些,例如1s: connection = pika.BlockingConnection(pika.ConnectionParameters(host='10.17.1.226',port=5672,credentials...

2018-02-10 22:56:02

阅读数 3508

评论数 0

原创 mysql存储过程总结

1、所谓存储过程,实际上就是mysql批处理。过程是PROCEDURE的意思,Fortun语言的函数就是过程这个关键字。 2、存储过程中用到的变量,不能跟数据库字段名重复。比如 UPDATE sku SET sku_name = sku_name WHERE sku_id = sku_id...

2018-02-06 15:59:47

阅读数 161

评论数 0

原创 django ORM的反向查找related_name

首先说一下什么是正向查找, 比如order表,有一个表项在model中定义为:     order = models.ForeignKey(         'oms.Order',         related_name='order_detail...

2018-02-03 00:29:52

阅读数 1541

评论数 0

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