William的小星球 
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  •     

理解ijkplayer(六)Vout、Aout、FFPipeLine

// ijkmedia/ijkplayer/ff_ffplay_def.h typedef struct FFPlayer { //... SDL_Aout *aout; SDL_Vout *vout; struct IJKFF_Pipeline *pipeline; struct IJKFF_Pipenode *node_vdec; //... }FFPlayer; 这篇文章的内容: 分析FFPlayer结构体中的SDL_Aout、SDL_Vout、IJKFF_Pipeline和IJKFF_Pipenode的作用 此外,这四个结构体
 2020-03-21   音视频开发   

Mac-10-15-AndroidStudio-JNI调试出错

mac升级到10.15后,进行Jni代码调试的时候报错: com.intellij.execution.ExecutionFinishedException: Execution finished Process finished with exit code 0clean、invalidate cache and restart都没用,最后将host重新配置一下,就能够进行jni调试了: 127.0.0.1 localhostthanks :手机和AS中debug环境配置问题小记
 2020-03-07   ndk   

Android-cmake使用外部动态共享库

官方文档分享: CMake的基本用法参考Android官方文档上的CMake教程: https://developer.android.com/studio/projects/configure-cmake 他的内容有: 创建CMake脚本 使用NDK中的静态库和动态共享库 添加其他已经编译过得动态共享库 如何进行多CMake project的开发 本篇文章 本篇文章主要是分析如何使用第三方的so库进行c层的开发。 与官方文档不同的是,官方文档在连接第三方动态共享库的时候,用法是: # 添加共享库imported-lib add_library( imported-lib
 2020-02-07   ndk   

RxJava1源码分析

我对于RxJava的异常处理和上抛方式有一些不解,而上网查找的文章都是RxJava的一些用于处理异常的操作符,所以只能自己去源码里面找答案了。 虽然RxJava1已经过时了,但是鉴于RxJava1的源码会比RxJava2的简洁一些,因此易于分析。所以我在这里对RxJava1的源码进行分析。 1 构造Observable1.1 create方式Observable.create<String> { it: Subscriber<in String> -> //上游发射数据 it.onNext("123") it.onCom
 2020-01-26   第三方库   

Throwable的使用

1 取出Throwable的堆栈信息使用Throwable一个很大的好处在于,他能保存他被实例化的方法的堆栈信息,通过方法: Throwable#printStackTrace() 可以将他和他的cause Throwable和他的cause的cause…( 递归 ) 的堆栈信息都打印出来。 而例如我们要将一个Throwable对象的堆栈信息不仅仅是输出到控制台,还要保存到本地日志或者发送到服务器呢?那么就要将Throwable的堆栈信息提取出来。 令人开心的是,android.util.Log类提供了这么一个工具方法: /** * Handy function to get a logga
 2020-01-09   Java   

理解ijkplayer(五)解码、播放

前言 我是一名打算走音视频路线的android开发者。以此系列文章开始,记录我的音视频开发学习之路 ijkplayer系列文章目录:理解ijkplayer(一):开始 理解ijkplayer(二)项目结构分析 理解ijkplayer(三)从Java层开始初始化 理解ijkplayer(四)拉流 理解ijkplayer(五)解码、播放 1 解码线程简略版代码:解码线程位于:strem_component_open()中,简略版如下: static int stream_component_open(FFPlayer *ffp, int stream_index) { AVCod
 2019-12-30   音视频开发   

理解ijkplayer(四)拉流

前言 我是一名打算走音视频路线的android开发者。以此系列文章开始,记录我的音视频开发学习之路 ijkplayer系列文章目录:理解ijkplayer(一):开始 理解ijkplayer(二)项目结构分析 理解ijkplayer(三)从Java层开始初始化 理解ijkplayer(四)拉流 理解ijkplayer(五)解码、播放 由于篇幅的原因,因此这一篇文章是接着上一篇继续写的。 上一篇文章分析完了: JNI_Onload() native_init() native_setup() _setDataSource() _setVideoSurface 1 _prepareAs
 2019-12-30   音视频开发   

理解ijkplayer(三)从Java层开始初始化

前言 我是一名打算走音视频路线的android开发者。以此系列文章开始,记录我的音视频开发学习之路 ijkplayer系列文章目录:理解ijkplayer(一):开始 理解ijkplayer(二)项目结构分析 理解ijkplayer(三)从Java层开始初始化 理解ijkplayer(四)拉流 理解ijkplayer(五)解码、播放 1. 应用层使用//实例化 val videoView:IjkVideoView = IjkVideoView(this) //添加到布局 fl_video_container.addView( videoView, ViewGroup.La
 2019-12-30   音视频开发   

JNI创建变量和释放变量

jni中的数据传递就两种:c层传到java层;java层传到c层。 1 当数据从java传递到c1.1 传递基本数据类型在Java层定义jni代码: public static native void inputInt(int intData); c层实现: JNIEXPORT void JNICALL Java_com_hwilliam_jnilearncmake_NDKTools_inputInt(JNIEnv *env, jclass clazz, jint int_data) { int data = int_data; LOGD("input int dat
 2019-12-29   ndk   

理解ijkplayer(二)项目结构分析

前言 我是一名打算走音视频路线的android开发者。以此系列文章开始,记录我的音视频开发学习之路 ijkplayer系列文章目录:理解ijkplayer(一):开始 理解ijkplayer(二)项目结构分析 理解ijkplayer(三)从Java层开始初始化 理解ijkplayer(四)拉流 理解ijkplayer(五)解码、播放 1. 整体结构. ├── android/ #android项目的demo和so库的输出路径 ├── config/ ├── doc/ ├── extra/ #ijkplayer依赖的第三方库的源码,例如ffmpeg ├── ijkmedi
 2019-11-30   音视频开发   
1234…21

搜索

Hexo Fluid