自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (6)
  • 收藏
  • 关注

原创 使用nginx做为http-flv服务如何解决跨域问题

什么是跨域跨域是指浏览器的同源策略限制,这个策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。如果一个请求url的协议、域名、端口三者之间任意一个与当前页面的url不同即为跨域。如下图所示即为跨域时的报错:使用nginx搭建http-flv服务主要使用了nginx和nginx-http-flv-module模块,具体过程可参考:https://blog.cs...

2020-04-15 22:04:42 4875 1

原创 windows 10 x64环境下编译带有ffplay的ffmpeg

windows下编译ffmpeg的核心在于要搭建一个类linux的编译环境,换句话说就是需要在windows环境中运行gcc、make等命令工具。本文详细介绍windows下编译环境的搭建与ffmpeg的编译过程,并成功生成ffplay。编译环境搭建windows下类linux的编译环境常见的有两种,一种是MinGW,一种是cygwin。下面先简单介绍一下两者的区别。MinGW与c...

2019-06-12 07:20:18 2964 1

转载 时间复杂度O(1), O(n), O(logn), O(nlogn) 表示的具体含义

在描述算法复杂度时,经常用到O(1), O(n), O(logn), O(nlogn)来表示对应复杂度程度, 不过目前大家默认也通过这几个方式表示空间复杂度 。那么,O(1), O(n), O(logn), O(nlogn)就可以看作既可表示算法复杂度,也可以表示空间复杂度。大O加上()的形式,里面其实包裹的是一个函数f(),O(f()),指明某个算法的耗时/耗空间与数据增长量之间的关系。...

2019-05-18 09:10:58 3117

原创 对YUV格式的详细分析

YUV数据格式的定义和采集方式YUV数据格式定义YUV分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信...

2019-05-16 22:35:36 602

原创 Linux线程JOINABLE与DETACHED的区别

Linux线程JOINABLE与DETACHED的区别Linux下两种类型线程的创建joinable属性的线程detached属性的线程代码示例Linux下两种类型线程的创建Linux下多线程编程时,线程有两种属性,一种是joinable,一种是detached。joinable属性的线程如果是joinable的线程,那么必须使用**pthread_join()来等待线程结束,否则线程所占...

2019-05-13 18:50:01 1414 1

原创 MLT框架简介与部分命令解析

本文仅仅做为一篇入门文章,带领大家认识一下MLT这个框架(库)。一、简介 MLT的英文全称为MLT Multimedia Frameword,翻译过来为MLT多媒体框架。该框架国内用的人比较少,也几乎没有中文资料,本文的目的是带大家简单认识一下这个功能强大的库。 MLT的官网为:https://www.mltframework.org/, 可以在上面下载最新的源码,...

2019-04-10 14:17:15 10674 2

转载 TCP协议可靠传输的实现

     TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议     关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。     所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“...

2019-01-13 23:10:12 533

原创 golang版的排序算法实现(冒泡、选择、快速)

