自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 音视频7——安卓软编音视频数据推送到rtmp服务器

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:videoPath/Demo8Activity.java at master · wygsqsj/videoPath · GitHub前期的代码我们都是通过MediaCodec来实现音视频数据的编码,使用MedieaCodec其实底层使用的还是DSP芯片进行编码,这种方式耗电量低,效率高,但是最大的问题是版本兼容问题,5.0以下基本不支持,dsp..

2022-01-17 00:24:22 4206

原创 音视频7——安卓硬编音视频数据推送到rtmp服务器

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:RTMPDemo一.RTMP使用流程rtmp协议的api调用顺序如下:二.初始化RTMP,连接服务器有两种构建rtmp服务器的方式我们使用的b站的服务器,要使用b站的服务器,你得认证一下,审核还需要大概1天得时间,除此之外,我们还可以自己构建rtmp服务器,你可以花几十块钱买个阿里云之类的云服务器,预装一个Linux系统,rtmp

2021-12-25 18:19:30 3304

原创 音视频7——安卓硬编推送到rtmp服务器之librtmp导入

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:RTMPDemo一.RTMP协议rtmp协议主要应用在音视频的传输上的一套协议,跟Http、蓝牙等协议一样都是在某种应用状态下的使用规范,rtmp协议由C编写,源码很少,下载地址为:http://rtmpdump.mplayerhq.hu/download/此处直接下载源码即可:二.AndroidStudio配置NDK开发And.

2021-12-25 17:00:41 3422

原创 音视频5.4——两个MP3混音合成一个MP3

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:GitHub - wygsqsj/videoPath: 音视频学习路线demo音频上几个节点我们只是通过对音频的操作熟悉了MediaCodec、MediaExtractor、MediaMuxer的使用,这一节说一下音频的一些基本概念,并将这几个API联合起来,将两个mp3合并成一个mp3文件。首先声音是一种波形,我们在很多音乐软件或者剪辑

2021-11-20 18:27:39 3120 1

