自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小诺的博客

博客内容来自于自己在学习过程中的经验总结或者转载,转载的内容会附上原网站。

  • 博客(83)
  • 资源 (2)
  • 论坛 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 nginx实现,一推多用(rtmp推流,rtmp+flv+hls(m3u8)同时拉流),使用案例+使用方法

最近做到的项目使用nginx,要将一个摄像头的视频流推送给前端,并要求同时支持3种推流方式——rtmp,http-flv,hls(m3u8)。在使用nginx时,也是遇到了诸多问题,一度差点放弃,在此做个记录,同时也方便后来人。使用案例我是在tx2上做的,所以例子中使用的是gstreamer进行推流,你可以使用其他推流方式,比如ffmpeg或者obs。...

2020-09-19 19:54:13 2383

原创 Linux常用命令

因为大学专业不是计算机专业的,所以只是自己接触的一部分。后来再工作中有少量接触,这里总结一下常用的命令。文件操作相关vim 翻屏操作ctrl+f: 下翻一屏。ctrl+b: 上翻一屏。ctrl+d: 下翻半屏。ctrl+u: 上翻半屏。快速清空文件的方法$ : > filename$ > filename$ cat /dev/null > filename$ echo “” > filename$ echo > filename创建链接ln -.

2020-08-30 11:47:29 51

原创 C++日常用的函数总结

windows API 部分检查一个目录是否存在#ifdef UNICODEstatic bool isExistDir(const std::wstring& dir){ WIN32_FIND_DATA FindFileData;#elsestatic bool isExistDir(const std::string& dir) WIN32_FIND_DA...

2020-04-10 17:43:38 124

原创 ubuntu 上交叉编译 linaro 的库

交叉编译是在一个平台上编译另外一个平台可用的应用程序,此时可以想象,另外一个平台上的系统库不同,所以我们要指定编译时使用的系统库。另外一个平台上运行环境不同,内存的大小端等,所以我们要使用单独编译工具。即分别设置 SYSROOT 和 C_COMPILER / CXX_COMPILER编译linaro环境下的三方库这里介绍使用交叉编译的方式,编译三方库的过程。一般流程正常地,我们为cmake设置好要用的工具链,系统环境,以及编译输出的库路径,直接cd build && cmake.

2021-02-10 10:57:48 27

原创 shell批处理操作整理

偶尔会用到一些批处理操作,整理一下,等待以后可以找到规律,系统记忆。同时给多个文件改名for name in `ls *.html`;do echo $name ${name%.html}.jpg;done00.html 00.jpg01.html 01.jpg02.html 02.jpg03.html 03.jpg04.html 04.jpg05.html 05.jpg06.html 06.jpg07.html 07.jpg08.html 08.jpg09.html 09..

2021-01-20 10:25:15 9

原创 计算算法运行时间巧妙方法

在写程序时,特别是执行算法步骤时,经常需要记录某段代码的执行时间。今天发现一个比之前写的更好的方法,所以在这里记录一下。之前自己写的:https://blog.csdn.net/xiaonuo911teamo/article/details/110037590实现思路和特点思路:利用类的构造,记录开始时间点,利用类的析构,记录结束时间点,并完成输出。特点:使用方便,封装度高。头文件就一个TimerCounter。构造参数flag,就是要记录时间部分的名字。构造参数enable_cout,表.

2021-01-15 18:37:21 50

原创 线程安全变量封装(C++)

在写使用多线程的项目的时候,经常需要给一个变量加锁保护。这里提供一个对需要加锁的变量使用的封装格式。这里提供普通变量以及std::vector和std::deque两个标准库的封装格式。其他的结构也是相似原理。使用方式 DoubleBufferData<int> data; data = 7; int m = data; std::cout << m << std::endl;单独变量封装#pragma once#include.

2020-12-31 19:28:47 60 2

原创 C++静态内存共享(常用于多个模块建的解耦合)

同一个程序的静态堆栈空间(static、全局变量所存放的位置)只有一个,所以我们可以利用这块空间进行不同so中的操作。比如,一个so负责声明,另一个so负责实现,而且不需要直接相互包含。下面给出一个例子,我会给出文件目录、所有文件内容以及编译脚本。其中clang++可以换成g++,版本需要支持c++17。目录结构-- helloworld -- libFuncImpl -- FuncImpl.h -- FuncImpl.cpp -- libFuncDecl -- FuncDecl..