用golang重写冒泡、选择和快速三种排序算法。测试输入参数如下所示:valus := []int{12, 23, 1, 5, 3, 9}冒泡排序接口:func bubbleSort(values []int) { for i := 0; i < len(values); i++ { for j := i+1; j < len(values); j++ { ...

2019-01-11 22:44:42 268

原创 C++中const如何用于函数重载

常成员函数和非常成员函数之间的重载首先先回忆一下常成员函数声明:<类型标志符>函数名(参数表)const;说明:(1)const是函数类型的一部分,在实现部分也要带该关键字。(2)const关键字可以用于对重载函数的区分。(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。(4)非常量对象也可以调用常成员...

2019-01-09 17:28:40 323

原创 使用ffmpeg命令行实现一入多出转码

我们在实际工作中有时会遇到一入多出的转码需求,比如在给播放器提供多种网络环境的播放源选择(如流畅、清晰、高清和超清等)时就会需要这种操作。在这篇文章中,我们讲一下如何使用一条ffmpeg命令来实现同一个输入源转码输出多路不同视频的功能。

2018-11-28 17:50:05 10324 11

翻译 ffmpeg命令行map参数的使用

介绍理解-map参数的最好办法就是想像一下怎么去告诉ffmpeg你要从源文件中选择/拷贝哪个流到输出文件。输出文件的stream顺序取决于在命令行中-map的参数顺序。下面有一些例子。默认默认操作(没有指定map参数),比如:ffmpeg -i INPUT OUTPUT本质上,是从所有输入中发现“最高质量”(单个)视频输入流和“最高质量”(单个)音频输入流,并“发送”到O...

2018-07-21 11:04:58 24762 4

转载 基于FFMPEG的音频编码器

本文介绍一个最简单的基于FFMPEG的音频编码器。该编码器实现了PCM音频采样数据编码为AAC的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要。通过看本编码器的源代码,可以了解FFMPEG音频编码的流程。本程序使用最新版的类库(编译时间为2014.5.6),开发平台为VC2010。所有的配置都已经做好,只需要运行就可以了。流程(2014.9.29更新)下面附一张使用FFmpeg编码音频的...

2018-07-13 18:19:59 383

转载 用ffmepg实现音频重采样

1.概述在进行音频播放时,有时音频流不能满足播放要求,需要对声音的相关属性如:通道数,采样率,样本存储方式进行变更播放,也就是音频重采样。ffmpeg提供了SwrContext进行转换。typedef struct SwrContext SwrContext;2.基本概念2.1通道数声音在录制时在不同空间位置用不同录音设备采样的声音信号,声音在播放时采用相应个数的扬声器播放。采用多通道的方式是为了...

2018-07-13 18:03:48 510

转载 Qt中无处不在的d指针为何方神圣

在研究QCoreApplication类的代码时,无意间弄明白了“d_func()”和“d指针”的来源:class Q_CORE_EXPORT QCoreApplication#ifndef QT_NO_QOBJECT : public QObject#endif{ …… Q_DECLARE_PRIVATE(QCoreApplication)public: …...

2018-02-26 17:46:29 1068

转载 ts、mp4、mov和flv媒体容器封装层的timebase分析

在使用ffmpeg封装过程中发现,封装成mp4文件音视频是同步的,但是封装成mpegts文件则有问题,视频播放正常,但音频播放异常,且不同步。所以猜测是封装层的时间基准单位(timebase)在搞鬼。 在此,并没有去深入的分析ffmepg中的源代码,而是简单的修改了一下ffmpeg中的av_dump_format函数,使之把音频的tbn(即封装层的timebase)也打印出来,分析了如下容器:mp...

2018-02-26 16:38:03 2072

原创 三个基于WebRTC开源MCU框架的横向对比

1. licode官网地址:http://lynckia.com/licode/index.html官方demo地址:https://chotis2.dit.upm.es/Github地址:https://github.com/lynckia/licodeGithub推荐指数:1483(star)功能(官方原文):Licode is base

2018-01-17 18:19:46 32425 3

原创 使用jitsi官方源安装内网演示环境过程

操作系统:ubuntu 16.04 x641.安装nginxsudo apt-get install nginx2.添加软件库sudo vim /etc/apt/sources.list在文件的最下面加上:deb https://download.jitsi.org stable/3.添加一个dns 服务地址:sudo vim /etc/

2018-01-17 15:20:58 19001 17

转载 如何使用Android Studio用相同的代码工程生成不同的APP

今天由于公司业务需要, 经理让安装两个相同的APP到手机上, 考虑到包名是应用程序的唯一标识, 所以在工程列表的app下的build.gradle里, 把applicationId改成了不同的. 然后再使用新的签名文件(也可以使用同一个签名文件)重新打包, 这样打包出来的APK就可以和其它的项目同时运行在手机上了.

2017-11-02 22:28:58 3699

转载 libx264预设类参数详解

libx264预设类参数详解。

2017-08-08 15:56:11 1849 1

原创 ffmpeg常用转码参数解析

转码命令示例$ ffmpeg -i input.flv -vcodec h264 -s 960x540 -pix_fmt yuv420p -b 800k -r 25.0 -g 50 /–acodec aac -ab 64k –ac 2 -ar 44100 -profile:v high -level:v 3.1 -subq 5 -me_method /umh -me_range 8 -r...

2017-08-08 15:51:33 6668

原创 如何计算视频和音频的时间戳间隔时间

本文均以在ffmpeg中的操作为例。

2017-08-02 15:03:04 3863

原创 VS2015调用低版本lib库出现“无法解析的外部符号 __snprintf ”问题的解决

VS2015在调用低版本lib库出现有时会出现“无法解析的外部符号 __snprintf ”的问题

2017-03-22 20:16:14 7004

转载 Android四大基本组件及生命周期介绍

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。

2017-03-06 08:03:50 559

原创 win7+vs2015 nmake编译libevent-2.1.8-stable

svn中下载的目录中,不建议用trunk中的代码,因为主分枝代码是正在开发过程中的,可能会不稳定或有bug。本例中用到的代码是从tags目录中找到libevent-2.1.8-stable,也就是当前最新发布的稳定版。

2017-02-21 14:06:26 4745

原创 使用VS2010的nmake命令编译MakeFile流程

使用.nmake的makefile是可以是用vs的nmake命令编译的。

2017-02-20 11:13:30 25999 2

原创 C++ 11为什么会引入nullptr?

C中NULL是宏定义的void*指针:#define NULL ((void*)0)C++中void*指针不能隐式转换成其他类型的指针,所以NULL是0的宏定义:#define NULL 0那么,假如有重载函数f(int)和f(T *),调用时用f(NULL),那么就会出现二义性,无法确定调用那个函数。nullptr是一个空指针类型nullptr_t的常量,nullptr_t类

2017-02-17 19:58:48 1479

转载 C++中智能指针std::auto_ptr的用法详解

C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。

2017-02-09 15:23:08 8481

转载 GPU视频解码之CUVID

项目中,需要对高清监控视频分析处理,经测试,其解码过程所占CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈。

2016-12-21 17:22:53 6369

原创 h264 NALU的获取与分析

0x00000001或0x000001是一个nalu的起始标志,遇到下一个此标志时为该nalu的结尾。起始标志的后面第一个字节(type)里包含有nalu的类型,type & 0x1F即为该nalu的类型(nal_unit_type),具体类型分析详见下节。

2016-12-05 10:36:33 11738

转载 Linux动态库的生成与使用指南

Linux下动态库文件的文件名形如 libxxx.so,其中so是 Shared Object 的缩写,即可以共享的目标文件。

2016-11-29 16:58:36 318

原创 大数字符串加法

最近在整理总结旧知识,自己写的一个大数字符串加法算法,供大家参考

2016-11-29 07:05:03 535

原创 当类的指针被赋值为NULL时,类的哪些成员还可以被该指针调用

因为函数在类里面是独立于类存在的,而且不占用类的空间,在程序编译的时候就已经把函数的地址分配好了,因此,只要有这么一个对象,不管他指向NULL还是非NULL,都是可以调用该函数的,也不会出错。

2016-11-25 18:14:55 1621

原创 C++中为什么要使用断言

断言assert是仅在debug下有效的宏,当其中的条件为假时,触发错误提示。使用断言的目的是捕捉不应该发生的非法情况。注意:不要混淆非法情况与错误情况之间的区别,后者的出现是因为代码错误,是一定要作出处理的。

2016-11-22 10:08:25 1813

原创 小谈动态链接库

动态链连库可以使用__declspec(dllexport)和def文件两种方式实现,两种方式只能同时有一种

2016-11-22 09:11:43 544

原创 再论大端小端

大端小端的问题只跟CPU有关,与操作系统无关

2016-11-22 09:07:01 406

原创 windows下常用数据类型总结

windows下常用数据类型总结

2016-11-22 08:46:45 335

原创 Python实现的软件狗

下面代码实现了一个软件狗,被监控的程序做为狗的子程序存在,程序名称用参数传入,程序退出后会自动启动。

2016-11-17 10:26:02 2106

原创 Windows线程同步常用锁的分析

线程同步常用的四种锁:Event(事件)、Mutex(互斥量)、CrititicalSection(临界区)、Semaphore(信号量)

2016-11-17 10:19:48 813

原创 出现“发生访问冲突”类型错误的解决方法

若出现“***exe中的0x***处未处理的异常:0x***读取位置0x***时发生访问冲突”这样的错误,则说明访问了不属于自己的内存空间,可按照下列顺序查明原因

2016-11-17 07:34:25 5784

转载 H264画质分类

H264分为BP、EP、MP、HP四种画质

2016-11-17 07:21:06 2529

quazip-0.7.1 Qt5.4.0静态库

使用Qt5.4.0编译的quazip-0.7.1静态库win32版,包里包含zlib1.2.8版的静态库,可以直接使用。

2015-01-14

Stock Manager 库存信息管理系统

库存信息管理系统。包含基本信息管理、产品信息管理、库存操作管理、库存警示管理、统计查询管理等功能。 具有真彩色工具栏的界面。

2008-10-05

SunShine网页浏览器

VC6做的网页浏览器,具有主页设置、历史记录、收藏等功能。

2008-10-05

基于对话框托盘程序

使用VC6做的基于对话框的托盘程序

2008-05-22

RSA加密工具

使用VC6, 用RSA算法实现了对文本文档的双向加密(加密和签名)。

2008-05-14

学生信息管理系统(VB)

本系统使用Visual Basic 6.0作为开发语言,使用Access 2003 设计数据库,实现了用户管理、学生基本信息管理、学生成绩管理以及成绩分析的功能。

2008-01-04

空空如也

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

TA关注的人

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