C/C++
文章平均质量分 62
一只想颠覆世界的蚂蚁
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android 平台 metaRTC使用源码调试
Android 平台 metaRTC使用源码调试原创 2022-09-29 09:53:22 · 2771 阅读 · 1 评论 -
Liunx 操作命令按时间批量删除和查找大文件
需要根据时间删除这个目录下的文件,/home/data,清理掉20天之前的无效数据。可以使用下面一条命令去完成:find /home/data -mtime +21 -name "*.*" -exec rm -Rf {} \;这个是根据时间删除。下面简要解释一下,这句shell命令:find /home/data -mtime +21 -name "*.*" -exec rm -Rf {} \;/home/data:准备要进行清理的任意目录 -mtime:标准语句写法 +10.原创 2021-07-08 13:49:59 · 248 阅读 · 0 评论 -
Android 直播 播放器 IJK播放器低延时120ms
基于上一篇文件rtmp推流,需要解码播放器 ,由于是直播 所以需要延时优化到极致,采用播放器也是ijk开源播放器直接修改,目前测试1080p+音频延时效果如下图:在局域网内延时在100ms -120ms 内基于ijk 播放器优化思路。ijk的一系列参数设置后还是会有500ms 左右的延时。我们直接看代码这个耗时是按照一定算法来的 我们可以根据自己的实际情况强制写死,形成追帧的效果,这样就永远都不会有缓存了。这里也是不用算法返回的值,直接根据自己需求来。因为我的so 是..原创 2021-06-28 17:54:54 · 2804 阅读 · 3 评论 -
Android中init与受精卵Zygote分析,以及添加自己开机启动的系统服务
最近在做云游戏的项目,由于需要购买硬件,系统提供Android源码需要自己编译。所以特地学习一下记录一下Android的启动(我的是AOSP7.1然后+厂商系统补丁)先上图:目录一. 启动流程硬件开机上电后,系统硬件内会有一个小程序就是bootloader二.bootloader会引导内核启动加载三.内核就会去挂载 文件以及初始化设备。最重要的是启动Init进程(这个就是重点相关的)1.init.rc 脚本是在 init.cpp 入口方法 main 中开始解析的2 紧接...原创 2021-01-21 11:50:56 · 721 阅读 · 3 评论 -
Android 通过NDK 使用 OpenSLES录音播放 (AudioTrack播放)
在Android中,有时候需要用到录音,我们大多录音是通过AudioRecoder获取,由于我之前云游戏项目中使用的NDK开发的,现在也把录音部分移到ndk去,感觉自己不喜欢去讲太多的道理,就喜欢上代码。。。1.初始化引擎,以及设置回调//1. 调用全局方法创建一个引擎对象(OpenSL ES唯一入口) SLresult result = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL); if (SL_RESULT原创 2020-12-23 13:45:30 · 1533 阅读 · 0 评论 -
H264 数据提取sps 和 pps 信息
PS:在项目中运用到了硬件编码卡编H264 数据,由于解码需要sps和pps才能解除帧,那么就需要提取sps 和pps。在使用x264 编码中 可以直接通过帧类型获取到。但是使用硬件编码则需要自己运算,下直接上代码。软件编码x264 为例:void encodeData(int8_t *data) {// long long int start =printtime(); //编码 pthread_mutex_lock(&mutex); me...原创 2020-12-17 17:53:47 · 1558 阅读 · 0 评论 -
最全WebRtc转发服务器搭建(Android pc ios等)
由于自身需求开发,需要用到webrtc做视频会议,这里记录下转发服务器从0搭建过程PS:本文搭建只是测试Android在公网上视频通讯,也参考了很多博客,但是大家有的写的太复杂有的完全不行。一 :需要工具 centos 7.5 公网服务器 ,具有公网IP(本文以空白的服务器为例) 开启 转发端口5349,3478,19302,34073 tcp udp都需要开启二操作步骤1 .由于是空白服务器。所以要先安装 yun install git 等等一些常用工具(这个...原创 2020-12-02 11:10:35 · 2812 阅读 · 0 评论 -
Android 系统源码下编译可执行文件
我们在系统开发过程中有时候需要验证一下代码,我们这时候就需要在系统环境下编译测试。在Android 源码工程环境中,开发的c可执行文件源程序一般是放在external目录中,因此我们进入该目录下,创建一个chenzhutest文件夹,下面放我们需要测试的源码件和编译mk目录结构如下:----external -------chenzhutest -----chenzhutest.c -----Android.mkAnd...原创 2020-10-26 14:05:47 · 1857 阅读 · 0 评论 -
Android 基于系统音频内录(不采用AudioRecoder,基于AOSP 7.1系统)
PS :在网上找了很多系统内录的功能帖子,都是基于AudioRecoder 然后加系统签名。。。这种方法在真机上没有测试过,不知道可不可行。但是这种方案对于虚拟设备,是肯定不行的,因为虚拟设备没有对应的硬件驱动,所以是肯定取不到的。那么就的从系统里面去截取。直接上代码:在framework的audiofliger中去截取:在 aosp/frameworks/av/services/audioflinger/Thread.cpp中:ssize_t framesWritten ...原创 2020-10-13 14:44:26 · 1051 阅读 · 2 评论 -
Android 云游戏实现
公司最近有和云游戏相关的业务,最开始采用的是virtualdisplay +mediacodec实现,屏幕视频录制编码推流。但是mediacodec编码有很多参数设置不了,而且云主机的cpu性能完完全全高于GPU 所以,就准备采用软件编码实现。基于X264+minicap实现也可以理解为把bitmap转为H264视频通过RTMP传输。先上流程图:1 minicap :是一个高速的截图工具,具体如何安装使用可以查看github上的流程2 数据解析:minicap提供了一个l...原创 2020-08-07 17:14:20 · 2765 阅读 · 0 评论 -
极速简单实现Android 屏幕录制编码为H264并且使用RTMP推流
最近有使用到屏幕录制功能并需要将屏幕数据推送到服务器端。在读这篇文章前您先要对编码 推流 有一定的基础。1.录制屏幕 在Android5.0 后可以采用原生的APIMediaProjection 来获取一个virtual的display 从而实现屏幕录制。我们第一步就是要先把屏幕数据拿出来@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void creatVirtualDisPlay(){ ...原创 2020-07-11 13:44:53 · 11705 阅读 · 28 评论 -
Android 通过NDK使用c++的CURL框架在子线程中发送GET POST请求并且下载文件
通过NDK使用c++库文件在子线程中网络请求以及文件下载1.有时候需要对自己的网络请求数据逻辑进行加密2.在cpp文件中创建子线程3.子线程中回调原生方法准备工作:需要能支持cmake的Androidstudio版本编译下载curl,如果没有可以直接使用我的文件,这里编译下载就不多说了。代码:首先说的是定义...原创 2020-04-08 09:49:10 · 2181 阅读 · 21 评论 -
C++指针函数的使用以及回调
在前面我们说到了C++指针,指针的理解,这里我们来详细说下函数指针的使用。1 .函数指针的定义函数指针定义比较简单:例如// 所对应的解释 // 函数返回类型 (指针函数名称) (函数的参数); int(*fun_p)(char* title, char* content);这样我们就定义了一个 fun_p 的类型的函数指针。2 函数指针的使用...原创 2020-03-27 17:00:40 · 503 阅读 · 0 评论 -
C++指针 多级指针的补充理解和简单使用
很早以前写了一篇关于c++多级理解。当时写的不是很清楚,今天补充说明下。1 首先我们的内存都是一块一块的内存组成的,并且每个内存都有相应的一个地址和存贮的数据。 那么指针就是用来描述这个地址的。如下图:上图中 我们声明了一个变量i 那么系统在内存中给我们 开辟了一块 内存地址为0026f9d0的内存地址,并且把30存贮在内存中。紧接着我们又声明了一个指针变量 ...原创 2020-03-25 14:57:00 · 1163 阅读 · 0 评论 -
Ubuntu 系统下搭建 SRS 流媒体服务器(以及报错处理)
然后安装 Git:执行 apt install git正式安装执行 git clone https://github.com/ossrs/srs [该过程很漫长] 《如果下载不下来可以换个地址https://gitee.com/chenzhu005774/srs下载后上传上去也行的》 执行 cd srs/trunk 执行 ./configure && make 启...转载 2020-03-10 11:46:40 · 1746 阅读 · 0 评论 -
Ubuntu各个版本下载
官网:https://www.ubuntu.com/download/desktop没找到历史版本,且下载速度很慢在网易镜像站下载ubuntu:网址:http://mirrors.163.com/ubuntu-releases/转载 2020-02-19 17:55:23 · 356 阅读 · 0 评论 -
liunx 或者Ubuntu下通过脚本下载Android源码
最近在弄Android 源码,通过清华镜像 下载,但是经常会断,在网上看了别人的脚本后自己 模仿写一个以作记录。1, vi down.sh #编辑down.sh文件2,chmod a+x down.sh #给down.sh可执行权限3,编写脚本文件#!/bin/bash echo ¨================start repo sync AOSP======...原创 2020-01-20 15:02:25 · 223 阅读 · 0 评论 -
C++中 new对象和直接声明对象区别
1. new创建类对象需要指针接收一处初始化,多处使用 A* a=new A() 在堆(heap)上分配空间,堆上空间需要手动回收 (delete),声明对象直接 声明即可A a在栈(stack)上分配空间,栈上空间自动回收2.new出来的对象类似于申请空间,因此需要delete销毁,并且要把指针置为NULL;而直接声明的对象则在使用完直接销毁,理论 上不会存在内存泄漏3....原创 2019-12-19 10:30:26 · 2472 阅读 · 0 评论 -
Android 使用NDK记录日志到本地(c++,NDK)包括jni函数的动态已经静态注册,native与Java相互调用
最近在计算一大批视频的播放时长,于是使用了Android的videoview库。然后Android studio 用的3.0,顺便就用了Android的ndk来操作了一下日志。虽然Java原生也能实现,这里我不知为啥就没用原生的。。。。。。=。=。。。功能点: 在Android Java文件中调用c++中的方法,达到文件的新建,日志的记录,日志的追加,日志文件的删除。知...原创 2019-12-02 16:35:32 · 518 阅读 · 0 评论 -
C/C++中指针,多级指针的理解和应用
理解指针,了解基础的内存原创 2017-03-10 09:40:23 · 3863 阅读 · 2 评论
分享