问题标签 [grafika]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android 使用 SurfaceTexture TransformMatrix 镜像相机预览
我从 Grafika 示例开始,我想用 GlRenderView 渲染相机预览。我的问题是如何修改从表面纹理获得的变换矩阵,以便像使用设备前置摄像头一样获得视频预览:
我尝试使用以下行,但我的视频效果很奇怪://应用水平翻转。
谢谢你们。
javascript - 为什么动画正在加速
我的代码有问题。为什么这个动画仍然加速。[在此链接中是代码][1]
[1]:http: enter code here
//jsfiddle.net/74j0u5zf/4/
mediamuxer - 在 grafiak 中为编码的视频添加水印
我使用 grafika 代码创建了一个示例,我在其中从相机源创建视频。在 grafika 示例中,有一种方法可以在将数据传递给 muxer 时进行 drawExtra,从而在视频中添加点。我想在左上角添加水印来代替它。
请建议。
if (mFileSaveInProgress && showCam) {
}
android - Android相机颜色查找错误
我正在尝试为我的实时相机预览实现查找纹理。除了光泽和阴影之外,一切看起来都很好。光泽呈蓝色,阴影有时有红色斑点。
我正在使用Grafika 的 Camera Capture。我已经提到了 GpuImage 的 Shader。我能够使用以下加载纹理功能加载第二个纹理(查找纹理),
我的顶点着色器是
片段着色器如下所示。stexture2 是查找,stexture 是尺寸为 1920x1080 的相机预览帧,而 vTextureCoord 是相机帧的坐标
两周以来,我一直在尝试解决这个问题,希望能找到解决方案,并且用所有可能的关键字用尽了谷歌搜索。我是opengl的新手,并且会在这个特定部分寻求帮助。
感谢你们对我的帮助!
android - 如何在 Google Grafika ContinuousCaptureActivity 中的 EglSurface 上绘制位图?
我正在尝试使用 GLUtils.texImage2D 函数在视频上绘制某种水印,但它不会出现在预览和录制的视频中。我做错了什么?
android - 修改 ExtractMpegFramesTest 示例以在屏幕上呈现解码输出
我正在尝试修改ExtractMpegFramesTest以在屏幕上进行渲染并仍用于glReadPixels
提取帧。
我复制了用于从 ExtractMpegFramesTest(CodecOutputSurface 和 STextureRender 类)中提取帧的相关代码,并且在屏幕外渲染时帧提取按预期工作。
我有一个TextureView
,SurfaceTextureListener
当我收到时,onSurfaceTextureAvailable
我得到SurfaceTexture
并开始解码过程。我把它传给了它SurfaceTexture
,CodecOutputSurface
但它不起作用。
我不确定这是否相关,但是onSurfaceTextureAvailable
在SurfaceTexture
主线程上接收到并且所有解码(包括 CodecOutputSurface 构造函数调用)都是在不同的线程上完成的。
我在日志中看到了这一点:
我对 ExtractMpegFramesTest eglSetup 方法进行了以下修改:
以及 ExtractMpegFramesTest 设置方法:
谢谢
android - 在 OpenGLES 中缓冲或保留帧
我正在尝试在 Android 上的 GLES 中缓冲多达 10 帧。传入的帧来自相机到 a surfacetexture
,我使用 OpenGL 处理图像。我正在尝试这样做,因为我正在应用几个 gles 过滤器导致 GPU 阻塞,所以我正在失去帧速率。(一个 30 FPS 的相机最终会给出 25 帧)。我的想法是,如果我能够保留几帧并实现一个循环缓冲区,我应该能够将帧延迟固定数量(增加延迟),但仍然提供一致的帧速率(吞吐量)。
关于如何做到这一点的任何想法?
android - 使用 Grafika 的 camera2 API 连续捕获
大家好,我正在尝试从 Grafika 库(https://github.com/google/grafika )实现连续捕获功能) 在自定义应用程序中,但我需要使用 camera2 API,因为我从我了解到的旧相机 API 已被弃用。我遇到了很多问题,而且我的代码有点混乱,因为我仍然不完全理解 camera2 api 和循环缓冲区的 grafika 实现,一旦我设法使其工作,我将重构所有内容。我希望你能理解我的问题在于给定的混乱。我在我的应用程序中使用连续捕获功能的想法是复制 CameraCaptureActivity 所依赖的“Grafika”中“gles”目录中的所有类,并且我还复制了 CircularEncoder 和 CircularEncoderBuffer 类,因为活动也依赖于它们然后我尝试重新创建 ContinuousCaptureActivity 在我的 FragmentPhoneCameraNew 中所做的事情。我没有更改从“Grafika”库复制的任何其他类的任何内容。我正在测试的设备是带有 android 7.0 的三星 Galaxy S6。
- 我的第一个问题是在 startPreview 函数中,当我尝试在 try / catch 块( mCircEncoder = CircularEncoder(VIDEO_WIDTH, VIDEO_HEIGHT, 6000000, mCameraPreviewThousandFps / 1000, 7, mHandler) )中初始化 mCircEncoder 时,它给了我以下错误:
07-31 11:25:40.301 25399-25533/com.name.socourt E/BufferQueueProducer: [SurfaceTexture-0-25399-0] 连接: 已连接 (cur=1 req=4) 07-31 11:25:40.307 25399-25533/com.name.socourt W/CameraDevice-JV-0:流配置失败,原因是:endConfigure:365:摄像机 0:提供的输入/输出集不受支持 07-31 11:25:40.377 25399-25533/com .name.socourt E/CameraCaptureSession:会话0:创建捕获会话失败;配置失败
- 第二个问题是,在执行通过 CircularEncoder 类中的 mEncoder.configure 方法后,它给了我:
07-31 12:11:34.866 1130-1224/com.name.socourt E/AndroidRuntime: 致命异常: 相机后台线程进程: com.name.socourt, PID: 1130 android.media.MediaCodec$CodecException: 错误 0x80001001 在 android .media.MediaCodec.native_configure(Native Method) 在 com.name.socourt.services.CameraRelated.CircularEncoder.(CircularEncoder.java:123) 在 android.media.MediaCodec.configure(MediaCodec.java:1882) 在 com.name。 socourt.controller.FragmentPhoneCameraNew.startPreview(FragmentPhoneCameraNew.kt:661) at com.name.socourt.controller.FragmentPhoneCameraNew.access$startPreview(FragmentPhoneCameraNew.kt:47) at com.name.socourt.controller.FragmentPhoneCameraNew$mCameraDeviceStateCallback$1.onOpened (FragmentPhoneCameraNew.kt:266) 在 android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:134) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java: 95) 在 android.os.Looper.loop(Looper.java:154) 在 android.os.HandlerThread.run(HandlerThread.java:61)
我认为这是因为我在后台线程中做一些应该在主线程中的事情,反之亦然,但线程处理程序不应该让两个线程通信并防止此类问题吗?
我已经这样做了 2 周了,因为我一直遇到这样的问题,所以我脑子里一片混乱。我设法一个一个地解决它们,但这需要很多时间,但这一次似乎我只是卡住了。
如果问题很简单或者我的代码太乱,我很抱歉,但我是 android 开发新手,camera 2 api 太复杂了,尤其是当我必须实现连续捕获功能时。
我不得不将文件中的代码和 logcat 上传到我的 googleDrive,因为它太大而无法在主题正文中作为问题发布,我希望这不是问题。所以这里是链接https://drive.google.com/file/d/1c_soL_S37ALxSoazNfEJTx9gcDs82ePG/view?usp=sharing
java - 如何在 grafika 的连续捕获中添加音频
您好,我正在使用 google 的 grafika 库来创建自定义相机应用程序,到目前为止,除了在视频中添加音频之外,我设法完成了我想做的所有事情。我在互联网上搜索了一个类似的例子,但我找不到我的问题的答案。我尝试为音频添加另一个 mediaCodec,也为音频添加一个 CircularEncoderBuffer,并为音频 mediaCodec 和音频缓冲区添加另外 2 个参数到 EncoderThread 无济于事。当我尝试开始录制时,我收到了十几个帧,缓冲区耗尽了它们,但之后应用程序冻结而没有错误,我无法返回上一个屏幕或以任何方式退出预览。
有没有人尝试过在连续捕获中添加音频?我是否需要音频 mediaCodec 的另一个线程,如果需要,之后如何混合视频和音频?我是否需要第二个 CircularEncoderBuffer 或者我应该只使用 1 来存储音频和视频?
我不确定我的代码的哪一部分对你们有用,所以我现在不会添加任何内容,但如果你告诉我你需要什么,我会立即用代码示例更新我的问题。
java - 同时缩放和旋转纹理变换矩阵
从 grafika 示例开始,我试图将相机流捕获到文件。在编码之前,我需要应用一些转换:
- 旋转图像
我可以做这个:
- 应用比例和平移
图像沿一个轴压缩。所以我必须沿着那个轴缩放,而不是平移一点,以便我们看到中间部分。同样,我可以这样做:
翻译是为了在最终结果中获得“中心裁剪”,因为编码器只会捕获在给定视口中绘制的内容。
但是,我在将这两个操作结合在一起时迷失了方向。我在这上面花了几个小时,而我的研究并没有帮助。任何人都可以解决这个问题吗?