自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android 云游戏实现

公司最近有和云游戏相关的业务,最开始采用的是virtualdisplay +mediacodec实现,屏幕视频录制编码推流。但是mediacodec编码有很多参数设置不了,而且云主机的cpu性能完完全全高于GPU 所以,就准备采用软件编码实现。基于X264+minicap实现也可以理解为把bitmap转为H264视频通过RTMP传输。先上流程图:1 minicap :是一个高速的截图工具,具体如何安装使用可以查看github上的流程2 数据解析:minicap提供了一个l...

2020-08-07 17:14:20 2112

原创 极速简单实现Android 屏幕录制编码为H264并且使用RTMP推流

最近有使用到屏幕录制功能并需要将屏幕数据推送到服务器端。在读这篇文章前您先要对编码 推流 有一定的基础。1.录制屏幕 在Android5.0 后可以采用原生的APIMediaProjection 来获取一个virtual的display 从而实现屏幕录制。我们第一步就是要先把屏幕数据拿出来@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void creatVirtualDisPlay(){ ...

2020-07-11 13:44:53 8661 28

原创 入侵检测代码

入侵检测代码

2023-10-17 14:26:17 368

原创 Android 平台 metaRTC使用源码调试

Android 平台 metaRTC使用源码调试

2022-09-29 09:53:22 2316 1

原创 Webrtc 实现Android群控实时推流

Android webrtc 实现公网实时传输流

2022-09-21 11:04:48 3216 4

原创 FFmpeg 视频常用处理命令指定时间处理

FFmpeg 视频常用处理命令指定时间处理

2022-06-29 10:11:46 1744

原创 FFmpeg 与Unity 冲突

FFmpeg 与Unity 冲突

2022-06-09 14:11:24 816

原创 Android 监听查找内存泄漏 配合Mat工具

Android 监听查找内存泄漏 配合Mat工具

2022-05-11 10:15:52 287

原创 Android/IOS高仿微信IM源码

AndroidIOS IM源码

2021-11-22 11:51:53 2516

原创 Android 自定义截屏监听管理器

截屏判断依据: 监听媒体数据库的数据改变, 在有数据改变时获取最后 插入数据库的一条图片数据, 如果符合以下规则, 则认为截屏了: 1. 时间判断, 图片的生成时间在开始监听之后, 并与当前时间相隔10秒内; 2. 尺寸判断, 图片的尺寸没有超过屏幕的尺寸; 3. 路径判断, 图片路径符合包含特定的关键词。直接上代码:这个管理类就是截屏监听管理器的类 import android.content.Context;import android.database.Con..

2021-07-09 15:03:49 299

原创 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 117

原创 Android 直播 播放器 IJK播放器低延时120ms

基于上一篇文件rtmp推流,需要解码播放器 ,由于是直播 所以需要延时优化到极致,采用播放器也是ijk开源播放器直接修改,目前测试1080p+音频延时效果如下图:在局域网内延时在100ms -120ms 内基于ijk 播放器优化思路。ijk的一系列参数设置后还是会有500ms 左右的延时。我们直接看代码这个耗时是按照一定算法来的 我们可以根据自己的实际情况强制写死,形成追帧的效果,这样就永远都不会有缓存了。这里也是不用算法返回的值,直接根据自己需求来。因为我的so 是..

2021-06-28 17:54:54 2314 3

原创 Mac中xcode 配置cocoaPods 环境问题

IOS 开发有时候需要用到第三方的库,Android中我们使用gradle 等依赖 。iOS需要使用cocoapods。环境配置 网上有很多教程可以自行百度。需要注意以下几个问题1.pod install 不能以root 执行 切记2.当所有环境都配置好了后 pod install 失败(就是pod search 能够找到的时候,然后pod install 还在报错)。如图:这个时候 你把你的项目建在Desktop上,然后再pod install。你会感动哭的。。。。。。。。。...

2021-04-07 18:02:38 333

原创 Android中init与受精卵Zygote分析,以及添加自己开机启动的系统服务

最近在做云游戏的项目,由于需要购买硬件,系统提供Android源码需要自己编译。所以特地学习一下记录一下Android的启动(我的是AOSP7.1然后+厂商系统补丁)先上图:目录一. 启动流程硬件开机上电后,系统硬件内会有一个小程序就是bootloader二.bootloader会引导内核启动加载三.内核就会去挂载 文件以及初始化设备。最重要的是启动Init进程(这个就是重点相关的)1.init.rc 脚本是在 init.cpp 入口方法 main 中开始解析的2 紧接...

2021-01-21 11:50:56 511 3

转载 srs部署/webrtc拉流

转载来源:https://www.cnblogs.com/ziyue7575/p/13927894.htmlsrs部署/webrtc拉流参考:SRS官方App上线,全链路直播开发必备利器 https://github.com/ossrs/srs/wiki/v4_CN_Home https://blog.csdn.net/lixiang987654321/article/details/108714690 srs学习视频:# SRS如何支持WebRTC前言本来公司使用的是cotu

2020-12-29 19:25:11 3087 1

原创 Android Studio中app出现红叉的解决方案(依赖于kotlin项目)

Android Studio中app出现红叉的解决方案折腾了一下午最后还是发现Run按钮app的module依然显示红叉,但是直接build apk又可以,最终是因为集成了kotlin环境而导致app下的iml文件中jdkName和jdkType发生了改变找不到Android SDK引起的。kotlin版本对应问题:JDK 1.7 对应1.2.41,如果是jdk1.8 对应1.3.41最终修改后。。。。。。没有红叉了。。。。。。。。。。。。参考:https:.

2020-12-29 10:36:09 1174

原创 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 1181

原创 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 1288

原创 最全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 2367

原创 Android 系统源码下编译可执行文件

我们在系统开发过程中有时候需要验证一下代码,我们这时候就需要在系统环境下编译测试。在Android 源码工程环境中,开发的c可执行文件源程序一般是放在external目录中,因此我们进入该目录下,创建一个chenzhutest文件夹,下面放我们需要测试的源码件和编译mk目录结构如下:----external -------chenzhutest -----chenzhutest.c -----Android.mkAnd...

2020-10-26 14:05:47 1554

原创 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 849 2

原创 Android下载 文件(APP) 并且静默安装

1 . 基于Android7.0 有系统签名才能静默安装直接上代码下载文件 /** *下载文件 *这里我是用的子线程 **/ public void DownApkorSysrom( final String loadApkUrl ,final String savePath,final String saveFileName){ Thread thread=new Thread(new Runnable() {

2020-08-11 15:53:24 1067 6

原创 Android 通过NDK使用c++的CURL框架在子线程中发送GET POST请求并且下载文件

通过NDK使用c++库文件在子线程中网络请求以及文件下载1.有时候需要对自己的网络请求数据逻辑进行加密2.在cpp文件中创建子线程3.子线程中回调原生方法准备工作:需要能支持cmake的Androidstudio版本编译下载curl,如果没有可以直接使用我的文件,这里编译下载就不多说了。代码:首先说的是定义...

2020-04-08 09:49:10 1834 21

原创 C++指针函数的使用以及回调

在前面我们说到了C++指针,指针的理解,这里我们来详细说下函数指针的使用。1 .函数指针的定义函数指针定义比较简单:例如// 所对应的解释 // 函数返回类型 (指针函数名称) (函数的参数); int(*fun_p)(char* title, char* content);这样我们就定义了一个 fun_p 的类型的函数指针。2 函数指针的使用...

2020-03-27 17:00:40 417

原创 C++指针 多级指针的补充理解和简单使用

很早以前写了一篇关于c++多级理解。当时写的不是很清楚,今天补充说明下。1 首先我们的内存都是一块一块的内存组成的,并且每个内存都有相应的一个地址和存贮的数据。 那么指针就是用来描述这个地址的。如下图:上图中 我们声明了一个变量i 那么系统在内存中给我们 开辟了一块 内存地址为0026f9d0的内存地址,并且把30存贮在内存中。紧接着我们又声明了一个指针变量 ...

2020-03-25 14:57:00 999

原创 Android IPC机制(六)在Android Studio中使用AIDL实现跨进程方法调用(补充)

一般来说AIDL 比较多的是机顶盒里面各个厂家apk 的相互调用,那么我们就来实现一个apk之间跨进程通讯的在前面第三章 我们模拟了在同一个apk中不同进程中实现 。服务端:在清单文件中把services加上action: <intent-filter> <action android:name="com.example.MyService"/> </inte...

2020-03-24 11:42:37 197

转载 Android IPC机制(五)用Socket实现跨进程聊天程序

1.Socket简介Socket也称作“套接字“,是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。它分为流式套接字和数据包套接字,分别对应网络传输控制层的TCP和UDP协议。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。它使用三次握手协议建立连接,并且提供了超时重传机制,具有很高的稳定性。UDP协议则是是...

2020-03-13 15:29:21 234

转载 Android IPC机制(四)用ContentProvider进行进程间通信

ContentProvider为存储和获取数据提供统一的接口,它可以在不同的应用程序之间共享数据,本身就是适合进程间通信的。ContentProvider底层实现也是Binder,但是使用起来比AIDL要容易许多。系统也预制了很多的ContentProvider,例如通讯录,音视频等,这些操作本身就是跨进程进行通信。这篇文章主要是我们来自己实现用ContentProvider来进行进程间通信,而非...

2020-03-13 15:26:08 236

原创 Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用

1. 创建AIDL文件我们将项目的目录结构调为Android模式,在java同级目录创建aidl文件夹,在文件夹中创建一个包名和应用包名一致的包我们先创建一个IGameManager.aidl的文件,这里面有两个方法分别是addGame和getGameList。(IGameManager.aidl)// IGameManager.aidlpackage com.ywl5320....

2020-03-13 15:19:20 364

转载 Android IPC机制(二)用Messenger进行进程间通信

Messenger可以在不同进程中传递Message对象,我们在Message中加入我们想要传的数据就可以在进程间的进行数据传递了。Messenger是一种轻量级的IPC方案并对AIDL 进行了封装,它实现起来比较容易,下面我们来看看如何实现。首先我们先写服务端(MessengerService.java),在onBind方法中创建Messenger,关联接收消息的Handler调用getBi...

2020-03-13 14:25:25 160

原创 Android IPC机制(一)开启多进程

Virtualapp中看到说明有三个进程,但是在普通应用中一个app应该是只有一个进程的。那么是如何开启多个进程的呢1. 为何要开启多进程为何开启android应用要开启多进程,主要有以下几点:单进程所分配的内存不够,需要更多的内存。在早期android系统只为一个单进程的应用分配了16M的可用内存,随着手机的硬件的提升和android系统的改进,虽然可分配内存越来越多,但仍旧可以...

2020-03-13 10:18:17 241

转载 Android Bander设计与实现 - 设计篇

最近要开始看virtual 方面的东东了,所以需要恶补很多原理上的底层知识。这是在前辈的肩膀上学习。转载以作记录。关键词Binder Android IPC Linux 内核 驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无...

2020-03-13 10:10:33 235 1

转载 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 1471

原创 交换机路由器区别和局域网的搭建要求

两台电脑组成局域网只需要一根网线就可以了;多台电脑组成局域网只需要一个交换机就可以了;路由器的作用是把数据包发送给其他的路由器,是访问外网需要的;...

2020-03-04 08:21:16 929

转载 Ubuntu各个版本下载

官网:https://www.ubuntu.com/download/desktop没找到历史版本,且下载速度很慢在网易镜像站下载ubuntu:网址:http://mirrors.163.com/ubuntu-releases/

2020-02-19 17:55:23 289

原创 go语言学习(三)变量赋值

批量声明变量go 语言使用驼峰命名 小驼峰var studentNamevar{name string // ""age int // 0isok bool //false}声明后必须使用func main(){name ="kim"age =16isOk = truefmt.Print(isOk) //这个是在终端中打印fmt.p...

2020-01-25 20:33:33 163

转载 Go 语言学习记录二(变量)

Go 语言基本结构:package main// 导入语句import "fmt"//程序入口func main(){ fmt.println("hello world")}标识符在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, ...

2020-01-25 12:27:41 110

转载 Go 语言 学习记录 基本环境搭建(一)

前言本文章是博主学习go语言的学习记录,作为记录也供大家参考,本文的学习是来自于“哔哩哔哩的李文周的视频”如果大家的基础不是很好的话可以建议去B站观看视频。开发环境的搭建下载下载地址Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/版本的选择Windows平台...

2020-01-24 09:23:39 217

原创 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 167

原创 C++中 new对象和直接声明对象区别

1. new创建类对象需要指针接收一处初始化,多处使用 A* a=new A() 在堆(heap)上分配空间,堆上空间需要手动回收 (delete),声明对象直接 声明即可A a在栈(stack)上分配空间,栈上空间自动回收2.new出来的对象类似于申请空间,因此需要delete销毁,并且要把指针置为NULL;而直接声明的对象则在使用完直接销毁,理论 上不会存在内存泄漏3....

2019-12-19 10:30:26 2242

acc,h264资源

提供acc以及h264测试,有需要的朋友可以下载用来测试一下

2017-10-25

空空如也

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

TA关注的人

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