自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TyearLin的专栏

封住肆意的时光

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

转载 Android Studio中使用LLDB更方便地进行内存探查

​关注他5 人赞同了该文章C++程序开发过程中,内存往往是一个经常需要关心的话题,特别是在进行Debug时,能正确的找出内存中的异常数据更是非常有用。如对一个void*类型的数据,在很多IDE中都可以对其直接进行内存查的,如下图是在Xcode中查看的结果:从图中可以很清楚地看出data所指向内存的数据,具体方法就是xcode中,选中变量,直接右键选择查看内存即可。

2023-12-06 16:56:10 214

原创 -pthread和-lpthread

这两个选项的效果是类似的,都可以使程序正确地使用多线程功能。选项则直接指定了pthread库的链接路径。它告诉编译器在链接阶段使用指定的pthread库文件(通常是。因为它可以自动处理与多线程相关的链接信息。如果你确定要指定pthread库的链接路径,可以使用。选项告诉编译器生成适用于多线程程序的可执行文件。它包含了多线程库的链接信息,以。但是,使用该选项时需要确保指定的库路径是正确的,否则可能会导致链接错误。.(我放弃了小'L'.)之后编译'make'没有错误。

2023-11-16 14:36:44 326

原创 mediapipe流水线分析 二

张量的形状可以是任意维度的,例如一维、二维、三维等等。与 TensorFlow 的协议缓冲区模型格式相比,这种格式具有多种优势,例如可缩减大小(代码占用的空间较小)以及提高推断速度(可直接访问数据,无需执行额外的解析/解压缩步骤),这样一来,TensorFlow Lite 即可在计算和内存资源有限的设备上高效地运行。TfLiteTensor是TensorFlow Lite中特有的数据结构,它是对Tensor的封装,具有一些额外的属性和方法,用于支持TensorFlow Lite特定的功能和操作。

2023-11-06 18:04:36 777

原创 mediapipe流水线分析 一

它 计算图里的每个node都是calculator,是计算图的逻辑计算的载体,一个calculator可以接受0或多个stream或side packet, 输出0或多个stream或side packet. Calculator需要继承相同的基类并实现所需要的接口,并且要在framework中进行注册,以便可以通过配置文件进行构建。这个基类为插件的实现提供了一个统一的框架和规范,使得开发者可以根据自己的需求和创意来创建自定义的插件,并将其集成到MediaPipe的多媒体处理程序中。

2023-11-02 16:05:07 276

转载 markdown 常用语法

作者:Char0n链接:https://www.zhihu.com/question/486201255/answer/2784074544来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2023-11-02 10:55:13 50

转载 速率控制模式 CBR、VBR...

最大的不同在低帧分值(审校者注:指以帧的粒度看 VMAF 分数,其最低单帧 VMAF 分),即瞬态质量问题的指标,其中 CBR 比 200% 受限 VBR 低了约 5.5 分。有趣的是,在 200% 受限 VBR 和 150% 受限 VBR 的低帧 VMAF 之间只有 1 分之差,150% 受限 VBR 和 110% 受限 VBR 之间有两分之差。顾名思义,当你使用 CBR(Constant Bitrate Encoding)编码时,意味着你对全部文件都使用了恒定的码率(无论视频文件中场景的复杂度如何)。

2023-11-01 15:12:22 111

原创 pip3源更换

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/清华 https://pypi.tuna.tsinghua.edu.cn/simple。华中理工大学 http://pypi.hustunique.com/豆瓣 http://pypi.douban.com/simple/山东理工大学 http://pypi.sdutlinux.org/ubuntu更换pip3源提高下载速度。然后将下面这两行复制进去就好了。

2023-10-31 14:56:47 145

转载 【C++ 修饰符关键字 explicit 】掌握C++中的explicit :构造函数行为和初始化综合指南

目录标题1. 引言1.1 为什么需要了解 `explicit`1.2 文章目标和主要内容概览2. C++ 构造函数简介2.1 什么是构造函数2.1.1 构造函数的基本语法2.1.2 重载构造函数2.2 构造函数的类型2.2.1 默认构造函数(Default Constructor)2.2.2 参数化构造函数(Parameterized Constructor)2.2.3 复制构造函数(Copy Constructor)2.2.4 移动构造函数(Move Constructor)

2023-10-31 11:59:28 247

转载 ubuntu 18.04 install Boost 1.75

首先上下载Boost 1.75的源代码,如下图所示:Boost 1.75源代码下载。

2023-10-31 10:34:19 358

原创 ffmpeg x264 x265 fdk-aac 编译记录

ffmpeg 裁剪定制编译过多次了 这里记录下。

2023-10-27 16:24:10 469

转载 ffmpeg configure 参数

源码的路径[默认:/home/nsc/workspace/android_code/ffmpeg]启用 AMR-NB 编解码通过 libopencore-amrnb[默认:关闭]启用 AMR-WB 编解码通过 libopencore-amrwb[默认:关闭]原文链接:https://blog.csdn.net/wangbuji/article/details/121818750。通过 librtmp 启用 RTMP[E]支持 [默认:关闭]通过 libtheora启用 Theora 编码[默认:关闭]

2023-10-27 15:19:54 50

原创 SRS srs-bench

srs服务没有开多进程或者多线程来处理高并发 内部通过协程来实现高并发 ,100多播放一路 1280*720 i5cpu 16G内存 cpu已占用 50% 内存剩余2G。设置完之后,我以为直接生效了,又去go get了一下,发现还是报一样的错,有点失望,原来需要依赖于 go module 功能,即go的环境变量。音视频压测工具,包括RTMP/FLV/WebRTC/GB28181等,未来还会完善。编译依赖golang环境 ubuntu16.04安装高版本 golang。直播播放压测,一个流,很多个播放。

2023-10-26 17:44:56 519 1

原创 SRS Config 二 Stream Caster

Stream Converter侦听特殊的TCP/UDP端口,接受客户端连接和媒体流,并转成RTMP流,推送给SRS。复制Note: 有些流可能不止一个流,甚至有不同的传输通道。1.1 Build​SRS默认开启Stream Converter的支持,不需要特别的编译参数。但某些协议可能需要特别的编译参数,请参考下面具体协议的使用介绍。​MPEG-TS over UDP: MPEG-TS裸流,基于UDP协议。FLV by HTTP POST: FLV流,基于HTTP协议。

2023-10-24 19:00:00 223

转载 使用Linux的dstat命令监控系统性能和资源

在Linux系统中,了解系统的性能和资源使用情况对于有效管理和故障排除至关重要。dstat是一个功能丰富的命令行工具,它提供了实时监控和统计系统性能和资源的能力。本文将介绍如何使用dstat命令来监控关键指标并显示实时统计信息和图表。

2023-10-24 17:37:52 538

转载 傅里叶变换的意义和理解(通俗易懂)

从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了?我没有疯,这个静止的世界就叫做频域。先举一个公式上并非很恰当,但意义上再贴切不过的例子:在你的理解中,一段音乐是什么呢?这是我们对音乐最普遍的理解,一个随着时间变化的震动。

2023-10-23 17:54:42 63

转载 readelf

系统里的目标文件是按照特定的目标文件格式来组织的,各个系统的目标文件格式都不相同。从贝尔实验室诞生的第一个Unix系统使用的是a.out格式(直到今天,可执行文件仍然称为a.out文件)。Windows使用可移植可执行(PortableExecutable,PE)格式。Mac OS-X使用Mach-O格式。现代x86-64Linux和Unix系统使用可执行可链接格式(Executable and Linkable Format,ELF)。

2023-10-19 19:45:00 107

原创 SRS Config 一 基础配置

按流和年月日分目录,时间作为文件名: dvr_path /data/[vhost]/[app]/[stream]/[2006]/[01]/[02]/[15].[04].[05].[999].flv;在流的分发上,HLS是使用最广泛的协议,所有CDN和设备都支持,比如PC,iOS,Android或平板电脑。如果要对接一个广播设备, 或者推流到某个平台,那么RTMP是最好的选择,几乎都会支持。srs会一如既往的保持最简单,http的代码不会有多少行,功能不会有几个,就支持简单的文件分发就足够了。

2023-10-17 17:30:11 800

转载 docker常用命令详解

Docker 是一个用于构建、发布和运行应用程序的开源平台,它通过容器化技术将应用程序及其依赖项打包成一个可移植、自包含的容器。docker unpause 取消暂停一个容器的所有进程。docker pause 暂停一个容器的所有进程。通过 Dockerfile 构建一个镜像。创建一个用户自定义的 Docker 网络。检查 Docker 数据卷的详细信息。删除一个或多个 Docker 数据卷。检查 Docker 网络的详细信息。创建一个 Docker 数据卷。列出所有 Docker 数据卷。

2023-10-17 13:19:24 51

转载 【c++11特性】——static_cast,dynamic_cast,const_cast,reinterpret_cast解析

我在日常的开发过程中,经常会用到一些类型转换的函数,主要是子类到父类的上行转换或者是父类到子类的下行转换等等,还有一些强制数据类型的转换,这些都是我们日常开发工作中经常遇到的一些常用的内容,那么今天就突发奇想,想要来总结一下关于C++的一些类型转换符的使用的技巧和一些案例,希望能够帮助到他人,也是对自己的知识点的一种记录和回顾。最初级的原始C样式的类型转换,是将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++为保持兼容而予以保留。C++const_cast和。

2023-10-16 15:47:09 86

转载 Camera ISP 转

写在前面,本文为笔者参考了很多篇博客,传感器手册,芯片手册,汇总了 ISP 可能涉及到的步骤流程,整理所得万字长文,并针对 ISP 芯片流程图总结画出了题图的 ISP流程图,如有错误轻喷。

2023-10-12 16:54:31 110

原创 ffmpeg错误码

#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /* Interrupted system call */#define EIO

2023-10-12 09:40:44 376

原创 Linux 守护进程

守护进程(Daemon)也称为精灵进程,是运行在后台的一种特殊进程,它独立于控制终端并且周期性地执行某种任务或等待处理某些事情的发生,主要表现为以下两个特点:守护进程是一种生存期很长的一种进程,它们一般在系统启动时开始运行,除非强行终止,否则直到系统关机都会保持运行。与守护进程相比,普通进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但守护进程不受用户登录注销的影响,它们将会一直运行着、直到系统关机。在Linux。

2023-10-08 18:04:02 217

原创 ffmpeg ts 关于av_seek_frame

define AVSEEK_FLAG_ANY         ///<<<seek to any frame, even non-keyframes // 移动到任意帧的位置,不去找前面的关键帧,从而进入 ff_seek_frame_binary 方法,由于是实时流没有index_entry 调用ff_gen_search 生成seek pos gen_seek。真正确定seek位置代码函数 ff_index_search_timestamp flags不同 查询规则有所不同。代码流程比较清晰 主要。

2023-10-08 17:05:56 473

转载 Linux内核malloc()背后的实现原理——内存池

内存池的原理。内存池是一种将对象预先分配到一块连续的内存中,用时直接从这块内存中获取对象的高效内存分配方式。相对于栈而言,堆这片内存面临着一个稍微复杂的行为模式:在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而且申请的大小从几个字节到几个GB都有可能,我们不能假设程序一次申请多少堆空间,因此,堆的管理显得较为复杂。

2023-09-21 10:13:13 220

转载 linux内存管理之malloc、kmalloc、kzalloc、vmalloc的区别

1)用于申请内核空间的内存;2)内存以字节为单位进行分配;3)所分配的内存虚拟地址上连续;4)都是基于slab机制。

