自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GLFW+GLAD OpenGL Mac开发环境

最近打算好好的学习一下OpenGL 、这篇文章主要记录通过库GLFW+GLAD来搭建Mac平台下的OpenGL开发环境。之前有一篇文章介绍了在Mac下通过GLFW+GLEW的环境,在熟悉一些平台开发环境以后好像GLAD更加好使,那就整这个环境来学习了。 开发环境:MacOs Sierra 10.12.6 开发工具:Xcode 8.3.3 GLFW库:glfw3.2.1 ...

2018-09-12 16:05:31 1573 1

原创 Android音视频-Camera预览编码(OpenGL渲染预览、FFMpeg编码存储)

本章实现在上一节Android音视频-视频采集(OpenGL ES渲染)的基础上实现硬编码(MediaCodec)和软编码(FFMpeg)的功能。之前有写过一篇在应用层使用MediaCodec的硬编码,可以结合参考看一下Android音视频-视频编解码(H.264视频硬编硬解)整体框架设计这个的实现基于上一篇的代码基础,代码链接在文末列出,先看整体设计: 主要的调度类文件为mv_re...

2018-07-25 12:28:15 2137 1

原创 Android音视频-视频采集(OpenGL ES渲染)

之前有介绍过这方面的知识内容 Android音视频-视频采集(系统API预览) Android音视频-视频采集(Camera预览) Android音视频-视频采集(Camera2预览基础) Android音视频-视频采集(Camera2功能实现)上面的都是基于Android的高级应用层API来实现的音视频的采集和编码,下面我们要打开摄像头通过OpenGL ES底层native代码来渲染...

2018-07-20 16:03:38 2277 1

原创 Windows10安装Ubuntu16.04

由于最近要在Ubuntu上面开发,得安装一个Ubuntu的系统,这些是很常见的安装,但是也踩了一些坑,下面记录下来。安装环境Windows10Ubuntu16.04基础理论在安装的时候有一些概念要弄明白Bios启动模式legacy:在Windows8之前的Windows电脑启动 使用的是legacy的启动模式(是这样吧??)这个好像速度不行UEFI:...

2018-07-18 19:08:25 4415

原创 Android端视频播放器源码分析

Comming Soon…

2018-07-09 12:24:19 5899

原创 Android平台使用OpenSL ES渲染播放音频OpenGL ES渲染播放图片

对于音视频的播放在之前的文章中我就有了解到音频播放这篇文章介绍了使用Android高级别点的API来对音频渲染播放处理,视频的播放使用高级别的API没有写文章来处理。这篇文章将要了解到偏向于稍微底层API的方式来对音视频渲染播放处理,使用OpenSL ES处理音频,使用OpenGL ES处理视频。这篇文章我们可以了得到。Android平台OpenSL ES的搭建使用使用OpenSL ES播...

2018-07-04 20:28:12 1296

原创 FFmpeg在Mac上面采集音视频

在电脑上面使用FFmpeg命令行工具很方便,同样也可以在各个系统平台采集音视频数据,这里记录了解一下在Mac OS系统下的音视频采集。FFmpeg在OS X设备操作在FFmpeg中采集OS X系统的输入输出设备,常规方式采用的是OS X的avfoundation设备进行采集,它的参数如下:list_devices:列举当前可用设备信息video_device_index:视频设...

2018-05-25 17:52:45 3604 2

原创 FFmpeg命令行滤镜使用

对视频的滤镜处理还是很有吸引力的,因为可以做出各种比较炫酷的视频效果。这篇学习使用FFmpeg命令行来简单的操作制作视频的滤镜效果。FilterFilter的参数排列格式为: [输入流或标记名]滤镜参数[临时标记];[输入流或标记名]滤镜参数[临时标记名] 看一个命令行示例:ffmpeg -i input.mp4 -i logo.png -filter_complex "[...

2018-05-25 14:01:56 5319 1

原创 FFmpeg命令行操作流媒体

