理解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
音视频开发
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
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
音视频开发