2023-09-21 10:02:17 340

转载 FFmpeg的makefile逻辑分析

现在来找一下,把 .o 文件打包成 静态库的规则在哪里,猜测静态库跟动态库的规则是同一个文件的。3,生成 FFmpeg 8个 动态库的规则在哪里?现在我们已经找到了 在哪里生成动态库的了,就是 library.mak 文件 51 行的地方,我讲一下我怎么找到这个地方,我是直接搜 SHFLAGS 变量的,因为这是动态库的 flags。上面的 OBJ-YES 变量有 x264 的 .o 文件,x264 应该是以动态库或者静态库的方式引用的,这里为什么直接填 .o ,我也不太清楚,后面补充,暂时不管。

2023-09-07 14:17:25 57

转载 【视频直播技术干货】H.264编码下直播视频添加水印的优化

如下图所示,直播客户对于直播延迟和视频流质量要求不尽相同,各家采用的视频编码器不同或者编码器采用的参数不同,导致源流的gop结构不尽相同,从CDN厂商的角度,源流的gop结构是难以从程序的角度判断的,对各家客户做差异化处理也存在较大的困难,而统一用相同的编码参数做转码则破坏了源流的gop结构,使得转码之后的水印流在延时数据上发生改变,有可能达不到客户的要求。而经过转码后输入输出视频的同一帧可能使用不同的帧类型,源流的I帧可能变为P帧甚至B帧,原来的P/B帧可能被转码流用作I帧,从而损害视频流的整体质量。

