自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (5)
  • 问答 (2)
  • 收藏
  • 关注

原创 Linux值得收藏的实用常用命令

持续更新中.......网络相关nload可以查网卡网络带宽速率ethtool 可以查网卡最大速率调试相关pidof nginx 查看程序pid,常嵌入命令行中使用ps -Lo lstart,etime,pid,lwp,stat,vsz,rss,pcpu,comm -p `pidof nginx`查看程序及线程相关参数ps -eLo pid,lwp,pcpu | grep 83796 查看线程占用strace -f -p 8386...

2021-07-13 12:57:13 108

原创 图解-虚拟机使用NAT方式连网

虚拟网IP:指的是142.1我们windows上配置的VMnet8(专用nat方式连网)的IP。这里首先对配置文件进行编辑,用ifconfig -a看你的网卡,我的是ens33。虚拟机ping不同主机,这个问题要检查下虚拟机的网络配置,或者重启虚拟机。虚拟网关IP:指的是中间那个142.2,即VMware上的配置。虚拟机IP:指我们虚拟机的IP,142.120。

2022-11-09 09:40:24 2994 2

转载 网络基础概念——面试必备

目录 网络1.对网络的基础认识<1>.组网方式<2>.OSI七层模型<3>.TCP/IP五层(四层模型)<4>.对封装分用的理解 2.网络数据传输<1>局域网(1)认识IP和MAC(2)网络数据传输的特性(3)网络数据传输流程1)网络互联的方式2).局域网交换机...

2021-11-17 23:22:46 386

原创 位运算——活学活用

位运算一、基础概念异或^二、应用1、【&】取最右位12、【^】交换2个数2、【^】案例-异常次数13、【^】案例-异常次数2功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入一、基础概念你好! 这是你第一次使用 Markd

2021-11-16 21:52:46 796

原创 实用监控shell脚本——附代码

最近在测试,需要对一些关键数值进行监控和比对,这里特别想获得系统cpu随着时间变化的曲线以及程序的cpu%值。如果是单纯获取数值来看,对比历史不是那么方便,不容易找到规律。就动手做了一个监控,看下效果以横向柱状图的方式显示cpu的变化,不采用普通的竖向柱状图,因为缓冲区都是上下拉动的,只要拉动滚动条就能看到历史记录,很清楚能看到曲线变化。一开始就是想到进度条的方法,然后网上搜到例子,就动手改起来。本来是采取打印spa+=’|’ 来实现进度,我觉得用循环来spa+=’|'效率低吧,然后改成了用print

2021-11-16 21:18:37 1911 3

转载 函数放在头文件中被多次包含的重定义问题

例如一个头文件headfile.h这样写#pragma oncebool Func (){return true;}在这个头文件被多个地方包含的时候就会出问题,链接时报错: (FuncB报重定义)“fatal error LNK1169: 找到一个或多个多重定义的符号”原因是,在headfile.h中定义了函数及其实现,如果被包含时,则会把函数实现放入包含的位置,被包含多次时,则会被放入多次,从而导致Func重定义。那怕是在头文件中使用了#pragma once或是#ifdef __xxx /#

2021-11-10 13:10:39 1531

原创 在windows下yangwebrtc2编译运行成功——强推防踩坑

目录1、yangwebrtc介绍2、编译必需的环境搭建2.1 webrtc服务器2.2 QT2.2.1 QT环境2.2.2 QT编译器2.2.3Windows运行库3、编译前的准备3.1 下载yangrtc源码和库3.2 配置库4 运行4.1 配置本地视频和音频4.2 运行5 问题1、yangwebrtc介绍https://gitee.com/yangrtc/yangwebrtchttps://github.com/yangrtc/ya..

2021-11-02 23:00:00 1070 1

原创 C++11—根据架构例子浅析lambda/function/bind

