摘要: 之前的视频解码仍然存在问题,那就是是在主线程中去完成解码的,会造成线程阻塞,这里将其改为多线程解码,使其主线程不被阻塞前面介绍了音视频的主线程解码,那样会阻塞主线程,在前面学习了多线程以后,就可以对音频和视频分离开来在子线程里解析了,但这样存在音视频同步的问... 阅读全文
posted @ 2019-04-05 23:36 cj5785 阅读(721) 评论(0) 推荐(0)
摘要: 之前的视频解码仍然存在问题,那就是是在主线程中去完成解码的,会造成线程阻塞,这里将其改为多线程解码,使其主线程不被阻塞前面介绍了音视频的主线程解码,那样会阻塞主线程,在前面学习了多线程以后,就可以对音频和视频分离开来在子线程里解析了,但这样存在音视频同步的问... 阅读全文
posted @ 2019-04-05 23:36 cj5785 阅读(181) 评论(0) 推荐(0)
摘要: 前面讲到记录到ffmpeg音视频解码的时候,采用的是在主线程中进行操作,这样是不行的,在学习了POSIX多线程操作以后,就可以实现其在子线程中解码了,也可以实现音视频同步了简单示例在native实现中,直接调用pthread的多线程方法,这样就可以在JNI层... 阅读全文
posted @ 2019-04-05 23:35 cj5785 阅读(363) 评论(0) 推荐(0)
摘要: 在做开发的时候,难免会crash,那么在这时候需要进行调试,在C/C++的代码调试中,gdb是很常用的gdb在这不做过多介绍,之前在C语言中已经做过总结,这里简要回顾一下要使用gdb,在编译的时候需要添加-g参数gcc test.c -g -o test进入... 阅读全文
posted @ 2019-04-05 23:34 cj5785 阅读(164) 评论(0) 推荐(0)
摘要: 在做开发的时候,难免会crash,那么在这时候需要进行调试,在C/C++的代码调试中,gdb是很常用的gdb在这不做过多介绍,之前在C语言中已经做过总结,这里简要回顾一下要使用gdb,在编译的时候需要添加-g参数gcc test.c -g -o test进入... 阅读全文
posted @ 2019-04-05 23:34 cj5785 阅读(188) 评论(0) 推荐(0)
摘要: 在做NDK开发的时候,很多情况下都是需要使用多线程的,一方面是提高程序运行效率,另一方面就是防止主线程阻塞C的多线程在C语言里,可以通过对于POSIX标准的运用,使得C语言执行多线程提高程序的执行速度,以及对资源的合理利用POSIXPOSIX原理POSIX可... 阅读全文
posted @ 2019-04-05 23:33 cj5785 阅读(173) 评论(0) 推荐(0)
摘要: 在做NDK开发的时候,很多情况下都是需要使用多线程的,一方面是提高程序运行效率,另一方面就是防止主线程阻塞C的多线程在C语言里,可以通过对于POSIX标准的运用,使得C语言执行多线程提高程序的执行速度,以及对资源的合理利用POSIXPOSIX原理POSIX可... 阅读全文
posted @ 2019-04-05 23:33 cj5785 阅读(388) 评论(0) 推荐(0)
摘要: 在Android的源代码中,随处可见Makefile,那么Makefile到底是用来干嘛的呢?其实Makefile和Maven、ANT、Gradle一样,属于构建工具,当项目比较庞大的时候,就可以使用makefile来构建项目了makefile简介一个工程中... 阅读全文
posted @ 2019-04-05 23:31 cj5785 阅读(112) 评论(0) 推荐(0)
摘要: 在Android的源代码中,随处可见Makefile,那么Makefile到底是用来干嘛的呢?其实Makefile和Maven、ANT、Gradle一样,属于构建工具,当项目比较庞大的时候,就可以使用makefile来构建项目了makefile简介一个工程中... 阅读全文
posted @ 2019-04-05 23:31 cj5785 阅读(119) 评论(0) 推荐(0)
摘要: 之前已经用他人的编译脚本对ffmpeg进行了成功编译,那么在裁剪ffmpeg的时候需要指定文件,这时候应该怎么编写编译脚本呢?本文目的在于说明ffmpeg编译脚本的编写首先在ffmpeg的目录下新建编译脚本touch android_build.sh #新建... 阅读全文
posted @ 2019-04-05 23:28 cj5785 阅读(320) 评论(0) 推荐(0)
摘要: 之前已经用他人的编译脚本对ffmpeg进行了成功编译,那么在裁剪ffmpeg的时候需要指定文件,这时候应该怎么编写编译脚本呢?本文目的在于说明ffmpeg编译脚本的编写首先在ffmpeg的目录下新建编译脚本touch android_build.sh #新建... 阅读全文
posted @ 2019-04-05 23:28 cj5785 阅读(871) 评论(1) 推荐(0)
摘要: 前文讲到音频解码,将音频解码,并且输入到PCM文件,这里将音频通过AudioTrack直接输出音频播放说明在Android中自带的MediaPlayer也可以对音频播放,但其支持格式太少使用ffmpeg可以支持更多格式常用的音频播放有很多种方式,但播放PCM... 阅读全文
posted @ 2019-04-05 23:27 cj5785 阅读(880) 评论(0) 推荐(0)
摘要: 在之前的文章已经初步对视频解码有个初步的认识了,接下来来看一看音频解码音频解码步骤音频解码与视频解码一样,有者固有的步骤,只要按照步骤来,就能顺利的解码音频以上是ffmpeg的解码流程图,可以看到,无论是音频还是视频,其步骤都是一样的,差别在于在视频处理和音... 阅读全文
posted @ 2019-04-05 23:26 cj5785 阅读(290) 评论(0) 推荐(0)
摘要: 在之前的文章已经初步对视频解码有个初步的认识了,接下来来看一看音频解码音频解码步骤音频解码与视频解码一样,有者固有的步骤,只要按照步骤来,就能顺利的解码音频以上是ffmpeg的解码流程图,可以看到,无论是音频还是视频,其步骤都是一样的,差别在于在视频处理和音... 阅读全文
posted @ 2019-04-05 23:26 cj5785 阅读(197) 评论(0) 推荐(0)
摘要: 上次已将ffmpeg的动态库编译出来了,并且使用了ffmpeg的转码功能,成功将mp4格式视频转化为yuv视频,这篇文章基于上次测试的demo,使用surfaceview显示解码完成的像素数据布局设置和权限添加布局 权限编写自定义vie... 阅读全文
posted @ 2019-04-05 23:25 cj5785 阅读(259) 评论(0) 推荐(0)
摘要: 上次已将ffmpeg的动态库编译出来了,并且使用了ffmpeg的转码功能,成功将mp4格式视频转化为yuv视频,这篇文章基于上次测试的demo,使用surfaceview显示解码完成的像素数据布局设置和权限添加布局 权限编写自定义vie... 阅读全文
posted @ 2019-04-05 23:25 cj5785 阅读(315) 评论(0) 推荐(0)
摘要: Android平台要使用ffmpeg就需要编译生成动态库,这里采用Ubuntu编译Android动态库文件准备要编译生成Android需要以下文件NDKffmpeg源代码NDK下载NDK可以去Google下载,也可以在国内一些Android网站下载这里推荐两... 阅读全文
posted @ 2019-04-05 23:23 cj5785 阅读(481) 评论(0) 推荐(0)
摘要: Android平台要使用ffmpeg就需要编译生成动态库,这里采用Ubuntu编译Android动态库文件准备要编译生成Android需要以下文件NDKffmpeg源代码NDK下载NDK可以去Google下载,也可以在国内一些Android网站下载这里推荐两... 阅读全文
posted @ 2019-04-05 23:23 cj5785 阅读(157) 评论(0) 推荐(0)
摘要: ffmpeg官网提供了window平台下额开发工具供开发者使用,这篇文章主要以3.2版本的ffmpeg作为演示,记录在VS2013下,怎么去编译ffmpeg下载在官网中,按照以下步骤下载下载Windows版选择需要的版本下载版本这里接下来就是选择版本,这里我... 阅读全文
posted @ 2019-04-05 23:10 cj5785 阅读(148) 评论(0) 推荐(0)
摘要: ffmpeg官网提供了window平台下额开发工具供开发者使用,这篇文章主要以3.2版本的ffmpeg作为演示,记录在VS2013下,怎么去编译ffmpeg下载在官网中,按照以下步骤下载下载Windows版选择需要的版本下载版本这里接下来就是选择版本,这里我... 阅读全文
posted @ 2019-04-05 23:10 cj5785 阅读(139) 评论(0) 推荐(0)
摘要: ffmpeg用来对音视频进行处理,那么在使用ffmpeg前就需要ffmpeg有一个大概的了解,这里使用雷神的ppt素材进行整理,以便于复习音视频基础知识视频播放器的原理播放视频的流程大致如下:常用播放器跨平台VLC,Mplayer,ffplay等Window... 阅读全文
posted @ 2019-04-05 23:06 cj5785 阅读(203) 评论(0) 推荐(0)
摘要: ffmpeg用来对音视频进行处理,那么在使用ffmpeg前就需要ffmpeg有一个大概的了解,这里使用雷神的ppt素材进行整理,以便于复习音视频基础知识视频播放器的原理播放视频的流程大致如下:常用播放器跨平台VLC,Mplayer,ffplay等Window... 阅读全文
posted @ 2019-04-05 23:06 cj5785 阅读(181) 评论(0) 推荐(0)
摘要: 前面将的都是如何使用C/C++文件生成so动态库,那么在使用别人的so动态库的时候应该怎么做呢?这篇文章就是使用一个变声功能的动态库,完成对于以有so动态库的说明。动态库来源在互联网中,有着许许多多动态库,很多厂商也对外提供动态库供开发者调用,例如高德地图的... 阅读全文
posted @ 2019-04-05 22:56 cj5785 阅读(374) 评论(0) 推荐(0)
摘要: 前面将的都是如何使用C/C++文件生成so动态库,那么在使用别人的so动态库的时候应该怎么做呢?这篇文章就是使用一个变声功能的动态库,完成对于以有so动态库的说明。动态库来源在互联网中,有着许许多多动态库,很多厂商也对外提供动态库供开发者调用,例如高德地图的... 阅读全文
posted @ 2019-04-05 22:56 cj5785 阅读(502) 评论(0) 推荐(0)
摘要: 虽然现在有插件化开发和热修复,但为何还需要增量更新?插件化开发和热修复依赖于宿主程序,增量更新适合更新宿主程序。差分包生成的前提差分包的生成依赖于BsDiff开源项目,而BsDiff又依赖于Bzip2BsDiff源代码下载地址:BsDiffBzip2源代码下... 阅读全文
posted @ 2019-04-05 22:54 cj5785 阅读(208) 评论(0) 推荐(0)
摘要: 虽然现在有插件化开发和热修复,但为何还需要增量更新?插件化开发和热修复依赖于宿主程序,增量更新适合更新宿主程序。差分包生成的前提差分包的生成依赖于BsDiff开源项目,而BsDiff又依赖于Bzip2BsDiff源代码下载地址:BsDiffBzip2源代码下... 阅读全文
posted @ 2019-04-05 22:54 cj5785 阅读(187) 评论(0) 推荐(0)
摘要: 文件的拆分与合并在开发中经常会用到,上传或是下载的时候都有这样的运用文件拆分的思路将文件大小拆分为n个文件那么,每个文件的大小就是等大小的如果文件大小被n除不尽,那么就使用n+1个文件来拆分最后一个文件的大小就是整除不尽的那一部分数据文件合并的思路将拆分出来... 阅读全文
posted @ 2019-04-05 22:52 cj5785 阅读(211) 评论(0) 推荐(0)
摘要: 文件的拆分与合并在开发中经常会用到,上传或是下载的时候都有这样的运用文件拆分的思路将文件大小拆分为n个文件那么,每个文件的大小就是等大小的如果文件大小被n除不尽,那么就使用n+1个文件来拆分最后一个文件的大小就是整除不尽的那一部分数据文件合并的思路将拆分出来... 阅读全文
posted @ 2019-04-05 22:52 cj5785 阅读(207) 评论(0) 推荐(0)
摘要: 本文主要是说明一下在eclipse下如何对NDK进行配置配置NDK虽然现在基本上都使用Android Studio进行Android开发,但一些项目在eclipse中仍有运用,这里讲一讲eclipse的NDK配置在最开始下载的adt里面是没有NDK这个选项的... 阅读全文
posted @ 2019-04-05 22:51 cj5785 阅读(131) 评论(0) 推荐(0)
摘要: 本文主要是说明一下在eclipse下如何对NDK进行配置配置NDK虽然现在基本上都使用Android Studio进行Android开发,但一些项目在eclipse中仍有运用,这里讲一讲eclipse的NDK配置在最开始下载的adt里面是没有NDK这个选项的... 阅读全文
posted @ 2019-04-05 22:51 cj5785 阅读(139) 评论(0) 推荐(0)
摘要: 在使用JNI的时候,可能会产生异常,此时就需要对异常进行处理异常处理JNI抛出Throwable异常,在Java层可以用Throwable捕捉而在C只有清空异常这种处理但如果在JNI中通过ThrowNew抛出异常,则在Java曾可以捕获例子(在native访... 阅读全文
posted @ 2019-04-05 22:50 cj5785 阅读(159) 评论(0) 推荐(0)
摘要: 在使用JNI的时候,可能会产生异常,此时就需要对异常进行处理异常处理JNI抛出Throwable异常,在Java层可以用Throwable捕捉而在C只有清空异常这种处理但如果在JNI中通过ThrowNew抛出异常,则在Java曾可以捕获例子(在native访... 阅读全文
posted @ 2019-04-05 22:50 cj5785 阅读(250) 评论(0) 推荐(0)
摘要: JNI中的引用意在告知虚拟机何时回收一个JNI变量JNI引用变量分为局部引用和全局引用局部引用局部引用,通过DeletLocalRef手动释放对象原因访问一个很大的Java对象,使用之后还用进行复杂的耗时操作创建了大量的局部引用,占用了太多的内存,而且这些局... 阅读全文
posted @ 2019-04-05 22:50 cj5785 阅读(112) 评论(0) 推荐(0)
摘要: JNI中的引用意在告知虚拟机何时回收一个JNI变量JNI引用变量分为局部引用和全局引用局部引用局部引用,通过DeletLocalRef手动释放对象原因访问一个很大的Java对象,使用之后还用进行复杂的耗时操作创建了大量的局部引用,占用了太多的内存,而且这些局... 阅读全文
posted @ 2019-04-05 22:50 cj5785 阅读(147) 评论(0) 推荐(0)
摘要: JNI实现了C/C++与Java的相互访问,那么这篇文章就从C/C++访问Java开始说起native函数说明每个native函数,都至少有两个参数(JNIEnv *和jclass或jobject)当native方法为静态方法时,采用jclass,此时jcl... 阅读全文
posted @ 2019-04-05 22:49 cj5785 阅读(266) 评论(0) 推荐(0)
摘要: JNI实现了C/C++与Java的相互访问,那么这篇文章就从C/C++访问Java开始说起native函数说明每个native函数,都至少有两个参数(JNIEnv *和jclass或jobject)当native方法为静态方法时,采用jclass,此时jcl... 阅读全文
posted @ 2019-04-05 22:49 cj5785 阅读(147) 评论(0) 推荐(0)
摘要: JNI(Java Native Interface)Java本地化接口,Java调用C/C++,C/C++调用Java的一套API接口实现步骤在Java源文件中编写native方法public native static String getStringFr... 阅读全文
posted @ 2019-04-05 22:42 cj5785 阅读(137) 评论(0) 推荐(0)
摘要: JNI(Java Native Interface)Java本地化接口,Java调用C/C++,C/C++调用Java的一套API接口实现步骤在Java源文件中编写native方法public native static String getStringFr... 阅读全文
posted @ 2019-04-05 22:42 cj5785 阅读(130) 评论(0) 推荐(0)
摘要: 本文简要回顾了C语言的一些注意事项和理解细节,不再赘述C语言的所有语法头文件头文件作为引入文件,在编译的时候,加载到源代码,参与编译在VS2013中可以看到,当引入头文件时候,只能看到函数的声明,其实现是在编译时候查找的C的动态库函数不可重名,而C++可以,... 阅读全文
posted @ 2019-04-05 22:40 cj5785 阅读(128) 评论(0) 推荐(0)
摘要: 本文简要回顾了C语言的一些注意事项和理解细节,不再赘述C语言的所有语法头文件头文件作为引入文件,在编译的时候,加载到源代码,参与编译在VS2013中可以看到,当引入头文件时候,只能看到函数的声明,其实现是在编译时候查找的C的动态库函数不可重名,而C++可以,... 阅读全文
posted @ 2019-04-05 22:40 cj5785 阅读(142) 评论(0) 推荐(0)