这个流媒体的理解我认为就是我们看到的音视频文件,然后通过互联网来进行传递的一种处理音视频流媒体的压缩,录制,编辑等操作。FFmpeg比较强大可以实现这些功能。FFmpeg发布与录制RTMP流首先简单了解一下RTMP: 它是直播中最为常见的一种实时直播流,详细的介绍与描述我找了一篇文章看了一下查看 因为直播的RTMP是出现了就没有的,我们可以通过FFmpeg把它录制下来,就是说只要有...

2018-05-22 16:22:37 8265

原创 FFmpeg命令行转码

本文主要了解FFmpeg进行音视频编码转换。主要学习如下几个知识点:FFmpeg使用libx264进行H,264(AVC)软编码,使用libx265进行H.265(HEVC)软编码使用FFmpeg在MacOS环境下硬编码了解音频编码,MP3,AAC的参数设置编码了解音视频编解码对资源使用情况分析FFmpeg软编码H.264和H.265支持H.264的封装格式的文件格式有很...

2018-05-21 20:14:48 63477

原创 FFmpeg命令行转封装

本文主要记录通过FFmpeg对MP4,FLV,M3U8格式的封装和文件分析以及对这些格式的一些了解。MP4格式在互联网常见的格式中,跨平台最好的就是MP4,它可以在PC的Flashplayer中播放,又可以在Android和iOS中播放...

2018-05-12 17:51:04 8983

原创 FFmpeg简介以及命令工具使用

最近要了解FFmpeg里面的技术细节问题,所以在读《FFmpeg从入门到精通这本书》,后面会有一些列的文章来笔记实践具体的技术细节问题。FFmpeg安装关于在Mac下的FFmpeg的安装之前的文章有提到过查看这里我就使用命令进行了安装但是这样默认安装完后会有一些库和工具没有安装上。我这篇文章安装的时候FFmpeg还是3.4.2的版本,在写这篇文章的时候已经是4.0的版本了。 于是我使...

2018-05-08 15:18:56 1444

原创 Android音视频-FFmpeg命令行工具使用

我们这篇主要了解使用FFmpeg命令行如何配置。在编译FFmpeg的时候,使用了参数-disable-ffmpeg,这样不会生成FFmpeg工具,如果生成了在Android应用也用不了,但是我们可以通过jni对代码做一些修改,间接的使用命令行工具。这个工具真的非常强大,例如 本示例接着上一篇的应用下面,所以不用引入libffmpeg.so和前面一些ndk开发的配置,具体的环境和配置信息见Andr...

2018-03-10 12:04:39 3473 1

原创 Android音视频-FFmpeg推流Mp4文件到电脑端查看

本文主要了解通过FFmpeg在Android端来进行推流,其中推流的主要代码参考自雷神,我主要先了解其中一个大体的过程,里面的推流c代码没有去细究。本文要了解掌握的的知识点:FFmpeg在Android端推流一个视频文件搭建简单的流媒体服务器(srs)查看推出来的音视频数据流(使用VLC查看)FFmpeg推流本示例是和上一篇的整合一个FFmpeg so放在同一个module下面...

2018-03-08 17:39:50 1276

原创 Android音视频-FFmpeg编译为单个so与测试调用

前面我们整出了FFmpeg的多个so文件,配置的过程走了一遍,这里我们在重新来走一遍配置过程,其实变动的地方不是很多。编译单个FFmpeg so库编译环境编译电脑系统:MacOS(10.13.3)编译NDK版本:NDK(r15c)FFMpeg版本:3.3.6配置编译文件我们在下载的FFmpeg的根目录下面新建一个文件build_android_single.sh.里...

2018-03-07 14:30:22 1035

原创 Android音视频-FFmpeg视频解码

我们这一篇主要了解FFmpeg的解码API,把Mp4解码出yuv视频数据格式。其中的主要C代码参考自雷神查看,本实例的功能在上一节的一个应用里面。在Java层声明native方法并调用我这里第一次把在res/raw下面的mp4文件拷贝到了存储卡上面去然后调用native方法:package com.lyman.ffmpeg_cmake;import android.conten...

