自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 FFmpeg解析之avformat_find_stream_info函数

avformat_find_stream_info 的主要作用就是:解析媒体文件并获取相关的流信息。

2024-02-21 19:18:45 593

转载 MVP模式解析

随着 MVP 概念的兴起和发展,MVP 使用越来越广泛,当然 MVP 的优势也越来越被认同,在合作开发功能模块细分中 MVP 有着得天独厚的优势。本篇文章就来简单的说说如何使用 MVP。MVP 是 MVC 的变种,其实是一种升级。要说 MVP 就要说说 MVC,在 MVC 中 Activity 其实是 View 层级,但是通常在使用中 Activity 即是 View 也是Controller,并没有将 View 层和 Controller 层 进行分离, 耦合度大大提高,非常不利于项目的管理。

2023-10-11 18:19:11 162

原创 柔性数组&长度为0的数组

可以看出它们空间分配的差别:使用字符串指针的方式,需先为 Node 结构体分配一块内存空间,再为 Node 的 arr 变量分配内存空间,这样两次分配的内存是不连续的;在释放时使用字符串指针的方式也需要多次释放,使用 0 数组一次释放就行了。柔性数组是引入的一个新特性,允许在定义结构体时,最后一个成员为一个空数组,并且这样的结构体至少包含一个其他类型的成员。我们可以在结构体的末尾放入一个长度为 0 的数组(注:如果不是末尾,编码器则会报错),从输出结果可以看到这个长度为 0 的数组没有占用空间。

2023-10-09 23:54:01 89

原创 ffplay/ijkplayer播放器的seek机制

得出索引后,在 mov_current_sample_set 中用 ff_index_search_timestamp 返回的索引去更新 MOVStreamContext* 中的 current_sample(当前索引),这样 seek后 继续读包时,调用到 mov_read_packet -> mov_find_next_sample,获取到的 sample 就是 AVIndexEntry[MOVStreamContext->current_sample] 对应的 sample。

2023-08-05 14:28:48 443

原创 ijkplayer的序列号(serial)分析

feed_input_buffer->SDL_AMediaCodec_flush->SDL_AMediaCodecJava_flush->SDL_AMediaCodec_create_object_serial,再一次调用 SDL_AMediaCodec_create_object_serial 此函数,使得 SDL_AMediaCodec.object_serial 加1。注意 ffp_is_flush_packet(&pkt) 和 opaque->acodec_flush_request 这两个条件。

2023-05-14 17:26:12 190

原创 ijk播放器缓冲机制

如果达到了限制,即缓冲区的音视频数据足够了,ffp_toggle_buffering(ffp, 0) 代表不需要缓冲,然后等待 10ms,不需继续往下调用 av_read_frame 读包了,重新进入 read_thread 的 for 循环中。在开启缓冲机制的情况下,当取不到包时,会暂停并触发缓冲,等待 ffp_check_buffering_l 修复到播放状态。目的:检查是否缓冲够了(是否满足一定的播放时长或者满足一定的播放数据量),够了就取消缓冲状态,取消暂停状态,恢复播放。实际到后面调用的就是。

2023-05-14 17:21:09 1034

原创 Applying ViewModel

Android ViewModel 的总结...

2023-05-14 16:54:41 49

转载 Android Native内存泄漏案例

Android Native内存泄漏检测

2023-02-28 23:23:33 754

转载 H.264媒体流AnnexB和AVCC格式分析 及 FFmpeg解析mp4的H.264码流方法

H264码流的组织方式

2022-09-12 00:17:31 5468

原创 ffplay整体框架

ffplay框架概要

2022-08-27 21:12:46 528

原创 ffmpeg新版本解码API overview

ffmpeg新版本编解码API中文翻译说明

2022-08-18 23:21:50 1041

转载 FFmpeg配置选项说明

FFmpeg配置选项详细说明

2022-07-30 12:18:46 786

原创 FFmpeg常用命令汇总