2020-12-31 18:53:38 37

原创 mac上VScode如何配置C++使用(方法出自于官网,很傻瓜,也很明白)

下面的方法基本是照抄官网的,只是翻译了一下,再加上一丢丢自己的备注。本来不想麻烦的,因为VS code是很大众的编译器了,想着随便搜个教程,傻瓜式看着照搬就行了吧。结果不尽人意,排名靠前的试了试,都多少有问题,原理说的也不明白。最后还是自己去官网找了一下,英文看的不是很流利,但是非常傻瓜,使用方式,每一步的目的也都很清楚。在VS code中使用Clang++的方法在这篇指导中,你将学到如何在macOS系统中,使用Clang/LLVM的编译和调试器配置Visual Studio Code。下面.

2020-12-30 20:52:07 76

原创 std::regex匹配正则表达式C++11

C++11中引入的这个正则表达式解析的还是挺好用的。代码unpack_call 的目的是将input拆分出name和value的值。这个例子没什么用,就看看效果就好例子:name: hello ; value: world打印输出:name: hello ; value: worldhelloworld#include <regex>static bool diag_call(const std::string& input){ // s 是匹配空格.

2020-12-24 21:02:19 77 1

转载 Linux errno详解

转自:https://www.cnblogs.com/Jimmy1988/p/7485133.html1. 错误码 / errnoLinux中系统调用的错误都存储于 errno中,errno由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误。PS: 只有当系统调用或者调用lib函数时出错,才会置位errno!查看系统中所有的errno所代表的含义,可以采用如下的代码:/* Function: obtain the errno string* char *stre.

2020-12-24 19:35:35 53 1

原创 C++你不知道的一个小技巧

你写C++使用模板吗?欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样.

2020-12-24 19:15:34 16 2

原创 类型安全转换汇总(C++)

平时在进行类型转换时,特别是从字符串转换为数字时,都要考虑安全问题。既不能默许,又应该及时发现处理,于是,自己写了安全的封装。正文static int32_t bool_to_int(const bool b)

2020-12-21 17:41:04 25

原创 C++级联Builder实现方式1

太简单的我就不记录了,下面的方式感觉封装效果非常好,可以视情况使用。摘选自Design Patterns in Modern C++ 一书中。类图表示源码#include <...>class PersonBuilder;class PersonAddressBuilder;class PersonJobBuilder;class Person{ // address std::string street_address, post_code, city; /.

2020-12-11 02:29:11 121

原创 gstreamer命令参数优化

原命令gst-launch-1.0 rtspsrc latency=8 location=rtsp://admin:aIlab1234@192.168.2.101/h264/ch1/main/av_stream ! rtph264depay ! queue ! nvv4l2decoder ! nvvidconv ! video/x-raw, width=1280, height=720 ! nvvidconv ! nvv4l2h264enc profile=4 iframeinterval=30 bitr

2020-12-10 18:17:34 203

原创 libjpeg-turbo测试解压缩性能

许久以前的代码,随便记录一下#include <stdio.h>#include <stdlib.h>#include <sys/time.h>#include <unistd.h>#include <sys/stat.h>#include <turbojpeg.h>typedef unsigned char uchar;typedef struct tjp_info { int outwidth; in.

2020-12-10 02:17:38 129

原创 遍历目录下的所有文件

#include <dirent.h>#include <string.h>#include <iostream>#include <vector>#include <string>namespace {void Usage(const char* exe){ fprintf(stderr, "input params error, run this exe as following command line:\n"); fp

2020-12-09 02:31:36 99

原创 实用工具记忆(因为有些强大的工具,但是又不常用到,怕会忘记)

windowsVLD(Visual Leak Detector)windows上的内存泄漏检测工具Wiresharkwindows上的抓包工具WinHex二进制文件查看工具Typoramarkdown文档编写工具MPC-HC和VLC视频文件详细信息查看工具Datahammer二进制数据查看图像工具progressmonitor进程监管工具linuxvalgrindlinux上的内存泄漏检测工具...

2020-12-08 22:49:41 22

原创 创建linux容器的远程登录

