自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(148)
  • 资源 (27)
  • 收藏
  • 关注

原创 Q_OBJECT的作用

Q_OBJECT是Qt中的一个宏。由于Qt的语法是在c++的基础上拓展的,所以在Qt程序的编译过程中,直接用gcc这些标准编译器编译是不可行的,因为gcc不能识别这些拓展性的语法,比如信号和槽(Signal and Slot)。于是Qt引入了moc这一编译器。moc(Meta-Object Compiler),即元对象编译器,Qt 程序在交由标准编译器编译之前,会使用 moc 分析 C++ 源文件,假设它发现某个头文件中包括了 Q_OBJECT这个宏(注意, moc 只处理头文件中标记了Q_OBJECT的

2021-05-27 11:07:46 7

原创 opengl抗锯齿

抗锯齿在学习渲染的旅途中,你可能会时不时遇到模型边缘有锯齿的情况。这些锯齿边缘(Jagged Edges)的产生和光栅器将顶点数据转化为片段的方式有关。这里我们可以看到一个屏幕像素的网格,每个像素的中心包含有一个采样点(Sample Point),它会被用来决定这个三角形是否遮盖了某个像素。图中红色的采样点被三角形所遮盖,在每一个遮住的像素处都会生成一个片段。虽然三角形边缘的一些部分也遮住了某些屏幕像素,但是这些像素的采样点并没有被三角形内部所遮盖,所以它们不会受到片段着色器的影响。因此完整渲染后

2021-05-25 17:49:40 17

原创 opengl实例化

实例化如果我们能够将数据一次性发送给GPU,然后使用一个绘制函数让OpenGL利用这些数据绘制多个物体,就会更方便了。这就是实例化(Instancing)。实例化这项技术能够让我们使用一个渲染调用来绘制多个物体,来节省每次绘制物体时CPU -> GPU的通信,它只需要一次即可。如果想使用实例化渲染,我们只需要将glDrawArrays和glDrawElements的渲染调用分别改为glDrawArraysInstanced和glDrawElementsInstanced。这些渲染函数的实例化版本

2021-05-25 17:08:50 10

原创 opengl几何着色器

几何着色器的输入是一个图元(如点或三角形)的一组顶点。几何着色器可以在顶点发送到下一着色器阶段之前对它们随意变换。然而,几何着色器最有趣的地方在于,它能够将(这一组)顶点变换为完全不同的图元,并且还能生成比原来更多的顶点。#version 330 corelayout (points) in;layout (line_strip, max_vertices = 2) out;void main() { gl_Position = gl_in[0].gl_Position + vec

2021-05-25 16:42:00 9

原创 opengl高级GLSL

GLSL的内建变量着色器都是最简化的,如果需要当前着色器以外地方的数据的话,我们必须要将数据传进来。我们已经学会使用顶点属性、uniform和采样器来完成这一任务了。然而,除此之外,GLSL还定义了另外几个以gl_为前缀的变量,它们能提供给我们更多的方式来读取/写入数据。顶点着色器变量gl_Position,它是顶点着色器的裁剪空间输出位置向量。如果你想在屏幕上显示任何东西,在顶点着色器中设置gl_Position是必须的步骤。GLSL定义了一个叫做gl_PointSize输出变量,它是一个floa

2021-05-25 15:59:55 7 1

原创 opengl高级数据

OpenGL中的缓冲只是一个管理特定内存块的对象。在我们将它绑定到一个缓冲目标(Buffer Target)时,我们才赋予了其意义。当我们绑定一个缓冲到GL_ARRAY_BUFFER时,它就是一个顶点数组缓冲。OpenGL内部会为每个目标储存一个缓冲,并且会根据目标的不同,以不同的方式处理缓冲。调用glBufferData函数可以填充缓冲对象所管理的内存,这个函数会分配一块内存,并将数据添加到这块内存中。如果我们将它的data参数设置为NULL,那么这个函数将只会分配内存,但不进行填充。glBuffer

2021-05-25 14:51:40 7 1

原创 opengl帧缓冲

到目前为止,我们已经使用了很多屏幕缓冲了:用于写入颜色值的颜色缓冲、用于写入深度信息的深度缓冲和允许我们根据一些条件丢弃特定片段的模板缓冲。这些缓冲结合起来叫做帧缓冲(Framebuffer),它被储存在内存中。OpenGL允许我们定义我们自己的帧缓冲,也就是说我们能够定义我们自己的颜色缓冲,甚至是深度缓冲和模板缓冲。我们目前所做的所有操作都是在默认帧缓冲的渲染缓冲上进行的。默认的帧缓冲是在你创建窗口的时候生成和配置的(GLFW帮我们做了这些)。有了我们自己的帧缓冲,我们就能够有更多方式来渲染了。创建一

2021-05-24 15:49:13 8

原创 opengl混合、面剔除

OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透明的物体,玻璃有它自己的颜色,但它最终的颜色还包含了玻璃之后所有物体的颜色。透明的物体可以是完全透明的(让所有的颜色穿过),或者是半透明的(它让颜色通过,同时也会显示自身的颜色)。一个物体的透明度是通过它颜色的aplha值来决定的。Alpha颜色值是

2021-05-24 15:16:09 7

原创 opengl深度测试、模板测试

深度测试深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了信息,并且(通常)和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的,它会以16、24或32位float的形式储存它的深度值。在大部分的系统中,深度缓冲的精度都是24位的。当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试,如果这个测试通过了的话,深度缓冲将会更新为新的深度值。如果深度测试失

2021-05-24 14:54:05 7

原创 opengl光照

冯氏光照模型现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是我们有限的计算能力所无法模拟的。因此OpenGL的光照使用的是简化的模型,对现实的情况进行近似,这样处理起来会更容易一些,而且看起来也差不多一样。这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子:环境光

2021-05-20 17:51:06 14

原创 opengl坐标系统

GLMGLM是OpenGL Mathematics的缩写,专门为OpenGL量身定做的数学库.opengl坐标系统OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,y,z坐标都应该在-1.0到1.0之间,超出这个坐标范围的顶点都将不可见。我们通常会自己设定一个坐标的范围,之后再在顶点着色器中将这些坐标变换为标准化设备坐标。然后将这些标准化设备坐标传入光栅器(Rasterizer),

2021-05-20 17:34:13 16

原创 opengl图形渲染管线

OpenGL简介一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。实际上OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。GLFWGLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入。GLADGLAD是继GL3W,GLEW之后,当前最新的用来访问OpenGL规范接口的第三方

2021-05-20 16:57:43 16

转载 WebRTC:PeerConnection通信建立流程

WebRTC Peerconnection通信过程中的四种角色:Signaling ServerICE/TURN/STUN ServerRemote PeerLocal Peer通信过程中的基本概念:Room:Signaling Server使用Room的概念对同一组通信的peers进行配对管理,一个room中包含有1个或者多个peers。当没有peers存在时room销毁;当第一个peer连接到signaling server时执行create room动作,此时因为没有其他peers

2021-03-22 15:52:49 26

原创 webrtc mixer源码分析

AudioMixer的入口函数为AudioMixerImpl::Mix,功能分为三步:计算输出采样率:CalculateOutputFrequency获取音频数据:GetAudioFromSources混音:FrameCombiner::Combine下面分别对这三步进行分析CalculateOutputFrequency,...

2021-01-20 10:39:20 75 2

原创 RTMP、HTTP-FLV、HLS协议

RTMP概述RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的。在基于传输层协议的链接建立完成后,RTMP协议也要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接,在Connection链接上会传输一些控制信息,如SetChunkSize,SetACKWindowSize。其中CreateStream命令会创建一个Stream链接,用于传输具体的音视频数据和控制这些信息传输的命令信息。RTMP协议传输时会对数据做自己的格式化

2020-12-28 18:07:02 57

原创 复杂度分析与基本算法思想

算法衡量的维度时间维度:是指执行当前算法所消耗的时间,通常用时间复杂度来描述。空间维度:是指执行当前算法需要占用多少内存空间,通常用空间复杂度来描述。复杂度描述大O符号表示法,即 T(n) = O(f(n)), 其中 n 表示数据规模 ,O(f(n))表示运行算法所需要执行的指令数,和f(n)成正比。常见的时间复杂度量级常数阶O(1)代码执行的行数是固定的:void swapTwoInts(int &a, int &b){ int temp = a; a =

2020-12-17 11:09:26 63

原创 live555 RTSPServer源码分析

GenericMediaServer先分析下 RTSPServer 的父类 GenericMediaServer,GenericMediaServer的功能主要分为三部分。监听服务端端口,收到客户端连接请求时,创建ClientConnection实例和客户端交互。 static int setUpOurSocket(UsageEnvironment& env, Port& ourPort); void incomingConnectionHandlerOnSocket(in

2020-12-14 16:11:29 65

原创 SIGPIPE信号

产生 SIGPIPE 的条件对一个已经收到 FIN 包的 socket 调用 read 方法,如果接收缓冲已空,则返回 0,这就是常说的“连接关闭”表示。对一个已经收到 FIN 包的 socket 第一次调用 write 方法时,如果发送缓冲没问题,则 write 调用会返回写入的数据量,同时进行数据发送。但是发送出去的报文会导致对端发回 RST 报文。因为对端的 socket 已经调用了 close 进行了完全关闭,已经处于既不发送,也不接收数据的状态。所以第二次调用 write 方法时(假设在收到

2020-12-14 10:30:53 42

原创 c++ vector容器emplace_back() 和 push_back 的区别

push_back 加入元素需要先构造然后拷贝或移动,而emplace_back可以原地构造对象,然后加入到容器中,可以减少一次拷贝或构造。测试代码如下:typedef struct testEmplace { testEmplace() { std::cout << "create testEmplace" << std::endl; } testEmplace(int a) { std::cout &

2020-11-20 14:48:59 997

原创 C++并发编程之condition_variable

<condition_variable > 头文件主要包含了与条件变量相关的类和函数。相关的类包括 std::condition_variable 和 std::condition_variable_any,还有枚举类型std::cv_status。另外还包括函数 std::notify_all_at_thread_exit()std::condition_variable::wait()std::condition_variable 提供了两种 wait() 函数。当前线程调用 wai

2020-11-04 11:15:33 59

原创 WebRTC 编译支持arm架构

WebRTC的工程通过交叉编译,可以在x86架构的linux系统上编译出支持arm架构的库。具体步骤如下:安装交叉编译工具apt-get install gcc-arm-linux-gnueabihf执行install-sysroot.py,需要翻墙#32位arm./build/linux/sysroot_scripts/install-sysroot.py --arch=arm#64位arm./build/linux/sysroot_scripts/install-sysroot

2020-10-15 10:49:53 263

原创 ubuntu磁盘满导致无法开机

问题现象系统开机时需要部分空余磁盘空间加载服务,ubuntu磁盘占用率100%,导致启动卡死。解决方案进入recovery模式,删除无用文件,释放磁盘空间即可。进入recovery模式方法:重启Ubuntu,随即长按shift进入grub菜单;在grub菜单中,选择recovery mode,回车确认;在Recovery Menu中,选择“Root Drop to root shell prompt”,回车确认;然后输入root密码,即可进入root shell界面.VMWare虚拟机

2020-10-15 10:03:52 1633

原创 NVDEC_VideoDecoder_API_ProgGuide

概述从 NVIDIA® Fermi™ 一代开始,英伟达GPU包含一个视频解码器引擎(这本文中简称NVDEC),它提供全硬件加速解码视频的能力。NVDEC能解码许多码流格式: H.264, HEVC (H.265), VP8, VP9, MPEG-1, MPEG-2, MPEG-4 and VC-1. NVDEC运行完全独立于计算/图像引擎。英伟达提供编程NVDEC的软件API和库。这套软件API,以下称为NVDECODE API,它使开发者能访问NVDEC的解码特性,并且能让NVDEC与GPU上的其它引

2020-09-16 17:43:58 651 2

原创 window编译ffmpeg支持NVIDIA GPU加速

官方指导文档根据官方文档一步一步操作,记录一下我遇到过的问题。Unknown option “–disable-shared”.LIEY@DESKTOP-85UH0NA MINGW64 /d/winshare/avproc/ffmpeg/ffmpeg-4.1.3$ ./configure --enable-nonfree -–disable-shared --enable-cuda-sdk --enable-libnpp –-toolchain=msvc --extra-cflags=-I../nv

2020-08-26 17:49:55 717

原创 cmake报错:Could not find compiler set in environment variable RC:

问题现象使用cmake-gui生成vs工程,进行configure时,报错信息如下:CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/CMakeDetermineRCCompiler.cmake:25 (message): Could not find compiler set in environment variable RC: C:\Program Files (x86)\Windows Kits\10\bin\

2020-08-20 17:56:07 1029

原创 C++并发编程之atomic

原子类型对象的主要特点就是从不同线程访问不会导致数据竞争(data race)。因此从不同线程访问某个原子对象是良性 (well-defined) 行为,而通常对于非原子类型而言,并发访问某个对象(如果不做任何同步操作)会导致未定义 (undifined) 行为发生。std::atomic_flagstd::atomic_flag是一个bool类型的原子变量,它有两个状态set和clear,对应着flag为true和false。std::atomic_flag使用前必须被ATOMIC_FLAG

2020-08-03 11:39:00 354

原创 C++抽象类和接口的区别

纯虚函数纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法(virtual ReturnType Function()= 0)。抽象类带有纯虚函数的类称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为保护的访问控制权限。接口如果一个类里面只有纯虚函数,没有其他成员函数和数据成员,就是接口类。既然有抽象类,

2020-07-17 13:49:08 800

原创 C++并发编程之future

不同于pthread_join可以获取线程函数的返回值,std::thread的join函数并不能获取线程函数的返回值。C++11给出的解决方案是使用std::promise和std::future.std::futurestd::future提供了一种访问异步操作结果的机制,但是我们也可以以同步等待的方式来获取结果,可以通过查询future的状态(future_status)来获取异步操作的结果。//查询future的状态std::future_status status; do {

2020-07-15 17:41:50 146

原创 QtCreator使用总结

新建一个QT项目后,默认会让用户选择编译链,用户可以在新建工程时,将编译链全部勾选,一劳永逸.如果在工程设置时没有选择正确的工具链,可以在工具栏的项目选项中修改在 build & run 中点击对应的工具链即可使能,禁用已使能的工具链需右键然后选择disable工具链...

2020-07-15 10:10:04 95

原创 socket编程总结

计算机硬件有两种储存数据的方式:大端模式(big endian)和小端模式(little endian)。大端模式:高位字节在前,低位字节在后。小端模式:低位字节在前,高位字节在后。例如:0x01234567的大端字节序和小端字节序的写法如下图计算机的存储模式,与CPU设计有关,数据的顺序是由cpu决定的,如Intelx86结构采用小端模式,IBM power PC结构采用大端模式。由于这个原因不同体系结构的机器之间进行通信时要转换成一种约定的数序,也就是网络字节顺序, 网络字节顺序采用大端

2020-07-13 15:18:18 73

原创 linux手动生成core dump

什么是core dump?Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个二进制文件里。设置core dump文件大小,默认0,即不会生成core文件 ulimit -c unlimited 设置core dump文件的位置文件名格式,%e和%p会被替换成程序文件名以及进程ID。缺省情况下,内核在coredump时所产生的core文件放在与该程序相

2020-07-07 17:42:21 752

原创 TCP流量控制,拥塞控制

TCP的流量控制RTT算法在TCP超时重传机制中,Timeout的设置对于重传非常重要:设长了,重发就慢,丢了老半天才重发,没有效率,性能差。设短了,会导致可能并没有丢就重发。于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。而且,这个超时时间在不同的网络环境下不同,必须动态设置。为此,TCP引入了RTT(Round Trip Time,环回时间):一个数据包从发出去到回来的时间。这样,发送端就大约知道正常传输需要多少时间,据此计算RTO(Retransmission

2020-06-18 16:12:06 308 1

原创 TCP重传机制

TCP协议通过重传机制保证所有的segment都可以到达对端,注意,此处重传机制特指数据传输阶段,握手、挥手阶段的传输机制与此不同。TCP是面向字节流的,Seq与Ack的增长均以字节为单位。为了减少网络传输,接收端只回复最后一个连续包的Ack,并相应移动窗口。比如,发送端发送1,2,3,4,5一共五份数据(假设一份数据一个字节),接收端快速收到了Seq 1, Seq 2,于是回Ack 3;然后收到了Seq 4,由于在此之前未收到过Seq 3(乱序),如果序号在窗口内,则只填充窗口,但不发送Ack 5,否则

2020-06-18 15:25:34 244

原创 TCP粘包现象

问题原因TCP是一种流式连接,这个流字到底怎么理解?它是指TCP的数据传输就像一种水流一样,并不区分不同数据包之间的界限。就像我们打开水龙头后,水流自然的流出,我们并不知道背后水泵是分了几次将水供上来的。发送端需要等缓冲区满才发送出去,造成一次发送多个包接收方不及时接收缓冲区的包,造成多个包接收解决方案短连接最简单的方法就是短连接,也就是需要发送数据的时候建立TCP连接,发送完一个数据包后就断开TCP连接,这样接收端自然就知道数据结束了。但是这样的方法因为会多次建立TCP连接,性能低

2020-06-18 10:48:50 94

原创 linux排查cpu占用高问题

gstack安装$ wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/13/x86_64/gdb-7.1-34.fc13.x86_64.rpm$ sudo apt-get install rpm2cpio$ sudo apt-get install gdb$ rpm2cpio gdb-7.1-34.fc13.x86_64.rpm | cpio -idmv$ sudo cp ./usr

2020-06-15 16:45:56 186

原创 Qt程序运行中设置QMainWindow透明,子控件不透明

设置QMainWindow透明,子控件不透明this->setWindowFlags(Qt::FramelessWindowHint);this->setAttribute(Qt::WA_TranslucentBackground);但上述代码只有在QMainWindow的构造函数中调用才可行,如果是在程序运行中,比如点击了某个按钮,在信号处理函数中调用这两句代码,则达不到效果。具体原因网上找不到解决方法,需要分析QT源码,有兴趣的读者可以自行分析下。有个取巧的方法可以实现在程序运行中

2020-06-11 15:52:45 585 1

原创 直播常见问题

从代码层面来看,什么是卡顿?其实是指播放器渲染的帧率太低,比如:1s 显示 3~5 帧,或者渲染完一帧后,过很久才渲染下一帧。因此,我们需要排查,是什么原因导致了播放器无法流畅地渲染数据,通常可能有如下几大类:网络带宽不足一个完整的直播应用,简单来说数据流是这样的:主播 -> CDN -> 观众因此,直播出现卡顿,三个端都可能是问题的源头:1. 主播端的网络不好,导致推流上行不稳定2. 服务端的线路质量不好,导致分发不稳定3. 观众端的网络不好,导致拉流下行不稳定网络性能测

2020-06-05 15:04:23 2217

原创 SDP协议

由于Web端、IOS、Android、PC、MAC端的差异性导致它们对音视频的支持能力不同,所以我们进行一些音视频会话之前,需要交互下彼此的音视频编解码能力、网络带宽和传输协议等信息,这些需要协商的信息需要用SDP来描述。SDP虽然具备这些能力参数信息的描述功能,但是SDP并不是传输协议,需要用RTSP、SIP、HTTP等协议进行承载传输、交换,如果大家协调好了之后,就可以建立会话,完成真实的音视频码流传输,再完成解码和播放。SDP格式SDP是由多个=这样的表达式组成,同时type是一个字符,val

2020-06-04 17:50:37 132

原创 音视频封装格式:MP4

MP4起源于QuickTime,全名是MPEG-4 Part 14,属于MPEG-4的一部分。这部分内容主要规定了多媒体容器的格式。后来成为”ISO/IEC 14996-14”国际标准, 其中MP4就是对这种标准的一种具体实现,基于这个标准进行扩展或者裁剪还产生了像M4V、F4V等封装格式。同时MP4目前在移动端的Androids和IOS可以播放,也可以在FlashPlayer播放,跨平台和兼容性最好,MP4 还可以实现快进快放,边下载边播放的效果。术语:Box:这个概念起源于QuickTime中

2020-06-02 15:40:20 244

原创 音视频封装格式:FLV

FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用FLV格式封装的文件后缀为.flv。FLV文件的详细内容结构如下图:FLV headerFLV头占9个字节,用来标识文件为FLV类型,以及后续存储的音视频流。一个FLV文件,每种类型的tag都属于一个流,也就是一个flv文件最多只有一个音频流,一个视频流,不存在多个独立的音视频流在一个文件的情况。FLV BodyF

2020-06-01 15:39:54 238

Jetson TX2用户指南最新版

本文档是基于Gstreamer 1.0版本的加速解决方案的用户指南 包括在NVIDIA®Tegra®Linux驱动程序包为NVIDIA®Jetson™TX1和 NVIDIA®Jetson™TX2设备。

2019-03-28

全套android学习资料

全套android学习资料,包含视频,代码,PPT课件;

2020-04-20

H.265视频编码标准简介.doc

H.265视频编码标准简介.doc

2020-07-06

全套C++学习视频,包含C/C++,linux , 网络编程 , 系统编程 , 数据库 , QT等

包含C/C++,linux , 网络编程 , 系统编程 , 数据库 , QT等;包含C/C++,linux , 网络编程 , 系统编程 , 数据库 , QT等;包含C/C++,linux , 网络编程 , 系统编程 , 数据库 , QT等;包含C/C++,linux , 网络编程 , 系统编程 , 数据库 , QT等

2019-04-20

FFMPEG FFPLAY 源码剖析_杨书良著_带目录高清.pdf

FFMPEG FFPLAY 源码剖析_杨书良著_带目录高清.pdf ,ffmpeg

2019-05-08

MobaXterm.zip

MobaXterm绿色版,解压即可用,功能十分强大,支持SSH,FTP,串口,VNC,X server等功能

2019-07-19

AC3AudioESViewer_Trial.msi

AAC分析工具,

2020-09-14

H264Visa.rar

H264码流分析工具

2020-07-06

STUN协议RFC5389.pdf

STUN协议RFC5389

2020-07-06

反汇编工具集.zip

反汇编工具,修改动态库汇编指令

2020-08-12

ODbyDYK.zip

反汇编神器,修改可执行文件或动态库汇编指令

2020-08-12

NetDrive2 , 包含破解补丁

NetDrive2 , 包含破解补丁文件 , 亲测可用 ,可挂载linux目录

2019-04-20

VA_X_Assistant及破解补丁.7z

Visual Assist,带破解补丁,VS2013亲测可用,其它版本应该都可用

2019-07-19

MobaXterm_17527.zip

MobaXterm 专业版,nfs , FTP等功能没有时间限制,亲测可用

2019-07-19

opencv-dll.zip

运行opencv程序时提示缺少的4个库文件msvcp140d.dll、concrt140d.dll、ucrtbased.dll,亲测可用

2019-09-20

x265码控使用说明.pdf

x265码控使用说明.pdf

2020-07-06

EasyICE2702.zip

HLS,TS文件格式分析工具

2020-07-06

SpecialFFLV.exe

FLV文件格式分析工具

2020-07-06

RFC 3550中文文档.pdf

RFC 3550中文文档

2020-07-06

FFmpeg命令大全文档.pdf

FFmpeg命令大全文档

2020-07-06

ElecardStreamEyeTools(jb51.net).rar

ElecardStreamEyeTools(jb51.net).rar

2020-06-05

FFmpeg从入门到精通_刘歧;赵文杰(著)_pdf高清带目录

ffmpeg中文版,FFmpeg从入门到精通_刘歧;赵文杰(著)_pdf高清带目录

2019-05-08

OpenCV入门教程.zip

opencv入门教程,包括opencv简介,图像基本操作,读写图片,视频等

2019-09-16

ffmpeg从入门到精通.pdf

ffmpeg从入门到精通电子版pdf高清带目录,刘歧、赵文杰著,链接永久有效

2019-05-08

yuvplayer.zip

查看yuv图片的小工具,可以分别查看y , u,v分量;

2019-07-08

ffmpeg基础.pdf

ffmpeg入门资料,通俗易懂,面向没有任何ffmpeg基础的读者,一共36页,带目录

2019-05-08

磁盘清理.zip

清理系统盘垃圾,亲测可用;清理系统盘垃圾,亲测可用;

2019-11-06

空空如也

空空如也

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

TA关注的人 TA的粉丝

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