2018-03-06 16:37:59 554

原创 Android音视频-FFmpeg编译与测试调用

FFmpeg的名声很大,是很多应用都使用的一个开源库。我们可以下载编译好的FFmpeg的so文件来使用,但是我们还是从0开始学会自己编译FFmpeg来提供给Android使用编译FFmpeg编译FFmpeg大体的步骤就是到官网下载FFmpeg源码,然后编译为so库编译环境MacOS High Sierra 10.13.3NDK 15(AndroidStudio里面更新即...

2018-03-03 14:21:30 537

原创 Android音视频-网络传输流媒体协议

本篇我们了解一些视频网络传输的一些网络协议以及一些常见名词。音视频网络传输协议了解三大类,HTTP,RTSP,RTMP。HTTP协议HTTP视频协议是在有网络的时候看视频的一种传输协议,他有几个不同的分支分类。HTTP文件渐进式下载通过网络下载视频文件,而视频文件是一个封装好了的视频格式文件。这种协议下面就比较呆板,没有下载的部分就无法播放,也不能跳转播放到没有下载的地方。...

2018-02-27 17:51:06 3291

原创 MarkDown使用小结

这篇文章主要是大致的了解一下MarkDown的常用语法和简单实用。简介Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。Markdown的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台WordPress和大型CMS如Joomla、Drupal都能很好的支持Markdown...

2018-02-23 16:55:46 364

原创 Android音视频-视频编解码(H.264视频硬编硬解)

在前面接触了音频的编解码,学习了通过MediaCodec来进行硬编码。把AudioRecord 采集的到的PCM音频数据编码压缩为AAC格式的音频数据,然后解码为PCM通过AudioTrack来播放。参考Demo链接前面我们可以很形象的了解音频数据,然后如何来编解码音频数据,并且操作这些数据。对于视频的数据的编解码也希望可以有那样形象的理解。在前面文章中Camera预览中我们直接使用高级A

2018-01-28 18:16:29 11953

原创 Android音视频-视频分解与合成(MP4文件)

上一篇们通过Camera的API结合MediaRecorder实现了视频的录制,具体的代码也大致的了解了。使用起来不是很难,这次得加大对视频的理解。在视频的基础知识里面我们了解了一些视频的相关的概念和名词,这篇文章我们搞清楚视频的组成,视频分离,视频的合成等概念和实现方法,这里操作的是MP4文件,其他的文件格式我觉得按照这个思路去了解应该也问题不大。简介查阅网上各种资料以后解析和分离视

2018-01-11 19:14:50 6528 4

原创 Android音视频-视频采集(Camera2功能实现)

这一篇文章我们要实现Camera实现的等一些功能。熟悉Camera2API的使用,着重了解我们前面没有深入了解的视频录制相关的内容。基本功能实现切换摄像头这个的实现和Camera API的步骤一摸一样。只是换了一个API而已。Camera是通过Camera.CameraInfo去获取相机,Camera2通过CameraManger去获取设备相机。关键代码如下:priva

2018-01-05 15:22:54 5079

原创 Android音视频-视频采集(Camera2预览基础)

Camera2是在API level 21后面取代Camera的一个API,我们以后开发的应用中实际和这个API打交到会比较多,毕竟现在很多Android使用都API21以上了。Camera2的使用我们也和上面说的Camera一样的功能来实现一遍,了解其中的一些细节。创建Camera2应用首先我们使用最简单的方式来使用Camera2来创建一个显示预览的应用。开始之前先总体了解一些Camera2用来拍

2017-12-21 11:49:20 2152

原创 Android音视频-视频采集(Camera预览)

Camera的使用我们直接根据官网介绍的使用流程,然后细入每个环节的内容,完全掌握Camera的使用。 我们最终的Demo在最后贴上,最终的Demo显示效果如下: 创建Camera应用我们快速的来显示一个相机预览的代码声明相机权限和相机特征权限<uses-permission android:name="android.permission.CAMERA"/> <uses-f

2017-12-18 10:20:22 4587 1

原创 Android音视频-视频采集(系统API预览)

我们了解了视频相关的基础知识,后面的文章我们要能够和音频一样可以采集我们的视频,视频是一帧一帧的图片来的,我们首先要学习预览视频,然后采集一帧图片,采集视频从简到难的来了解这个问题。首先第一个反应打开Google搜索和Android视频采集相关的东西,我们要知道如何通过API来采集,不由自主地到了Android官网的Camera API。Android有两个视频采集的API,Camera是Andro

2017-12-11 23:14:59 1210

原创 Android音视频-视频基础

和前面的音频开发中一样,视频也有很多专有的名次和概念,我们的了解其基础,在后面才能更加顺畅。基础知识视频分辨率 物理显示画面的宽度和高度即视频文件打开的尺寸属性,例如1920X960。 我们在看视频的时候有标清,高清,720P一说,这个和实际尺寸有啥关系。标清:分辨率在1280X720(720P)以下的视频格式,这个比较以高度720为界限,低于垂直分辨率720的为标清。高清:垂直分辨率大于等

2017-11-28 16:58:20 705 1

原创 Android音视频-音频编解码

前面我们知道了采集音频,播放音频,保存音频数据,我们知道PCM纯音频数据没有经过压缩编码处理的数据是很大的。很有必要了解编解码来处理这个问题。简介音视频的编码方式分为两种。硬编码: 用设备GPU去实现编解码,这样可以减轻CPU的压力。软编码: 让CPU来进行编解码,在c层代码来进行编解码,因为c/c++有很多好的编解码库。软硬编码对比: 硬编的好处主要在于速度快,而且系统自带不需要引入外

2017-11-27 17:17:01 2367

原创 Android音视频-存储和解析音频文件

对于PCM这个概念前面也看了一些,我现在最简单直接的认识就是它就是音频文件的原始数据,好像图形文件的内容的原始二进制数据一样。我们要把这些数据以文件来保存弄到文件里面去。根据现在Android提供的API记录下面两种方式。AudioRecord和AudioTrack存储和解析音频文件简介在前面已经知道了使用这两个类来工作了,它们是一个偏向底层的类,操作最原始的音频数据PCM的。下面要引入一个概念wa

2017-11-24 10:23:19 3259

原创 Android音视频-音频播放

在前面我们了解了音频的录制,录制了以后当然要可以播放了,下面记录一些Android中播放音频的几种方式。Android SDK提供三种API来播放音频:AudioTrack 接近底层,提供强大的控制能力,支持低延迟播放,流媒体播放等。和AudioRecord配套服用。MediaPlayer 适合在后台长时间播放本地音乐或者在线的流式资源,和MediaRecorder配套使用。SoundPo

2017-11-09 17:55:24 991

原创 装饰模式

简介装饰模式也称为包装模式,使用一种对客户端透明的方式来动态扩展对象的功能,同时也是继承关系的一种替代方案。日常生活中很多装饰模式的例子,我们穿着衣服就是对我们自己的一种装饰。定义动态地将责任附加到对象上。若要扩展功能,装饰着提供比继承更加有弹性的替代方案。使用场景需要透明并且动态地扩张类的功能;当不能采用继承的方式对系统扩展或者不采用继承不利于系统扩展和维护时;UML类图 Compone

2017-11-08 17:14:47 326

原创 Android音视频-音频采集

Android的音视频开发是我暂定的一个职业发展的一个方向,通过自学记录一些记了又忘记的知识。音频基础知识采样率(samplerate) 蓝色代表模拟音频信号,红色的点代表采样得到的量化数值。采用就是把模拟信号数字化的过程,不仅仅是音频需要采样,所有的模拟信号都需要通过采样转换为可以用0101来表示的数字信号。常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16

2017-11-06 11:36:19 1911

原创 适配器模式

简介适配器在Android开发中我们很常见了,ListView,GridView,RecycleView都会有一个适配器Adapter对象。适配器是将两个不兼容的类融合在一起,将不同的东西通过一种转换使得他们能够协调起来。日常生活中我们的笔记本电脑工作电压有的是20V,而我国家用电是220V,那么如何让20V的笔记本电脑可以在220V下工作呢,这时就有一个电源适配器,我们叫做充电器或者变压器。这个时

2017-10-31 11:37:07 279

原创 组合模式

简介组合模式也叫做部分整体模式,它将一组相似的对象看作一个对象处理,并且根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略对象与对象集合之间的差别。定义允许你将对象组成树形结构来表现“整体/部分”的层次结构。组合能让客户以一致的方式来处理个别对象和对象组合。使用场景表示对象的部分-整体层次结构,文件夹和文件层次,公司组织结构层次等树形结构的处理。UML类图安全组合模式

2017-10-30 14:14:39 296

原创 Android 通知

Android版本迭代速度很快,API也是改的很迅速,特别是Notification,很多API版本提供的方法样式都不一样,但是好在Android在appcompat-v7库里面提供了一个NofificationCompat类来处理兼容。在平时开发通知用的比较少,也没有去总结他们,但是现在看到很多app的通知都比较炫酷,自己不熟悉心里有个疙瘩。我们总结一些通知的类型以及使用。通知分类我们把通知分为如

2017-10-29 14:00:32 484

原创 Android Studio 上传项目到GitHub出现:The requested URL returned error: 403

打开项目根目录.git/config文件 修改[remote "origin"]url=https://github.com/yourname/example.git为[remote "origin"]url=http://[email protected]/yourname/example.git不知道这个错误是为啥产生的,但是该一下就OK了

2017-10-26 00:11:10 1775 1

原创 代理模式

简介代理模式也称为委托模式。简单的说就是委托其他的来干我想干的事情。例如代理上网,要别人带个外卖。定义为其他对象提供一种代理来控制对对象的访问。使用场景当不直接访问对象或者无法访问时可以通过一个代理对象来间接访问,保证客户端的透明性,代理对象和被代理对象需要实现相同的接口。UML类图 Subject:声明主题和代理共同接口或者方法, 可以是接口或者抽象类 RealSubject:要被代理的对

2017-10-25 18:43:52 286

原创 Android性能优化工具方法总结

性能优化的文章很多,这里单纯记录优化点和优化方法的总结。UI优化Android UI的基础理论知识可以看这里UI性能分析HierarchyViewer什么是HierarchyViewer能够可视化的直观获得UI布局设计结构和各种属性信息,帮助我们优化布局,是Android自带的工具。如何开启支持使用HierarchyViewerAndroid系统出于安全考虑,Hierarchy Viewer只能连接

2017-09-20 10:30:48 2590

原创 OpenGL Mac环境搭建

什么是OpenGL一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范OpenGL英文全称 Open Graphics Library ,是一个开放图形库,定义了一个跨编程语言、跨平台的API规范,它用于生成二维

2017-09-17 15:43:15 2400

原创 C语言实例练习

最近捡起了很久以前的C语言,把一些看到敲下练习的实例记录如下有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?void test1(int num){ int i,j,k; int count; for(i = 1;i <= num;i++){ for(j = 1;j <= num;j++){ for(k =

2017-09-12 11:02:05 466

原创 TextureView的onSurfaceTextureDestroyed方法在点击下一个界面不回调问题

被这个问题纠缠了几天,Google很久都没有找到答案,这个方法在点击下一个界面始终不调用destroy倒置绘制的东西会出问题,最后发现原因为在这个界面的主题上面添加了<item name="android:windowIsTranslucent">true</item>这个属性。去掉这行fuck code就可以了

2017-08-21 10:17:18 3445

空空如也

空空如也

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

TA关注的人

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