一、抛砖看到一个架构里的部分代码,觉得挺有意思,拖出来鞭打一下class Base{public: Base(int x,std::function<int()> action):myaction(action) { printf("Base::初始化=%d\n",x); } void Base_do() { printf("Base::Base_do()\n"); ...

2021-10-24 22:04:33 2377

原创 简单回顾多态

目录一、什么是多态二、多态的种类 1、重载2、模版3、强制转换4、虚函数和重写三、多态的分类1、静态动态2、面向对象的多态性3、面向对象的形式一、什么是多态多态的地位?多态(Polymorphism)是面向对象(Object-Oriented,OO)思想"三大特征"之一,其余两个分别是封装(Encapsulation)和继承(Inheritance)-- 可见多态的重要性。或者说,不懂得什么是多态就不能说懂得面向对象。...

2021-10-23 20:45:00 179

原创 [记录一个bug]ffmpeg转码时间戳-伪代码版流程要点小记[已解决]

ffmpeg调试方法上代码(伪代码)(1)直接看transcode_step()(2)分解输入-process_input()(3)分解输出-reap_filters()解决问题时间戳日志示例​

2021-10-22 21:49:45 1289

原创 最全五大I/O模型浅析—伪代码+动图+流程版本

0、了解同步异步阻塞非阻塞1、阻塞I/O模型(BIO)-同步阻塞,伪代码,动图,流程2、非阻塞IO模型-同步非阻塞,伪代码,动图,流程3、IO多路复用模型(事件驱动)-同步阻塞,伪代码,动图,流程select/poll/epoll的区别4、异步I/O模型(AIO)-异步非阻塞,伪代码,动图,流程5、信号驱动式I/O模型-阻塞,伪代码,动图,流程​

2021-10-17 19:29:44 837

原创 关于硬编码在每一帧前都会出现SEI的问题

在硬编码的时候,会在每一帧前都有一个SEI 00 00 00 01 06用命令行测试也还是会有SEI,主要是比较占我使用的空间大小,影响我码率吧,二来也是看起来不爽。所以想把他去掉,其实不去掉好像也没啥影响。而测试了软编码没有,也确定了硬编码是可以不出现SEI的,所以找找源码到底是哪里出问题,怎么去掉SEI。当然是看nvenc.c了一看是以为是ff_nvenc_send_frame里的a53_cc导致的,设置为0之后仍不生效。int ff_nvenc_send_frame(...

2021-09-26 17:10:22 1206

原创 关于保存h264裸流没有SPS/PPS

日常我们测试的时候,都喜欢在推流前保存h264裸流进行分析,但是这里将h264在H264BSAnalyzer分析的时候,有的是分析不出来的。这个是因为如果在AVCodecContext中设置了AV_CODEC_FLAG_GLOBAL_HEADER标志,对于生成的视频文件(如mp4),在windows操作系统下,并以图标的方式查看该视频文件时,视频文件的图标将是视频文件的第一帧,从而起到预览的作用该变量主要出现在该函数的以下两个地方1 if (avctx->flags & AV_CO...

2021-09-26 16:56:36 1202 1

原创 [记录一个bug]硬编解出现I帧不对齐的情况[已解决]

在硬编解码的时候画质十分模糊,后面解析h264出来看,发现I帧不像我设置那样去对齐。我设置gop=50,但是出来的gop不一定是501、反复确认了参数是没问题的2、将muxing的生成frame的功能替换我的解码帧3、将代码抽象为demo,对比测试muxing百思不得其解,办法总比困难多,最终测试了几天,把缩放改为了sws后,I帧间隔居然正常了。终于可以把问题归到硬缩放里了。最终经过提醒,发现是对keyframe的设置有问题。由于我的软缩放代码是这样写的:sws_sca..

2021-09-26 16:49:40 280

原创 ffmpeg视频蒙版,在文字里显示视频

我这里还尝试了视频蒙版的功能,即在文字中显示视频,哈哈,特别好玩。可以查看我上一篇文章学习ffmpeg斜向倾斜文字水印功能,命令行实现,铺满全屏,可变文字

2021-08-26 11:50:00 966

原创 ffmpeg斜向倾斜文字水印功能,命令行实现,铺满全屏,可变文字

最近要做一个视频叠加文字水印的功能,要求是水印斜向铺满全屏,并且文字水印是用户的名字即可变的。这个首先想到的是ffmpeg通过命令行自然是可完成的。发现使用滤镜的drawtext字段可以实现叠加文字,然而该字段drawtext并没有可以旋转角度的参数,这就十分头疼了。百度一番无果后,只能想到从别的地方生成一张做好斜向文字水印的图片,然后再叠加到视频上就可以,但是这样挺麻烦的,包括后期图片的传输控制等。但是经过一番研究之后,终于完成所需效果,先放我的成果图出来。(PS:这里...

2021-08-25 18:25:07 3496 21

原创 [记录一个bug]ffmpeg加入timestamp.h编译出错[已解决]

由于代码新增了av_ts2str()函数,提示需要包含timestamp.h文件,添加之后报错error: expected ‘)’ before ‘PRId64’原来这个宏定义给c用的,C++要用它,就要定义一个__STDC_FORMAT_MACROS宏显示打开它。c++使用PRID64,需要两步:包含头文件:<inttypes.h>定义宏:#define __STDC_FORMAT_MACROS,也可以通过编译时加-D__STDC_FORMAT_MACROS,或者在包含文

2021-08-23 10:48:19 1043

原创 显卡编解码——影响效率的因素(了解内存)

一、介绍CPU和GPU的关系二、影响拷贝速度的原因1、CPU2、PCIe3、带宽短板三、内存优化1、显卡的内存概念2、代码分配内存方式3、统一内存寻址4、主机端(CPU)内存概念5、几种存储器

2021-08-07 16:52:36 2714

原创 分享关于如何检测视频流码率

由于项目需要检测媒体流的码率,有很多方法,但是不建议使用ffprobe进行检测root:~# ffprobe -v quiet -show_streams 1.flv|grep bit_ratebit_rate=128000max_bit_rate=N/A有2点原因1、ffprobe检测rtmp、http等流不一定能检测出码率。因为通过一些直播服务器,可能该数据会丢失。2、检测的码率是设置在媒体头的数据,不一定是真实码率。比如对推流参数的调整,即使ffprobe检测出来的是128K,

2021-08-07 16:36:39 5806

原创 由一位资深测试人员写的docker性能测试引发的思考(缓存、内存、显存、PCIe)

由一位资深测试人员写的docker性能测试引发的性能思考衡量CPU性能除了频率外,还有一个核心数量,再到缓存的大小(CPU的主频、系统前端总线的频率、内存的工作频率和它们之间的总线带宽等,但是内存延迟对系统性能的影响也相当大。)先简单连接系统工作的过程。基本上当CPU接收到指令后,会首先从高速缓存中查找(缓解内存和CPU速度不匹配问题会影响到CPU执行的效率),所以它会最先向CPU中的一级缓存(L1 Cache)去寻找相关的数据,虽然一级缓存是与CPU同频运行的,但是由于容量较小,所以不可能每次都命

2021-07-31 18:08:01 2271

原创 编译最新Nvidia Video_Codec_SDK 11.0

编译Nvidia Video_Codec_SDK官方下载地址https://developer.nvidia.com/nvidia-video-codec-sdk/download下载需要注册会员,我已经下好上传了方便大家5积分自取=>解压后需要编译,cmake编译的时候有一些依赖库(centos可能参考这篇比较好https://blog.csdn.net/quantum7/article/details/106954231)Perhaps you should add t...

2021-07-31 16:27:13 2528 3

原创 编译libncurses5-dev遇到的问题

有个程序要编译的时候,cmake出现了错误Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)得知是缺少libncurses5-dev库,在网上下载一个.deb文件安装报了错dpkg: dependency problems prevent configuration of libncurses5-dev:amd64: libncurses5-dev:amd64 depends on libtinfo5 (=

2021-07-29 10:03:40 1429

原创 [记录一个bug]ffmpeg 解码错误avcodec_send_packet AVERROR_EOF, Resource temporarily unavailable[已解决]

之前输入源是一个摄像机rtsp流,所以不存在这个问题。这次输入源换成一个文件循环推流的rtmp,在解码一段时间后出现解码失败的问题,而且不会恢复正常,一直错误下去avcodec_send_packet error AVERROR_EOF, Resource temporarily unavailable最终解决方法是在avcodec_receive_frame 做一个while循环,把里面的多余的帧取出来。估计是因为这个文件从尾循环到头,然后帧出现未知的问题所以需要这样处理吧。见过很多例.

2021-07-23 14:53:26 3876 4

原创 [记录一个bug]ffmpeg avfilter_graph_config段错误崩溃的问题[已解决]

avfilter前面的初始化都没问题,结果在avfilter_graph_config就崩溃了。找了好久,最终排查到了av_opt_set_int_list 设置buffersink_ctx的pix_fmt有问题,虽然在这里是没报错的我在里面是这样写的enum AVPixelFormat pix_fmts=AV_PIX_FMT_YUV420P;av_opt_set_int_list(buffersink_ctx, "pix_fmts", &pix_fmts,AV_PIX_FMT_NO

2021-07-22 11:37:24 904

原创 [记录一个bug]ffmpeg从GPU拷贝至CPU编码崩溃及Input picture width (x) is greater than stride (0)[已解决]

从显卡拷贝到CPU出现了一个错误,导致编码失败[libx264 @ 0x7fff940043c0] Input picture width (176) is greater than stride (0)思考了一下,本来从CPU的resize 里传递过来的frame是可以的过来正常编码的但是由于这次resize改用了GPU的,所以出现了这个问题。百度了一下,应该是某处参数不对,该初始化的都初始化了,还是没找到问题,思考了一下pix_fmt的传递我这次的传递的想法是这样的解码...

2021-07-22 11:04:39 1715

原创 Nginx源码理解 - 内存池

现在对于nginx的内存分配函数讲解有很多了,就不一一分析了,讲下心得和实现的方式。这是第一次讲对nginx的理解,有什么不对的地方请大家多多指教,毕竟nginx涉及了太多知识点了,尤其是对系统的深刻理解。一、为什么要使用内存池一般我们使用malloc/alloc/free等函数来分配和释放内存。但是直接使用这些函数会有一些弊端:1、虽然系统自带的ptmalloc内存分配管理器,也有自己的内存优化管理方案(申请内存块以及将内存交还给系统都有自己的优化方案,具体可以研究一下ptmalloc的源

2021-06-30 22:16:49 220 2

原创 FFmpeg 滤镜AVFilter编程——简单滤镜

一、认识滤镜ffmpeg里面的滤镜十分重要,功能也十分强大,除了我们所谓的滤镜,还有贴图、伸缩变形、拆解合并等功能。ffmpeg二、如何使用滤镜

2021-06-02 22:28:37 2278 3

转载 [转]PS封装格式:GB28181协议RTP传输

转发:https://blog.csdn.net/ichenwin/article/details/100086930 PS封装格式:GB28181协议RTP传输1. GB28181要求的RTP流格式2. 头部信息     在安防行业,有个协议是无论如何都要适配的,因为公安监控网络用的就是它,它就是:GB28181。而这份协议主要由海康制定,所以除了海康其他厂商想要适配都会

2021-05-18 11:31:13 393

原创 [问题](更新)如何自己打时间戳?

推流的时候,如果视频数据没有时间戳,如何自己打时间戳。条件就限定只有视频流,推流rtmp。待解决中,如果有人知道可以评论解答参考:音视频同步(播放)原理-朱伟刚FFMPEG音视频同步-音视频实时采集并编码推流-优化版本-qinyi_style音视频同步原理及实现- wusc'blogFFmpeg简易播放器的实现5-音视频同步-叶余ffplay源码分析4-音视频同步-叶余FFmpeg时间戳详解-叶余FFmpeg流媒体处理-收流与推流-叶余...

2020-11-26 10:39:06 635 5

原创 CentOS7安装mysql8及问题解决

一、安装mysql8CentOS7安装mysql8.0.12如果不想出现下面的问题,那么建议那种mysql7也是挺好的。二、解决问题解决Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'》》这里一般是你改localh.

2020-11-14 10:03:08 212

原创 [记录一个bug]关于ffmpeg的av_interleaved_write_frame出现broken pipe/EOF 等问题[已解决]

最近在一次高并发测试中发现av_interleaved_write_frame经常返回 broken pipe /EOF /unknown errro 这种问题。运行的成功数是正常的一半,而且基本稳定在那个数值。跟阿里云也沟通过了,反馈是阿里云直播10秒没有拿到数据就主动关闭,这些都是客户端引起的问题导致服务端主动关闭的。像broken pipe,就是某端已经关闭这个链路,然后你再去往这个链路里送东西就会报这个错。但这个程序在别的电脑上运行没问题,而且推到本地直播服务器也没问题啊。后来我就把每.

2020-07-25 15:44:51 7306 11

原创 [记录一个bug]关于运行ffmpeg with cuda出错问题:Driver does not support the required nvenc API version..... [已解决]

当我在linux下编译好ffmpeg with cuda后,运行ffmpeg是可以的,但是一旦要开始转码,就报错Driver does not support the required nvenc API version. Required: 10.0 Found: 9.1查阅度娘https://blog.csdn.net/A199222/article/details/103233935后好像一般都说是:nv-codec-headers的版本是10.0,但是Nvidia driver版本只支

2020-07-25 15:32:38 6940 7

原创 [记录一个bug]av_hwdevice_ctx_create出现Cannot allocate memory(附带库运行时路径)[已解决]

新写的程序里调用ffmpeg的av_hwdevice_ctx_create()这个函数,出现Cannot allocate memory。但是另个程序一样的代码,居然是成功的。反复检查之后无果,就跳出去查了一下,看到一个问答:Have you tried to use ffmpg executables with the same libs that you using when you run the app?Have you tried to use ffmpg executables

2020-07-09 15:14:30 2708 1

原创 avio_open 阻塞很久且失败 Failed to resolve hostname xxx.xxx.com: Temporary failure in name resolu

最近编写ffmpeg推流时,采用到域名进行推流,发现用域名经常会在avio_open 里阻塞很久,而且失败率也很高。而用ip则不会。失败的话会出现:[tcp @ 0x7f5d24045000] Failed to resolve hostname xxx.xxx.com: Temporary failure in name resolution[rtmp @ 0x7f5d24045f40] Cannot open connection tcp://xxx.xxx.com:1935搜了很多关于

2020-05-09 14:19:07 2570

原创 FFmpeg设置视频的显示宽高比例display_aspect_ratio

最近采用ffmpeg编写代码的时候,发现视频播放的宽高比例不是我想要的,所以我需要调整显示的宽高比。一般采用ffplay播放视频的时候,会出现SAR和DAR其中他们之间的概念是DAR,Display_aspect_ratio,是指定该视频播放的时候,看到的视频比例。SAR,Sample Aspect Ratio,是指采集这个视频的比例,也就是存储像素点的比例。我发现在AVCo...

2020-04-22 21:12:43 6546

原创 Windows CMD命令获取文件属性详细信息

常常由于获取exe 或dll的版本或者版权等详细信息时,由于框太小,导致后面的信息看不到,也无法复制。但是由于只是简单查看,不想写程序那么麻烦,故采用cmd。在网上找了方法,归纳一下:打开cmd,输入以下命令,引号内是你的文件路径(Get-Item -path "E:\cat.exe").VersionInfo.ProductVersion这是获取版本的方法,由此可知应该有获取版...

2020-02-17 15:44:38 10125

原创 OCX完美解决网页中传递来的中文乱码

情景,本来应该设置预置位的名称“白云”在摄像枪上显示的,但是由于编码问题导致显示为一堆乱码英文或者????,利用很多方法转成各种字符编码都无效,即使日志可以显示中文,最后还是看到了soap_set_mode(m_soap, SOAP_C_UTFSTRING);这个方法,恍然大悟。原来要先吧gSoap的字符编码改为utf8这样传递到摄像机才是正确的字符,然后web传递进来的宽字节符也要转换为utf8...

2019-07-10 17:23:14 629

原创 STL-vector list deque 顺序存储结构要点

具体使用方法百度一堆,这里就讲讲一些要点。都需要加上需加上using namespace std; 方可直接调用。vectorvector&lt;int&gt; vec;是一种顺序容器,一个能够存放任意类型的动态数组。优点:随机存取[ ]和at(),动态操作push pop,自动调整内存。缺点:插入删除效率低,当动态添加太大,需要拷贝和释放。.begin() 0位的指针,也就是第一个元素的指针....

2018-05-23 20:24:00 199

原创 就是要弄懂你之—— 同步 异步 阻塞 非阻塞

相信很多人都会弄混这些概念,甚至记了之后又容易忘记,其实就是没有深入了解。虽然其他的博客有举一些水壶啊,狗啊等例子,但是还是模糊不清,看看我这个能不能把你弄懂。本文重在分清楚4者的概念,并没有深入的去讲解,因为其他博客已经说的很多了。这里先给你一个概念:同步异步是个操作方式,阻塞非阻塞是线程的一种状态。同步:一个功能调用时,没有得到结果之前,就不会返回,可以说是一种操作方式。参考线程同步,我访问这...

2018-05-23 20:02:09 2234 5

原创 算法之从零开始——排序

算法之从零开始——排序一、 快速排序快排几乎是应届生面试种算法方面必问的,不是问你实现的方法,就是叫你在纸上写实现的代码。快排采用的思想是分治思想,例如这个博客说的一样https://www.cnblogs.com/codeskiller/p/6360870.html一、算法概述/思路快速排序一般基于递归实现。其思路是这样的:1.选定一个合适的值(理想情况中值最好,但实现中一般使用数组第一个值),...

2018-05-06 15:37:13 227

Video_Codec_SDK_11.0.10_2021

Nvidia的硬件编解码示例,编译后可用,如何编译可查询本人博客。

2021-07-23

SDL2 32位 64位 库

SDL2 的32位 64位库。 采用vs编译,可以给msvc编译器使用。mingw请绕道。解决SDL2缩放容易崩溃的情况。

2018-03-20

ffmpeg 32位 64位 库

ffmpeg 32位 64位 库。分别有静态库.lib和动态库.dll 头文件

2018-03-20

onvif 生成的C文件

onvif 的wsdl等生成的.c文件,不用再从wsdl中生成。里面包括onvif 的c文件和头文件,还有openssl需要自己去下载对应平台的库。里面makefile 可以进行参考。

2018-03-20

onvif 编译成的静态、动态库,只供海思v200的编译使用

arm下只供海思v200的编译器。把复杂的onvif,编译的onvif库,使用的时候参考makefile。openssl等库编译时也要加入。

2018-03-19

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

TA关注的人

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