原创 音视频6.4——h264文件解码输出到Surface

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:GitHub - wygsqsj/videoPath: 音视频学习路线demo获取Surface首先获取surface,我们MediaCodec解析出来的数据需要放到Surface中进行渲染,获取到surface之后开启解码线程 protected void onCreate(Bundle savedInstanceState) {

2021-11-12 11:45:55 3823

原创 音视频6.3——安卓录屏实现编码成h264文件

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:GitHub - wygsqsj/videoPath: 音视频学习路线demo录屏功能录屏需要通过系统构建的Intent再通过startActivityForResult跳转,从回调中拿到MediaProjection,并为他指定Surface,我们的录屏数据就会写入到这个Surface中1.获取录屏APIprivate MediaPr

2021-11-06 16:47:40 732

原创 音视频6.2——相机采集数据编码成H264

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:GitHub - wygsqsj/videoPath: 音视频学习路线demoCamera采集数据这个就是普通的通过Camera1采集数据,设置Camera相机,并为Camera相机设置SurfaceView的预览:mCamera = Camera.open(0);if (mCamera == null) { throw n.

2021-11-06 16:31:55 3274

原创 音视频6.1—— H264编码基础概念

H264编码我们通常看到得视频格式,比如mp4,avi,是将音频和视频打包成一个文件,这种指的是封装格式,而H264则是视频的编码格式;视频之所以要进行编码是因为,我们得视频是由一帧接一帧得画面构建而成,一帧画面我们可以看作由像素所构成的图片,假设每个像素占3个字节,这一帧画面的宽高为,1080*1920,那么这一帧画面的大小为:3*1080*1920,那么一帧画面有将近6M,我们的电影一般为每秒24帧,这一部电影算下来要占700多G,这肯定不符合我们的需求,而H264就是用来对视频进行压缩的一种编码方

2021-11-06 15:33:36 1047

原创 音视频5.3——MediaCodec 完成PCM编码成AAC

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:GitHub - wygsqsj/videoPath: 音视频学习路线demo

2021-11-03 00:06:36 1108

原创 音视频5.2——MediaCodec 异步方式完成AAC硬解成PCM

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:GitHub - wygsqsj/videoPath: 音视频学习路线demoMediaCodec异步方式上一节使用同步方式使用MediaCodec总感觉比较麻烦,我们java中使用大量的回调来实现监听者模式,MediaCodec在sdk 19版本后也通过回调来告知使用者,input或者output已经准备好的情况,具体的api就是为Med.

2021-10-30 17:12:14 493

原创 音视频5.1——MediaCodec 同步方式完成AAC硬解成PCM

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:GitHub - wygsqsj/videoPath: 音视频学习路线demoMediaCodec使用MediaCodec编解码实际是通过底层的硬件来对我们的音视频数据进行处理的,俗称硬编硬解,ffmpeg编解码是软解,效率不如MediaCodec,MediaCodec的主要实现是通过Native层去访问dsp芯片,让dsp芯片去解析码流,整个.

2021-10-30 16:59:59 958

原创 音视频4——MediaExtractor 和 MediaMuxer 解析和封装 mp4 文件

MediaExtractor 视频分析器,可以将音频轨道和视频轨道分离,获取对应的信息常见api如下: setDataSource(String path):即可以设置本地文件又可以设置网络文件 getTrackCount():得到源文件通道数 getTrackFormat(int index):获取指定(index)的通道格式 getSampleTime():返回当前的时间戳 readSampleData(ByteBuffer byteB...

2021-10-29 14:38:10 598

原创 音视频3——SurfaceView和TextureView预览Cameara

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:https://github.com/wygsqsj/videoPathSurfaceView 双缓冲机制; 子线程刷新;适用于频繁更新情况 surfaceView不在应用窗口中绘制,不能够做到平移,旋转等,难以放到列表中TextureView 解决了SurfaceView不能根据屏幕...

2021-10-27 16:20:54 179

原创 音视频开发2——使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件

音视频开发路线:Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门demo地址:https://github.com/wygsqsj/videoPath参考资料:api介绍:在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件 - 简书wav格式的存储解析: Android音频开发(4):如何存储和解析wav文件_u01.

2021-10-25 20:56:03 528

原创 音视频开发1——绘制一张图片

音视频开发路线:https://blog.51cto.com/ticktick/1956269demo地址:https://github.com/wygsqsj/videoPath今日任务:在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View

2021-10-25 18:55:02 1965

原创 Ubuntu编译安卓系统时出现的问题

最近使用ubuntu编译安卓源码,具体操作步骤见下面链接,此处记录一下出现的问题。教程链接:ubuntu-18.04.4 Android系统源码R(Android 11)下载及编译_王人冉的博客-CSDN博客repo可以看作就是python写的git扩展工具类,为了更好的管理Androd系统源码,需要注意的问题是当前谷歌的repo是以python3为基准写的,我使用的ubuntu16版本,python默认是2.7版本,所以执行 repo sync 命令时出现了各种问题:Tracebac

2021-09-10 23:03:00 2851 3

原创 安卓基础之Fragment与ViewPager

viewPager与Fragment的组合方式是可以说是当前App开发的标配,所以放在一篇博客中进行描述。FragmentFragment是Acttivity界面一个组成部分,基本上目前使用到多个页面的情况下都会用到,其实Fragment最大的作用是分担Activity的代码压力,为了后期维护方便,不把所有的代码罗列到一个Activity中。构建Fragment1.Activity布局文件...

2019-09-02 22:20:41 2509

原创 安卓基础之数据库

SQLite安卓内置数据库为非常轻量级的SQLite,同SQL语法一致,本文会记录一下SQLite数据库的使用及基本的增删改查操作。SQLite与 MySql的不同之处主键自增长:SQLite是 autoincrement,MySql 是auto_increment主键: SQLite 主键一般定义为 _id,在做查询时要求主键列名必须是 _id(本身不是_id ,可以起别名 ),不然拿...

2019-08-30 22:31:42 276

原创 安卓基础之ContentProvider

ContentProvider 内容提供者ContentProvider的作用是把私有数据共享给其他用户访问。当用户进程通过内容提供者访问拥有私有数据的应用时,该应用会自动启动进程。使用Contentprovider一般对应的是数据库的操作,以增删改查为主,所以必须要对SQLite数据库的增删改查有一定了解定义自定义类继承ContentProvider清单文件中配置地址和是否可读取:...

2019-08-30 17:46:50 437

原创 安卓基础之BroadcastReceiver

BroadcastReceiver 广播接收者Android系统在运行过程中会产生很多事件,比如说打电话、开机、开关机等,为了让应用知道系统产生了这个事件,就需要发送一条对应的广播, 我们的App只要注册了广播接收者就可以接收到系统广播。系统通过intent来发送广播,在发送时会遍历系统中清单文件,自定义广播接收者需要定义筛选器intent-filter来让系统进行匹配,如果系统发送广播时没有...

2019-08-29 23:01:08 224

原创 安卓基础之Service

一.Service简介与进程Service是没有前台界面的,运行与后台的组件,是用于运行需要在后台运行的代码,例如音乐播放器的后台播放和下载。相当于一个没有界面的Activity,他们的启动方式也很相似。配置方式Service有两种,一种是常规的开启,另一种是绑定服务,前面我们直说常规的方式,容易理解构建类继承Service清单文件中配置< service android:n...

2019-08-29 17:55:30 360 1

原创 安卓基础之Activity

最近在整理笔记,因为我很多东西都是放在印象笔记里面,写的也不是特别规范,有时候时间长了,自己回头看都有点懵圈,现在一点点的挪到博客里来,也当温故知新,我会尽量写的规范一点,如果能帮到有需要的朋友,也是件好事。Activity的定义1.构建 类 继承安卓系统的Activity类,一般为AppCompatActivity2.清单文件中配置标签 <!-- Activity必须要在清...

2019-08-23 18:32:33 452

原创 安卓studio打jar包,导入第三方jar包,ant合并jar包

说明此文档主要为了解决安卓打jar包问题,当我们使用了第三方jar包的时候,有时候需要将第三方jar包一块打包到自己的jar包中,但是如果处理不好会出现“com.android.dx.cf.iface.ParseException: class name (…) does not match path(…)”问题,这个问题就是路径配置有问题,为了解决这个问题我使用了ant来合并两个jar包。如果...

2018-10-23 12:15:51 246

原创 AIDL的简单使用,涵盖5.0之后系统及魅族手机调用问题的解决

最近在整理笔记,因为我很多东西都是放在印象笔记里面,写的也不是特别规范,有时候时间长了,自己回头看都有点懵圈,现在一点点的挪到博客里来,尽量写的规范一点,如果能帮到有需要的朋友,也是件好事。AIDL,就是安卓跨进程通信的方式,其内部细节及Binder的实现暂时不表,只说怎样使用及一些注意点,还有我自己写demo的时候碰到的问题,比如5.0之后隐式调用Service出错啦,在魅族手机上无法绑定,

2017-09-08 15:33:42 1449 2

原创 Android4.4之后实现沉浸式状态栏及虚拟按键的适配

沉浸式状态栏

2017-02-21 14:25:37 6941 2

原创 代理

一.      代理的概念        代理就是有多个类,这些类拥有同一个接口,为这些类中的方法增加一些系统功能,例如异常处理,计算方法的运行时间等等,这样我们在客户端使用该类时,配合工厂模式和修改配置文件的方式可以选择使用代理类,还是目标类,我们代理的结构图如下:        类似于这种使用代理的编程思想叫做面向方面的编程,简称AOP(Aspect Oriented Progra

2016-01-28 22:22:20 367

原创 类加载器

一.三大类加载        Java虚拟机中可以安装多个类加载器,系统默认三个主要的类加载器是:BootStrap、ExtClassLoard、AppClassLoard,其中BottStrap不是java类,他同虚拟器一样是跨平台的,也就是随着操作系统的不同而改变,他是第一个进行内存开辟的类加载器,就是他把其他两个类加载器加载到虚拟机当中的,而其他两个都是java类,这三个类加载器都负责加

2016-01-27 19:33:48 335

原创 注解

一.注解简介         注解就相当于一种标记,他可以用在包、类、字段、方法、方法的参数及局部变量上,用来标识这些元素的状态或者其他特点,每一个注解都是一个类,当我们的程序使用了注解之后,编译器、开发工具或其他程序可以通过反射来了解我们程序中的元素有无标记,根据标记来执行相应的操作。注解的格式为:@+注解名java为我们提供了一些已经定义好的注解,例如:  @suppressW

2016-01-23 16:18:02 348

原创 JavaBean与内省

一.      JavaBean与内省的简介         JavaBean是一种特殊的类,凡是符合以下特点的类就可以被称作JavaBean:①该类中有一个无参的构造方法②对于这个类,有get和set方法用于访问其对应的值。        JavaBean是为了传递值而创建的,因此其对象也称之为值对象,而该类所对应的get和set方法,在get和set后的对应的是属性名,去掉get或

2016-01-21 19:07:56 326

原创 java中的枚举

枚举        枚举是java1.5版本的新特性,这个特性也是在c语言里面演化过来的,枚举的作用就是用来固定变量值,我们定义一个枚举类,在枚举中把我们需要使用的元素固定下来,这样在其他地方调用这个枚举变量时,如果所赋之值不是我提前定义好的元素,那么编译器就会报错。一.我们首先通过自定义一个类来模仿枚举的功能。public class SimulationEnum { p

2016-01-20 20:29:23 312

原创 java实例

这一篇主要说一下两个程序示例,现在来看一下这两道题,这两道题对于我们所学知识的综合利用有很大的帮助,对于很多知识点我们大多都是处于一知半解的状态,知道有这么回事,但是真正的开发利用中就是不知道如何下手,还有一些知识点是没有接触过,通过这两道题把所学的知识点串一下,更重要的是培养一种灵活运用所学知识的能力和学习的态度与方法。

2015-12-16 16:55:18 467

原创 java基础之反射

在我们编写程序时,如果我们要用到一个类而这个类却没有完成,如果我们直接调用这个类是会报错的,JAVA为我们提供了一个方法就是反射,利用这个反射功能我们就可以在这个类没有被完成时而对他进行调用。

2015-12-14 23:54:11 483

原创 java基础之正则表达式

正则表达式是用来操作字符串的规则,我们可以把正则表达式看做一个模板,把字符串放到这个模板中就可以得到我们想要的样子。

2015-12-14 23:38:23 434

原创 java基础之网络编程

网络编程是非常重要的内容,在信息时代的背景下,网络已经成为人们之间交互的重要方式,我们这一章说一说java中网络编程的基础知识。

2015-12-14 22:47:55 593

原创 java基础之GUI

GUI是图形用户接口的意思,全称为Graphical user Interface,是用图形界面的方式显示计算机操作的界面,方便直观,我们只需动用鼠标键盘操作窗口文本就可以实现我们想要的内容。

2015-12-14 21:43:42 733

原创 java基础之IO技术_2

IO流技术所涉及到的类和示例有很多,在第一篇我们介绍了IO体系中的字符流和字节流体系,这一篇我们说一说IO技术所涉及到的其他类。

2015-12-14 16:26:27 779

原创 java基础之IO技术_1

IO技术我们也成为IO流,是Input(输入)和Output(输出)的简写,  IO技术是java中十分、特别、非常重要的一门技术,也是java的开发中使用频率相当高的技术,所以必须要掌握。

2015-12-14 11:41:30 642

原创 java基础之jdk1.5的几个新特性及若干类的使用

在这篇博客中我们来说一说java1.5版本的三个新特性及java中的几个类的使用。

2015-12-14 10:18:13 487

原创 java基础之集合

Java是面向对象的语言,我们的程序中会出现各种各样的对象,为了方便管理这些对象,就出现了集合,集合是存储对象的容器,我们可以把对象放到集合中,然后利用集合的方法对这些对象进行操作。我们可以理解成集合就是管理对象的对

2015-12-13 19:16:17 496

原创 java基础之字符串常见方法总结

关于字符串的内容中大多都是一些需要记忆和练习的方法,在此文章中说一说常用的方法。

2015-12-13 12:18:38 613

空空如也

空空如也

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

TA关注的人

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