2023-08-14 15:19:52 320

转载 系统开发 (六) AndroidStudio导入源码和调试

参考前文。

2023-08-06 23:23:01 542

原创 FFmpeg 打包mediacodec 编码帧 MPEGTS

在Android平台上合成视频一般使用MediaCodec进行硬编码,使用MediaMuxer进行封装,但是因为MediaMuxer支持格式有限,一般会采用ffmpeg封装,比如监控一般使用mpeg2ts格式而非MP4,这是因为两者对帧时pts等信息封装差异导致应用场景不同。

2023-07-31 18:21:06 1009

原创 i.MX6ULL(二十) linux platform 设备驱动

子系统负责管理所有 跟输入有关的驱动,包括键盘、鼠标、触摸等,最底层的就是设备原始驱动,负责获取输入设 备的原始值,获取到的输入事件上报给 input。我们在编写输入设备驱动的时候只需要处理好输入事件的上报即 可,至于如何处理这些上报的输入事件那是上层去考虑的,我们不用管。下的驱动往往也是分层的,分层的目 的也是为了在不同的层处理不同的内容。半导体厂家编写好了,而设备驱动一般也由设备器件的厂家编写好了,我们只需要提供设备信 息即可,内核提供的,我们在编写驱动的时候只要关注于设备和驱动的具体实现即可。

