android surfaceview ffmpeg的渲染简单说明
来源:互联网 发布:艾默生网络能源 待遇 编辑:程序博客网 时间:2024/06/06 00:29
首先在java层面中,surfaceview的显示是通过SurfaceHolder这个类中2个方法实现的:
Canvas SurfaceHolder.lockCanvas();
SurfaceHolder.unlockAndPost(Canvas canvas);
例如
- Canvas canvas = holder.lockCanvas();
- canvas.drawRGB(rand.nextInt(255), rand.nextInt(255), rand.nextInt(255));
- holder.unlockCanvasAndPost(canvas);
先锁定surface然后返回canvas,然后使用canvas绘制,最后再解锁并渲染到屏幕上可见。
那么在ffmpeg中渲染surfaceview只需要通过一个native方法把surface传入就行。
例如
@Override
publicvoidsurfaceCreated(SurfaceHolder holder) {
new Thread(new Runnable() {
@Override
publicvoidrun(){
play(surfaceHolder.getSurface());
}
}).start();
}
...
publicnativeintplay(Object surface);
然后在需要渲染的线程中
// 获取native window
ANativeWindow *nativeWindow = ANativeWindow_fromSurface(env, surface);
最后在每一帧要渲染处
// lock native window buffer
ANativeWindow_lock(nativeWindow, &windowBuffer,0);
...
ANativeWindow_unlockAndPost(nativeWindow);
具体参考
http://blog.csdn.net/wangdong20/article/details/8572835
http://blog.csdn.net/King1425/article/details/71514318?locationNum=4&fps=1
- android surfaceview ffmpeg的渲染简单说明
- Android SurfaceView的简单学习
- ffmpeg 各版本的简单说明
- Android中Surfaceview的简单使用
- Android之SurfaceView的简单介绍
- android中SurfaceView的简单介绍
- Android SurfaceView简单使用
- Android ndk 把视频渲染到SurfaceView
- SurfaceView的简单使用
- surfaceView的简单介绍
- SurfaceView的简单应用
- SurfaceView的简单使用
- SurfaceView的简单介绍
- 关于ffmpeg视频的渲染
- Android开发简单使用surfaceview
- android surfaceView 的简单使用 画图,拖动效果
- Android之MediaPlayer——SurfaceView的简单使用
- Android 利用SurfaceView实现一个简单的计时器
- NYACM_001
- Java笔记1
- 机器学习入门之逻辑回归
- rsbo和rsbo2的wp
- 路由与网关(缺省网关,默认网关)
- android surfaceview ffmpeg的渲染简单说明
- 字符串左移
- 排序之选择排序法
- Jupyter Notebook 安装及应用
- VC下的Unicode编程
- unity多线程渲染优化想法。
- ActionFilter递归链剖析
- oracle日期格式转换及日期截取,按月统计,按日统计
- 并查集总结