需要使用到ssh,没有的话要提前安装。参考链接:https://www.jianshu.com/p/c4d4ee6f3663systemd-nspawn启动容器systemd-nspawn -D [directory] --machine [name],如:root@leez:~# ls /mnt/data4firefly-rk-dev.tar firefly-rk-prod firefly-rk-prod.tgzsystemd-nspawn -D /mnt/data4/firefly-.

2020-12-07 11:08:11 14

原创 经历过的有意思的技术问题-面试专用

硬件资源使用受限(nvu)简述:在使用硬件加速功能时,对于一个硬件来说,处理能力是有上限的,当两个模块都想使用同一个硬件进行加速时,会产生资源上的竞争,导致性能不如单独测试。项目实例:在pipeline架构中,ColorConv和mnn推理模块都可以使用nvu模块进行加速,在单独设计两个模块的硬件加速时,都是按照满载去设计的。故同时使用时,会出现性能下降的现象。软件的流量监控(linux)原本对于该问题的处理,我是没有什么思路的,多亏身边有linux的大佬。简述:linux是有文件系统的(.

2020-11-25 03:03:35 16

原创 C++11 chrono 实现定时功能的简易封装

因为在项目中,经常需要计算算法的实时性能,最近又学习到C++11中的计时方法,但是稍微有些繁琐,需要加头文件,还要引用不少命名空间。所以,就想着进行封装一下。封装性能:在O2优化下,函数调用应当是自动内联了,所以正常使用,中间是不会增加时间的,即没有引入函数调用的时间,可以放心使用。在O0优化下,大概有300ns左右的单次函数调用的时间。使用方法start_timer_clock 设置初始时间点,end_timer_clock 返回到上一次使用(两个函数之一)的时间差。如果是在大的项目中使用,.

2020-11-24 03:00:56 77

原创 ffmpeg ffprobe查看视频文件编码格式

输入/opt/ffmpeg/ffprobe file.mp4 -show_streams -select_streams v -print_format json 输出{ "streams": [ { "index": 0, "codec_name": "h264", "codec_long_name": "H.264/AVC/MPEG-4 AVC/MPEG-4 part 10", "profile": "Main",

2020-11-23 10:43:13 437

原创 C++新特性(C++11, C++14, C++17, C++20)

作为使用的记录,方便后续的查询,欢迎大家一起来完善。我会定期根据使用频率调整顺序。大部分说明,都会出自C++reference,cppreference网站std::chrono::duration从C++11就有,14有强大的补充。下面列举我喜欢用的。#include <chrono>#include <iostream>int main(){ using namespace std::chrono_literals; auto halfmin = 30s.

2020-11-17 02:06:08 114

原创 城市三级级联选择器-Qt版

因为一个项目中,要填写 省-市-县 这样结构的地址,所以需要一个关系结构。下面分享的代码是我稍微花了些时间找到的,Qt版本的。使用方法构造UIChinaCity结构,如果使用次数多,建议static结构,避免多次重复解析。getProvinceName 得到省份列表getCitysName 根据省份得到市区列表getRegionsName 根据省份,市区获得县的列表头文件#ifndef UICHINACITY_H#define UICHINACITY_H#include <.

2020-11-10 00:52:02 17

原创 Linux之select

在使用read,write函数在管道中处理数据时,会出现阻塞的现象。此时,可以使用fcntl设置read不阻塞。但是此时又有一个新的问题。如果在一个循环中,反复读取数据,则会频繁占用CPU,等同于for循环空转。所以,就需要select来解决问题了。使用select,可以设置管道端口的等待处理时间。比如说,在使用read时,提前设置好select,设置端口等待2s,当管道中没有数据时,read等待2s,仍然没有数据,则进行返回。使用示例说明直接看注释吧。 fd_set rd; // st.

2020-11-02 00:45:10 27

原创 使用ffmpeg实现管道输入输出,并连接在代码中

这次记录的问题比较复杂。cat test.flv | ffmpeg -i pipe:0 -c copy -f flv - > test2.flv上面这条命令可以看懂吧,就是将test.flv,没有进行任何操作,保存到了test2.flv中。不明白的话,跳到最后的知识扩展中,有解释。然后,我要做的就是在代码中完成前后的操作,即自己读文件,送入ffmpeg,再从ffmpeg中读到输出。这样做的目的是,我可以自由控制使用ffmpeg处理某些过程,而不是全部过程。示例代码思路下面提供代码是我.

2020-11-01 20:16:58 364

原创 并发编程-信号量

此文作为笔记,记录代码片段。说明Semaphore 构造函数,count表示最多几个线程同时运行。Wait 等待可执行线程出现Signal 已准备好,请求执行代码片段class Semaphore {public: Semaphore(long count = 0) : count_(count) { } void Signal() { std::unique_lock<std::mutex> lock(mutex_); ++count_; //lo.

2020-10-31 20:52:00 32

原创 gstream推流实践命令整理

gstream 命令行使用整理gst-inspect-1.0 可以用来查询有哪些插件可用gst-inspect-1.0 + name 可以查看插件详情接口信息gst-launch-1.0 可拼接插件,执行命令gstream 部分插件介绍filesrc,rtspsrc 用于打开文件或者视频流matroskademux, flvdemux 解封装matroskamux, flvmux 封装nvv4l2decoder, nvv4l2decoder jetson上面的硬件解码器nvvidc

2020-10-31 20:40:12 105

原创 error : declaration does not declare anything [-fpermissive]

在项目中新引入了一小部分代码,然后出现了这个奇怪的错误。暂时记一下原因,随后再深入研究原理。错误解决方法调整了新引入的头文件include顺序,报错消失。

2020-10-22 09:28:57 486

原创 图片直线检测,简易封装

在写工程时,经常会用到一些功能单一的函数。将其进行良好的封装,才便于下次使用。目录设计思路代码细节配置参数自定义直线类型(如果要在此基础上做更广阔的开发,应当独立结构)检测结构头文件源代码设计思路类对象的功能设计为:在一张特定的图像中检测出若干条直线每条直线有唯一id,方便外部储存和查找支持通过某点查询到直线可保存检测结果,便于二次免检测重用检测参数可配置使用opencv为基础库代码细节配置参数nModeValue设置输出的图像类型nCannyLowThreshold、n.

2020-10-16 18:09:27 14

原创 日志文件超过一定大小自动清空

我本是用于防止日志文件过大的,我使用的logger库:https://blog.csdn.net/xiaonuo911teamo/article/details/107887713将下面的代码加入main函数外面,可以保证在程序退出时,进行一次日志文件大小的检测,超过一定大小就进行删除。(待完善)struct CleanLog{ ~CleanLog() { if (g_bCleaning) { FILE* file = fopen("log.txt", "rb"); if (.

2020-09-27 16:16:16 127

原创 C++上遇到的棘手问题,不能想到合适的标题

编译不通过类型运行崩溃,报字符串分割错误同一个项目中加载同名库,不能正确定位在同一个项目中,应用了两次同一个库,但是有一次应用时,有进行改动。后来再次使用时,发生运行崩溃。查看代码时,发现错误位置是很简单的代码逻辑,比如赋值。最后发现是由于两个库不同,二次加载时,默认还是使用的还是第一个库。...

2020-09-13 23:47:51 23

原创 遍历删除vector中的元素(出自Stackoverflow,正统的stl方法)

本来是个很简单的遍历删除的问题,但是因为vector的机制,在连续释放空间时,会导致出错。自己思考无非是倒序删除,或者使用earse的返回值,感觉都有些别扭,不是我想要的精巧。所以打算在网上搜个精巧简短的代码直接用。找来找去,终于在Stack overflow上找到了这段代码,实测很好用,正是我想找的。代码满足Condition()的元素会被删除。Execution() 释放Deferred资源。const auto pred = [](Deferred& d){ return !d.Co.

2020-09-13 23:38:20 30

原创 在linux下对进程进行流量监控,使用procfs

最近在做视频直播,需要在直播断开的时候自动重新发起重连。原因可能由于摄像头rtsp服务器异常断开,或者网络原因需要重启发起直播请求。解决思路文件 /proc/xx/net/snmp,里面保存着实时的网络通讯数据,通过 cat /proc/xx/net/snmp 命令可以查看其内容。但是由于其内容不容易查看,实际输出如下所以,我们可以通过awk命令进行格式化输出,便于查看。(xx换成你要查看进程的id)cat /proc/xx/net/snmp | awk "(f==0) {name=$1; i.

2020-09-13 22:32:04 39

原创 linux中出现(-1)的文件夹,不能进行操作怎么办

不知道什么原因,今天在日常使用的一个文件夹中出现了一个-1的文件夹。解决方法通过前面加–, 如rm -- -1mv -- -1 newfile。PS: - - 放在前面可以抵消特殊字符。

2020-09-13 18:28:02 70

原创 时间戳转换时间格式(10行代码)

以前不知道有localtime这个函数,感觉这个任务要自己写还挺麻烦的。后来知道了,也搜了现成的,但是大部分都是些啰啰嗦嗦的代码,让人看了难受。所以,自己看了一下localtime,进行了简介的实现。构建原则:简单的实现方式。时间格式规则,在一个程序中基本是固定的,所以不需要在支持多种动态转换的格式上冗余设计。方便修改格式。// 1595569256 -> 2020-8-17T9:53:54.000Zstd::string conv_timeType(const std::strin.

2020-08-18 15:39:12 182

原创 如何将内网ip映射到外网

这个百度经验上就有,不过对于着急使用的我来说,差了最后一步。所以还是一起记上吧。第一步首先登陆你的路由器,就改密码那个。一般就用浏览器直接打开192.168.1.1就可以,账号密码有可能是 admin admin吧,默认可能是这个。不对的看下面的方法。windows + R输入 cmd回车输入 ipconfig找到 “默认网关”,后面就是路由器的地址了。第二步因为每个路由器品牌都不一样,所以只能自己找了。找到带有“虚拟”或者“转发规则”字样的就对了。第三步填上自己的ip,端口.

2020-08-12 10:56:02 757

原创 C++中好用的Logger库

这是我在联想时,我直属领导告知我的,可以说是越用越好用。原文github:https://github.com/bmoscon/Logger如果原文失效,也可以在我的github中下载,其中一部分(logger.h以及Logger文件夹):https://github.com/xiaonuo911teamo/BaseException。我有改过h文件,本文后面会提到。优点使用很简单,共有3个文件(为什么是3个后面说),包含一个头文件,然后给定一个全局变量即可。支持多级输出,DEBUG、INF.

2020-08-08 23:51:31 238

原创 linux如何使用screen(会话)实用笔记

得知这个工具,发现真的好用。linux 好赞。PS:这个命令也需要安装,apt search screen, 找到然后安装就行了。但是有的开发板上不能使用,可以使用nohup,没有screen好用。第一次使用,创建一个会话。name可选,不加时会有默认名字。screen [name]...[Ctrl+a d]这时已经可以在里面做任何事情,即使关闭控制台(我猜你也是远程使用的),也不会导致任务退出(Ctrl+a d)了。第二次使用,重新打开之前运行的任务(比如之前就vim打开了一个文件,直.

2020-08-08 16:53:03 124 1

原创 ffmpeg保存h264裸流(一条命令解决)

很痛心啊,本来想直接搜这样一条命令,直接用的,但是翻了10来条帖子,没有一个给我写这个命令的。好多都是改的ffmpeg源码。多余的参数可以自己取舍,后缀名是h264就可以了。ffmpeg -buffer_size 1024000 -rtsp_transport tcp -i rtsp://admin:aIlab1234@192.168.1.101/h264/ch1/main/av_stream -vcodec libx264 -s 1280x720 -r 20 -preset superfast -.

2020-08-06 14:44:26 279

格式工厂1.85(绿色版)

新版本的格式工厂转换时总是出现各种各样的转换失败错误,偶然找到了这个版本。在这里分享一下。这个绿色版本很多新版本更好用。

2017-08-25

背包九讲(version 1.1 build 20071115)

一个很好的讲解背包的文件。 如果遇到打开之后无法显示,请参照https://jingyan.baidu.com/article/a948d65145f6ad0a2dcd2eae.html ,里面的方法试一下。

2017-03-27

基于ROS系统的激光雷达SLAM小车调试问题

发表于 2017-09-30 最后回复 2019-08-30

udp广播只能针对一个端口号吗?

发表于 2019-03-26 最后回复 2019-04-01

QT 添加this出现闪屏问题

发表于 2019-02-20 最后回复 2019-03-26

C语言什么时候会自动四舍五入了?

发表于 2017-08-29 最后回复 2017-08-29

想交个朋友师傅,真心朋友,实在师傅

发表于 2017-03-06 最后回复 2017-05-18

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

TA关注的人 TA的粉丝

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