2023-07-27 18:34:08 343

原创 i.MX6ULL(十九) linux gpio子系统

pinctrl子系统重点是设置PIN(有的SOC叫做PAD)的复用 和电气属性,如果 pinctrl子系统将一个PIN复用为GPIO的话,那么接下来就要用到gpio子系 统了。gpio子系统顾名思义,就是用于初始化GPIO并且提供相应的API函数,比如设置GPIO为输入输出,读取GPIO的值等。gpio子系统的主要目的就是方便驱动开发者使用gpio,驱动开发者在设备树中添加gpio相关信息,然后就可以在驱动程序中使用gpio子系统提供的。

2023-07-26 23:31:27 356

原创 i.MX6ULL(十八) linux pinctrl 子系统

Linux驱动讲究驱动分离与分层,pinctrl和gpio子系统就是驱动分离与分层思想下的产物,驱动分离与分层其实就是按照面向对象编程的设计思想而设计的设备驱动框架,关于驱动的分离与分层我们后面会讲。本来pinctrl和gpio子系统应该放到驱动分离与分层章节后面讲解,但是不管什么外设驱动,GPIO驱动基本都是必须的,而pinctrl和gpio子系统又是GPIO驱动必须使用的,所以就将pintrcl和gpio子系统这一章节提前了。

2023-07-21 07:45:00 140

原创 i.MX6ULL(十七) linux LED驱动

对于MX6ULL 点灯方式较多,直接通过寄存器操作更适合低成本设备,与裸机实验不同的是,在 Linux 下编写驱动要符合 Linux 的驱动框架。但Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器,这是本质。实际开发中即使驱动层我们也不需要自定义设备树 led节点 ,芯片厂商BSP 内核设备树会按照pinctrl 及gpio系统框架规则实现所有gpio节点,对gpio操作也将遵循linux下访问gpio通用方式操作而得以简化。本章实验在四十二章实验的基础上完成,重点是将驱动改为基于设备树的。

2023-07-20 23:16:15 196

原创 FFmpeg时间戳

例如,如果一个视频帧的dts是40,pts是160,其time_base是1/1000秒,那么可以计算出此视频帧的解码时刻是40毫秒(40/1000),显示时刻是160毫秒(160/1000)。在闭合式GOP中,每个GOP的第一个帧一定是I帧,且当前GOP的数据不会参考前后GOP的数据。根据注释中的建议,实际使用时,在视频解码过程中,我们不使用AVCodecContext.time_base,而用帧率倒数作时间基,在视频编码过程中,我们将AVCodecContext.time_base设置为帧率的倒数。

