Comments (9)
获取YUV数据要通过onPreviewFrame接口,这里没有用到,直接使用的SurfaceTexture与OpenGL绑定,获取外部纹理id,将预览数据输出到SurfaceTexture,就可以操作数据了
from magiccamera.
多谢大牛的回复。
这么说,你的OpenGL操作是在播放端做的了?
如果我想直接从编码端操作,直接修改从编码端获取的YUV数据,该把OpenGL与什么绑定呢?
from magiccamera.
通过
GLES20.glGenTextures(1, textures, 0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, size.width, size.height,
0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, data);
这样就行了,详细可以看这里的loadTexture方法
不过这样是显示RGB数据的,在onPreviewFrame获取的YUV数据经过修改后要再转换成RGB数据OpenGL才能显示
或者可以在OpenGL里实现YUV转换成RGB
班门弄斧。。有错误望指出
from magiccamera.
太谦虚了
从编码端做修改看来可行,不过改动量看起来大一些,需要多次转换,好像开销也有些大吧。
那么在解码端用OpenGL不知道可不可以,我目前是用ijkmediaplayer播放的,解码端主要播放网络上的rtmp视频流
from magiccamera.
我没看过ijkmediaplayer简单看了下,这个目录下的shader脚本是不是就是接收视频流后显示时用的?如果是在这里改动并添加滤镜就行,不知道理解的对不对
from magiccamera.
这位大牛您好,我这里有个项目急需一个带有美颜功能的Android版demo,最好是从编码端渲染,取到渲染过的rgb数据之后再编码成h264数据打包发送。
估计以我们的实力短时间内无法完成了,请问您可否加一下我的qq:734285958,详谈一下商务合作的事?
from magiccamera.
好多朋友问过这个问题,这个问题我也不知道....
我试过用glReadPixels来读取帧数据,用ffmpeg将RGB转换并且编码,但是光读取RGB就需要80ms-120ms,再加上编码和转换的时间,大约用了250ms,跳帧太严重~可能代码写的有问题吧,但即使有优化空间,要达到25-30的帧数还是不知道该如何是好.....
后来也没有想出解决办法,目前忙于学校的事情,暂时也没时间研究,爱莫能助啊.....
希望有真大牛能帮助....
from magiccamera.
你可以看下https://github.com/google/grafika 试试
from magiccamera.
好的,非常感谢您的指导。
from magiccamera.
Related Issues (20)
- Please help on the below Video recording issue
- how to capture full bitmap from after applied effect not draw to GLSurfaceView. HOT 6
- why not upgrade build system,and use cmake to build native code
- Get bitmap is incorrect when capturing from GLSurfaceView after applied Filter (on the device: Huawei has errors)
- 2019:MagicCameraNew 三年前的项目,新工具链已经无法编译,因此整理了一下,适配最新编译环境 HOT 5
- 请问这个项目有使用步骤吗?没有找到啊 HOT 2
- 用opengl shader实时处理问题
- 有事找你
- 录视频崩溃
- 怎么切换拍摄出来的 图片的比例
- 选择滤镜后再去使用美颜没有效果,而且选了滤镜拍摄后存的图是一张黑色图片,而且很小
- android studio版本的没有图片编辑功能啊
- VideoEncoderCore.java 针对视频采集的encodedData(ByteBuffer)是什么颜色格式?
- 这个项目是不是不会再维护了?
- 美颜是对人脸部分进行的,还是对整张图片进行的?
- 如果你启动不了不会配置gradle,请下载这个,我替换成了V4.1.3版本的
- Jni编译问题 HOT 2
- 重新整理该项目(Reorganize the project) HOT 3
- 可以加入图片取色修改和停止修图功能吗
- 美颜不起作用,是什么原因? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from magiccamera.