ffmpeg常用命令

2022-06-04 22:30:58 8925 1

原创 Qt中使用OpenGL渲染视频

Qt中OpenGL渲染YUV

2022-04-02 18:54:20 2431

原创 入门OpenGL渲染

先简单了解OpenGL渲染的基本原理,可以参考:LearnOpenGL CN以下先对其作主要的摘录。在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline)管理的。图形渲染管线可以被划分为两个主要部分:第一部分把3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。图形渲染管线可以被划分为几个阶段,每个阶段将

2022-04-02 18:16:41 2855

原创 iOS之VideoToolbox分析

iOS中VideoToolbox的使用,硬解码

2022-03-28 19:19:10 706

原创 Git常见用法总结

Git的各种用法太多了,针对各种场景下Git的使用作一个总结

2021-05-21 17:00:36 999 1

转载 用AVCodecParameters代替AVCodecContext

在高版本的ffmpeg库中使用AVStream::codec成员时,编译和运行时都出现一堆警告:main.cpp:151: warning: ‘AVStream::codec’ is deprecated (declared at ……\Other_libs\ffmpeg3.2\include/libavformat/avformat.h:893)和Using AVStream.codec … deprecated, use AVStream.codecpar instead从提示来看,需要

2020-10-25 17:12:09 434

原创 Ubuntu下Samba服务器搭建

看网上Samba的搭建教程比较乱,因此自己将Samba的搭建过程记录下来,方便需要用到时还可以查看。1、安装 Samba:apt-get install samba2、创建一个用于分享的 Samba 目录/root/xsh/share3、备份 smb.confcp /etc/samba/smb.conf /ect/samba/smb.conf.bak4、修改 smb.co...

2020-02-13 00:44:34 284

原创 Windows下FFmpeg一站式搭建

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。本文基于VS2017来讲解FFmpeg的快速搭建!网上的配置教程都是下载FFmpeg库源码,然后进行编译安装,免不了会出现一些繁琐的问题,为了先迅速上手FFmpeg库的开发,我们可以直接下载编译好的FFmpeg文件。下载与配置-FF...

2020-01-12 19:21:53 236

原创 vector的元素删除操作

在使用vector的删除元素操作时,不加注意可能会出现调试出错。比如以下的代码,欲删除向量中的元素2:#include<iostream>#include<vector> using namespace std;int main(){ vector<int> v; v.push_back(1); v.push_back(2);...

2019-10-03 17:28:07 1034

原创 几大排序算法-C++版

冒泡排序#include <iostream>using namespace std;//冒泡排序void bubble_sort(int array[],int size) { int i, j; for (i = size-1 ; i > 0; i--) { for (j = 0; j < i ; j++) { if (array[j] >...

2019-10-03 17:04:07 158

原创 C语言函数调用过程原理

一个栈帧大小不是无限的,其最靠近低地址的一端称为栈顶,最接近高地址的一端称为栈底,栈顶地址和栈底地址各自保存在专门的寄存器里边,这两个专门的寄存器存放的值都是地址,故亦可分别称之为栈顶指针、栈底指针......

2019-07-31 21:48:31 374

原创 C++拷贝构造函数与赋值函数

拷贝构造函数拷贝构造函数是一种特殊的构造函数,具有单个形参,其是本类型的一个引用变量,且必须是const引用。当创建一个类的对象时,拷贝构造函数被调用来对类的数据成员进行初始化和内存分配。在对象初始化的过程之中,拷贝构造函数提供了一个通过同类型的对象对它进行初始化的方式。当我们没有显式地去声明定义一个类的拷贝构造函数的时候,C++编译器会默认生成对应的拷贝构造函数,这种默认的工作方式是浅拷贝...

2019-07-24 22:45:29 385 1

原创 C++线程的封装