2023-07-20 14:49:08 704

原创 i.MX6ULL(十六) linux 设备驱动

Linux设备驱动是指驱动Linux内核与硬件设备进行通信的软件模块。设备驱动通常分为两类:字符设备驱动和块设备驱动。设备初始化:在系统启动时,设备驱动需要初始化相应的硬件设备,设置设备的寄存器和接口等参数,以确保设备能够正常工作。设备控制:设备驱动需要提供一些接口,用于控制设备的各种操作,如打开设备、读取数据、写入数据、关闭设备等。中断处理:设备驱动需要处理硬件设备的中断请求,在中断发生时执行相应的中断处理程序,以便及时响应设备的各种事件和请求。

2023-07-16 13:29:22 352

原创 i.MX6ULL(十五) 根文件系统

Linux“三巨头”已经完成了2个了,就剩最后一个rootfs(根文件系统了,本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是Linux移植的最后一步,根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系统。以后我们就在这个最小系统上编写、测试Linux驱动,移植一些第三方组件,逐步的完善这个最小系统。最终得到一个功能完善、驱动齐全、相对完善的操作系统uboot kernel 部分特别是内核启动流程比较复杂,设计模块较多 待后续进一步了解。

2023-07-15 01:22:17 419

原创 V4l2-ctl

它托管在[ v4l-utils.git ]中,并打包在大多数发行版中。l-utils还包含其他一些实用程序和库,用于处理视频4 Linux(V4L)设备驱动程序和相关功能。这些工具可以单独使用,也可以与其他V4L2相关的库和应用程序一起使用,以实现更复杂的功能和操作。exposure_auto是v4l2-ctl命令中的一个参数,用于设置相机的曝光模式。查询相机的详细信息 v4l2-ctl -d /dev/video11。不是所有相机以下参数设置都支持,修改前先查询,在已知参数属性的基础上修改.

2023-07-14 18:23:18 3021 2

转载 GB28181

前言GB28181协议是视频监控领域的国家标准,本文将解析如何在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。1.背景介绍GB28181协议指的是国家标准GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》。该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。GB

2023-07-13 11:02:35 2017

原创 i.MX6ULL(十四) 系统移植之 命令行

这是很多文档没有说明清楚的地方 uboot编译后 加载设备树的路径已经指明 规则因厂商版本可能不同, 在使用 MfgTool烧写自定义zIMage 时 需要匹配好dtb文件名。mx6ull-14x14-emmc-4.3-800x480-c.dtb 到tftp目录。编译好以后就可以烧写到板子上使用了,这里我们跟前面裸机例程一样,将。命令将其拷贝到这个指定的文件夹中即可,这样就不用需要频繁的烧写。内核启动以后是需要根文件系统的,根文件系统存在哪里是由。,设置好串口参数并打开,最后复位开发板。

2023-07-12 07:45:00 357

转载 VMware15 虚拟机分别设置连接笔记本的WLAN和以太网双网络

在虚拟网络编辑器中设置虚拟机的网路VMnet0和VMnet2分别桥接笔记本电脑的以太网口和wifi网口。设置虚拟机的网络适配器1和2绑定虚拟机的VMnet0和VMnet2。利用桥接模式分别设置笔记本电脑的以太网和WiFi网络,可以在虚拟机中跟电脑主机一样管理虚拟机的网络连接。

2023-07-11 22:18:42 1763

orgDemo.rar

利用frameng回退栈简单实现 组织架构功能 可在此基础上时间 部门选择 人员选择 业务 仅供参考

2020-02-03

webrtc相关资料.rar

WebRTC零基础开发者教程 Real-Time Communication with WebRTC Getting.Started.With.WebRTC

2019-12-20

actionbar 学习demo

androd ActionBar 学习demo 包含部分自定义actionbar 样式 。希望能帮到一些人

2015-04-07

android 4.1 api 新功能详解

eoe 原件 很详细 很实用 高清版

2012-10-10

空空如也

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

TA关注的人

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