自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Louis_815的博客

奋斗就会有收获

  • 博客(81)
  • 资源 (4)
  • 收藏
  • 关注

转载 Docker镜像打包示例

一、war包(SpringMVC项目)镜像部署1、拉取tomcat镜像docker pull tomcat:8.5.302、上传需要部署的war包(以hello.war为例)到自定义的工作目录下3、在上个步骤创建的工作目录下创建Dockerfile文件。将war包和Dockerfile文件放在同一目录下。Dockerfile文件内容如下:from tomcat:8.5.30ENV LANG C.UTF-8ENV TZ=Asia/ShanghaiENV JAVA_OPTS ...

2021-11-17 11:43:29 1442

转载 Linux文件名及目录提取

一、使用${}1、${var##*/}该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。使用例子及结果如下:从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。若使用时在shell程序文件中,可以使用变量来保存这个结果,再加以利用,如file=${var##*/}2、${var##*.}该命令的作用是去掉变量var从左边算起的最后一个'.'字符及其左边的内容,返回从左边算起的最

2021-11-03 17:46:39 2185

转载 Ubuntu报错:下列签名无效: EXPKEYSIG ******* Open Robotics <[email protected]

文章目录一、问题描述二、解决方法一、问题描述自己在运行 sudo apt-get update遇到如下报错W: GPG 错误:http://mirrors.ustc.edu.cn/ros/ubuntu xenial InRelease: 下列签名无效: EXPKEYSIG F42ED6FBAB17C654 Open Robotics <[email protected]>E: 仓库 “http://mirrors.ustc.edu.cn/ros/ubuntu xenial

2021-10-28 10:07:47 1578

转载 C++(20):线程池的实现和使用

线程池作用线程池能够减少创建的线程个数,线程池的出现着眼于减少线程本身带来的开销线程池适合场景(1)单位时间内处理任务频繁而且任务处理时间短(2)对实时性要求较高。如果接受到任务后在创建线程,可能满足不了实时要求,因此必须采用线程池进行预创建。实现代码代码来自github上的一位大神,只用一个简单的头文件就实现了线程池:https://github.com/progschj/ThreadPool#ifndef THREAD_POOL_H#define THREAD_POO...

2021-07-30 18:09:33 418

转载 Linux crontab命令详解

crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 -->相当于闹钟 日志文件: ll /var/log/cron* 编辑文件: vim /etc/crontab 进程:ps -ef | grep crond ==> /etc/init.d/crond restart 作用:定时备份,实时备份常见命令参数 1 2 3 4 5 6 7...

2020-07-09 08:27:26 513

转载 卡尔曼滤波经典讲解,C++算法实现(转载)

在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器...

2020-03-03 16:20:25 1950 1

转载 FFmpeg 被声明为已否决 deprecated

不用再取消SDL检查,不用再添加#pragma warning(disable :4996),下面才是正确的解决方法!!以下是一些常见的deprecated问题,遇到下述没有列出的问题,可以打开相应的头文件,在里面搜索ctrl+F,会有英文说明的,如下:PIX_FMT_YUV420P -> AV_PIX_FMT_YUV420P'AVStream::cod...

2019-06-25 10:29:25 1002

转载 FFmpeg学习4:音频格式转换

前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式的,所以通过FFmpeg解码出来的数据不能直接发送到SDL进行播放,需要进行一个格式转换。通过网上一些资料,也能够正确的播放音频了,但是对具体的音频转换过程不是很了解,这里就对FFmpeg的对音频的存...

2019-06-21 09:55:39 1324

转载 几种常见的设计模式(含C++代码)

本文部分转载于https://blog.csdn.net/hechao3225/article/details/71366058本文介绍几种常用的设计模式并给出C++实现。1.单例模式作用:保证一个类只有一个实例,并提供一个访问它的全局访问点,使得系统中只有唯一的一个对象实例。应用:常用于管理资源,如日志、线程池实现要点:在类中,要构造一个实例,就必须调用类的构造函数...

2019-05-31 16:48:53 1129

转载 linux 解压命令详解

原文网址:http://zhidao.baidu.com/question/90378903.htmltar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有...

2019-05-13 20:54:14 127

转载 Red Hat Linux 下命令行界面与图形界面的切换

原文地址:http://blog.csdn.net/oathevil/article/details/5890261版权声明:本文为博主原创文章,未经博主允许不得转载。redhat 默认图形界面登录方式改为默认命令行界面登录方式# vi /etc/inittabid:5:initdefault更改为id:3:initdefault在图形界面方式启动...

2019-05-12 12:11:18 3389

转载 git命令

学无止境,精益求精!十年河东,十年河西,莫欺少年穷!学历代表你的过去,能力代表你的现在,学习代表你的将来!本篇博客是转发的别人的,原文地址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html很久没写博客了,都是工作太忙闹的,索性今儿转发一篇!省的博客园太冷清了...Git图形化界面我用的还可以,但是命令就不太会了,索性和大家一起学...

2018-05-21 11:42:30 192

转载 ffmpeg实战教程(五)libswscale,libavfilter实践指南

1.libswscale实现YUV转RGBlibswscale里面实现了各种图像像素格式的转换。libswscale使用起来很方便,最主要的函数只有3个: (1) sws_getContext():使用参数初始化SwsContext结构体。 (2) sws_scale():转换一帧图像。 (3) sws_freeContext():释放SwsContext结构体。 其中sws_getContext...

2018-03-21 08:16:32 433

转载 ffmpeg实战教程(四)格式转换如MP4转MKV等

知识延伸:I,P,B帧和PTS,DTS的关系基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余...

2018-03-21 08:15:19 2536

转载 ffmpeg实战教程(三)音频PCM采样为AAC,视频YUV编码为H264/HEVC

音频PCM采样数据编码为压缩码流(MP3,WMA,AAC等)简单介绍一下流程中各个函数的意义:av_register_all():注册FFmpeg所有编解码器。avformat_alloc_output_context2():初始化输出码流的AVFormatContext。avio_open():打开输出文件。av_new_stream():创建输出码流的AVStream。avco...

2018-03-21 08:14:29 389

转载 ffmpeg实战教程(二)用SDL播放YUV,并结合ffmpeg实现简易播放器

我们先实现用SDL播放YUV数据先来了解一下基本概念SDL基本函数: [初始化] * SDL_Init(): 初始化SDL。 * SDL_CreateWindow(): 创建窗口(Window)。 * SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。 * SDL_CreateTexture(): 创建纹理(Texture)。[循环渲染数据] * SDL_Update...

2018-03-21 08:12:41 240

转载 FFMPEG 在vs2010中的环境配置

从官网上下载ffmpeg最新的版本。网址为http://ffmpeg.zeranoe.com/builds/。例如我需要的是64-bitBuilds (Shared)和64-bit Builds (Dev),版本号要相对应。64-bit Builds (Shared)主要包含了所要用到的dll文件,64-bit Builds (Dev)主要包含了所要用的头文件和lib文件。其实这些lib并不是传统...

2018-03-21 08:11:26 362 2

转载 ffmpeg实战教程(一)Mp4,mkv等格式解码为h264和yuv数据

FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。而网上对这些功能的使用大多是基于命令行的。这不利于我们深入学习定制化ffmpeg,今后我将写一系列的用代码实现这些功能的教程供大家学习。这系列的前部分我打算写在windows上的实现,后部分写移植到Android系统上实现。 代码实现的前提是对ffmpeg源码有一定的了解,如果你不了解可以看这里 ffmpeg源码...

2018-03-21 08:04:44 1132

转载 ffmpeg源码简析(十)libswscale中的SwsContext,sws_scale()

libswscale是一个主要用于处理图片像素数据的类库。可以完成图片像素格式的转换,图片的拉伸等工作。 libswscale常用的函数数量很少,一般情况下就3个:sws_getContext():初始化一个SwsContext。sws_scale():处理图像数据。sws_freeContext():释放一个SwsContext。其中sws_getContext()也可以用sws_get...

2018-03-20 10:02:53 670

转载 ffmpeg源码简析(九)av_log(),AVClass,AVOption

1.av_log()av_log()是FFmpeg中输出日志的函数。随便打开一个FFmpeg的源代码文件,就会发现其中遍布着av_log()函数。一般情况下FFmpeg类库的源代码中是不允许使用printf()这种的函数的,所有的输出一律使用av_log()。 av_log()的声明位于libavutil\log.h,如下所示。void av_log(void *avcl, int level, ...

2018-03-20 10:01:36 453

转载 ffmpeg源码简析(八)解码 av_read_frame(),avcodec_decode_video2(),avformat_close_input()

1.av_read_frame()av_read_frame()的作用是读取码流中的音频若干帧或者视频一帧。例如,解码视频的时候,每解码一个视频帧,需要先调用 av_read_frame()获得一帧视频的压缩数据,然后才能对该数据进行解码(例如H.264中一帧压缩数据通常对应一个NAL)。通过av_read_packet(***),读取一个包,需要说明的是此函数必须是包含整数帧的,不存在半帧的情况...

2018-03-20 09:59:52 861

转载 ffmpeg源码简析(七)解码-avformat_open_input,avformat_find_stream_info()

1.avformat_open_input打开媒体的的过程开始于avformat_open_input,因此该函数的重要性不可忽视。在该函数中,FFMPEG完成了:输入输出结构体AVIOContext的初始化;输入数据的协议(例如RTMP,或者file)的识别(通过一套评分机制):1判断文件名的后缀 2读取文件头的数据进行比对;使用获得最高分的文件协议对应的URLProtocol,通过函数...

2018-03-20 09:58:49 391

转载 ffmpeg源码简析(六)编码-av_write_frame(),av_write_trailer()

1.av_write_frame()av_write_frame()用于输出一帧视音频数据,它的声明位于libavformat\avformat.h,如下所示。int av_write_frame(AVFormatContext *s, AVPacket *pkt); 1简单解释一下它的参数的含义: s:用于输出的AVFormatContext。 pkt:等待输出的AVPacke...

2018-03-20 09:57:28 399

转载 ffmpeg源码简析(五)编码——avformat_alloc_output_context2(),avcodec_encode_video2()

1.avformat_alloc_output_context2()在基于FFmpeg的视音频编码器程序中,该函数通常是第一个调用的函数(除了组件注册函数av_register_all())。avformat_alloc_output_context2()函数可以初始化一个用于输出的AVFormatContext结构体。它的声明位于libavformat\avformat.h,如下所示。int a...

2018-03-20 09:56:32 541

转载 ffmpeg源码简析(四)avcodec_find_encoder(),avcodec_open2(),avcodec_close()

avcodec_find_encoder()和avcodec_find_decoder()avcodec_find_encoder()用于查找FFmpeg的编码器,avcodec_find_decoder()用于查找FFmpeg的解码器。 avcodec_find_encoder()的声明位于libavcodec\avcodec.havcodec_find_encoder()的源代码位于libav...

2018-03-20 09:55:31 2347

转载 ffmpeg源码简析(三)av_malloc(),AVIOContext,AVFrame,avio_open2()等

内存操作的常见函数位于libavutil\mem.cav_malloc()av_malloc()是FFmpeg中最常见的内存分配函数。av_malloc()的代码可以简化成如下形式。void *av_malloc(size_t size) { void *ptr = NULL; /* let's disallow possibly ambiguous cases */ ...

2018-03-20 09:54:36 686

转载 ffmpeg源码简析(二)av_register_all(),avcodec_register_all()

av_register_all()该函数在所有基于ffmpeg的应用程序中几乎都是第一个被调用的。只有调用了该函数,才能使用复用器,编码器等。av_register_all()调用了avcodec_register_all()。avcodec_register_all()注册了和编解码器有关的组件:硬件加速器,解码器,编码器,Parser,Bitstream Filter。av_register_...

2018-03-20 09:53:43 2104

转载 ffmpeg源码简析(一)结构总览

感谢雷神,中国音视频技术领域无私的拓荒者传承者,您的博文治学态度令我敬佩,文章使我受益良多 本系列前办部分应该是对雷神和其他资料的总结。 如果对ffmpeg不了解的客官进这里 ffmpeg必知道的知识点 :http://blog.csdn.net/king1425/article/details/70348374ffmpeg API变更雷神记录获取媒体信息使用的函数是av_find_stream_...

2018-03-20 09:43:39 405

转载 ffmpeg必知道的知识点

ffmpegFFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图...

2018-03-19 18:54:31 197

转载 Cef经典N大问题

1、cef启动、退出的时候怎么崩溃了答:如果是启动时崩溃,请看资源目录是否文件都齐全.退出的话见https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_Close.md如果是centos6.4 内核上跑CEF启动时候崩溃,原因是不支持一个uid有关的东西。启动时增加参数--disable-setuid-sandbox就

2017-07-28 16:29:45 623

转载 CEF JavaScript和Cpp交互示例(Custom Implementation)

一个CEF应用程序也可以提供自己的异步JavaScript绑定。此处演示:JavaScript注册函数给Render进程,Render进程保存该JavaScript函数Render进程发消息通知Browser进程Browser进程处理后,回发消息给Render进程Render进程调用之前保存的JavaScript函数步骤首先在CefRenderProcessHa

2017-07-28 16:28:35 920

转载 CEF关闭流程

原文链接:https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_Close.md我来说windows下CEF3.2171的关闭流程,里面会引用一部分官方库的文档和个人的伪代码,为了辅助理解—— 以下是截取自cef_life_span_handler.h的头文件文档,所以一部分文档他还是写在头文件里的,根据他的流程,能

2017-07-28 16:26:02 8703 4

转载 用Visual C++轻松实现报表处理

用Visual C++轻松实现报表处理作 者:王骏前言  数据库在企业软件系统中应用广泛,而报表的显示与打印成为此类软件必备的功能。可惜VC++并没有集成报表处理工具,但其强大的功能再加上市面上功能完备的报表处理工具使这一工作变得容易,本文介绍了在VC++环境中利用Seagate公司的Crystal report(水晶报表)来实现报表的显示与打印,并提供示例代码。  一

2017-05-10 13:40:55 1020

转载 如何根据用户名生成注册码

现在网上下载的软件大部分都需要注册后才能使用其全部的功能,也就是说当前大部分软件都是建立了注册机制的,对于一个刚进入软件行业的程序员来说一定非常想了解其中的注册机制是怎样实现的。其实用VC开发软件,是可以很方便地加入注册机制的。  要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判断软件是否注册;2、如何生成注册码,如何保证一个用户名只生成与之唯一

2017-05-05 10:09:19 2260

转载 NAT穿透原理

nat穿透原理 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人会告诉你如何使用TCP协议去穿透(甚至有的人会直接告诉你TCP协议是无法实现穿透的)。但是,众所周知的是,UDP是一个无连接的数据报协议,使用它就必须自己维护收发数据包的完整性,这常常会大大增加程序的复杂度,而且一些程序由于某些原因,必须使用TCP协议,这样就常常令一些开发TCP网络程序的

2017-03-23 09:54:23 511

转载 音视频聊天开发: 7 Android下ffmpeg+x264编译

Android下视频的采集和播放直接调用sdk就行了,只是编解码麻烦一些,这里采用NDK编译ffmpeg然后通过JNI接口调用。 Android开发是麻烦了一点,不过手机倒是卖的很多,好在底层还要用的是Linux,  可以使用c/c++开源项目,比如 ffmpeg, vlc等拿上来用。否则直接就是WP7下场。再说android编译ffmpeg,随便一搜有很多文章,不过转载者不知道自己测

2017-03-21 14:29:50 675

转载 音视频聊天开发: 6 简单的stun server

说是stun server,其实只是用了一下名字,和开源的stun server不是一回事,这里还加了一些其他功能。功能: 1 用户通过客户端登录上来,返回它的公网IP和端口。2 为了开发方便,同时记录下客户端的公网IP端口,以及它提交上来的本地IP和端口,以供查询。(这部分功能正常来讲应该单独做成一个服务,比如IM Server)3 用户查询其他用户的公网IP和内网IP(用户拿到

2017-03-21 14:29:12 1813

转载 音视频聊天开发: 5 UDP发送视频数据的分包和重组

这里主要用UDP来发送视频,当发送的数据大于1500时分包发送,保证每包小于1500.发送好办,分割后循环发就可以了,关键是接收时的处理。先做一下处理的方法 :发送时每包上面加上标识,比如RTP的做法是加时间戳,SSRC,媒体类型还有结束标识。简单参考一下,我们也加上一些标识(直接拿RTP头也可以, 不过我们的目标是更简洁一些)。另外,我们的目的和RTP稍有不同,UDP库当时设计是传输

2017-03-21 14:28:46 1315

转载 音视频聊天开发: 4 UDP封装后的调用

上文提到的UDPSocket,只是一个简单的socket封装,被动地调用。本文仿照MFC的CAsyncSocket方式做一个包装调用,不过事件响应采用select,不用MFC的窗口消息。      简单接口如下:typedef void (*udp_data_cb)(int sockid, char *data, int len, int ip, int port, int times

2017-03-21 14:28:14 417

转载 音视频聊天开发: 3 UDP的简单封装

视频的采集显示以及编码解码都实现了,下一步就要考虑把数据发出去,由其他客户端播放(设计是先做网络传输,一切都正常后再做音频,虽然叫音视频聊天,其实网络才是最重要的部分)。这里使用UDP进行发送和接收。       考虑到音视频聊天,需要支持iOS,Android等多平台,所以尽可能采用公用方法,下面是简单的一个封装:///////////////////////UDPSock.h:

2017-03-21 14:27:39 1076

inttypes.h

ffmpeg需要用到的文件inttypes.h,如果不添加,有可能编译不会通过。

2018-03-20

GetLastError

2016-11-21

C语言函数大全

C语言各种函数的原型及使用方法、示例等,需要包含的各个函数头文件

2016-01-20

空空如也

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

TA关注的人

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