在C中创建线程一般是差不多以下这种形式:void* thread_proc(void* arg){ //线程执行过程}int main(void){ pthread_t tid; pthread_create(&tid,NULL,thread_proc,...); return 0;}当我们要用C++把其封装成类的时候,可能会写出这样的程序:class Thread{...

2019-07-19 23:24:56 1457

原创 双向线性链表

双向线性链表中每个节点有一个数据域和两个指针,一个指向前向节点,另一个指向后向节点,第一个节点的前指针为空指针,最后一个节点的后指针为空指针。双向链表的主要优点是对于任意给定的结点,可以很容易地获取其前结点和后结点,主要缺点是每个结点都需要保存prev和next两属性,因此需要更多的空间开销,同时结点的插入与删除操作也会变得更加耗时,需要更多指向操作。见如下程序,构建一个双向线性链表及其相关...

2019-07-13 14:44:08 205

原创 C++继承下的构造函数和析构函数执行顺序

对象在创建时构造函数的调用顺序调用父类的构造函数;调用成员变量的构造函数;调用类自身的构造函数如果通过“父类::函数名”来在子类中访问父类的函数,此时不论该函数是否为虚函数,都会直接调用父类对应的函数子类对象析构时的顺序析构函数的调用函数与构造函数相反1.执行自身的析构函数;2.执行成员变量的析构函数;3.执行父类的析构函数可看一下下面这个例子:#incl...

2019-07-12 14:31:28 981

原创 C与C++的区别

C++几乎是C的超集,只有少量功能C++不支持。C语言和C++语言在很多方面是兼容的。C和C++的关系,就像是win98和winXP的关系。C++是在C的基础上增加了新的理论,玩出了新花样,所以叫C++。C和C++的区别:1.C语言是面向过程的,C++是面向对象的。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。而C++首要考虑的...

2019-07-06 23:33:06 472

原创 基于UDP的socket网络编程

UDP的网络编程模型较TCP简单一些,因为UDP的特点与TCP的不一样,TCP是面向连接的,UDP是无连接的。服务端编程UDP的服务端编程可总结为以下几个步骤:1.使用socket创建通讯描述符;int socket(int domain,int type,int protocol);type参数应选择SOCK_DGRAM,也即UDP的格式。2.使用bind将通讯描述符和服务器的地址...

2019-07-03 22:55:38 267

原创 Makefile详解

什么是makefile?makefile是一个文本文件,是GNU make程序在执行的时候默认读取的配置文件。其关系到了整个工程的编译规则。一个工程中的源文件按类型、功能、模块分别放在若干个目录中,makefile定义了一系列规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。其好处在于:写好makefile之后,只需要一个“make”命令,整...

2019-06-17 23:21:53 657

原创 基于TCP的socket网络编程

socketsocket可以说是一种网络通信的函数接口,封装了传输层协议:TCP/UDP。使用socket创建成功后,会得到文件描述符fd,fd操作的是一块内核缓冲区。服务端编程TCP的服务端编程可以总结为以下几个步骤:1.创建通讯端socket,获取通讯描述符;int socket(int domain,int type,int protocol);2.将通讯描述符和服务器的...

2019-06-16 17:16:52 529

原创 Qt assistant在命令行中无法打开的解决方法

在ubuntu命令行中输入"assistant"时,提示如下:error while loading shared libraries:libgstreamer-0.10.so.0: cannot open shared object file: No such file or directory需要安装以下两个库1.libgstreamer0.10-dev2.libgstreamer-...

2019-06-06 18:06:00 1232

原创 “基于GSM通信与图像检测的消防车系统”项目小记录

大二下学期跟另外两位电类同学制作了这个项目,现在没事来小小地记录下~ 首先设计了消防车总体的框架并打板,总体简略的模型图如下: 模型设计是在soliderwork上设计的,当时抠了好多细节,分配好各个模块的位置,要很细心。 然后买材料,调试各种模块,主控芯片为stm32f103zet6上。硬件比较困难的是,喷头得寻找一种喷射效果比较...

2018-08-14 00:33:54 274

空空如也

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

TA关注的人

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