首页 > 解决方案 > CameraX 与 MediaCodec

问题描述

我正在构建一个视频流应用程序,它将实时将录制的视频发送到网络。

我想使用 CameraX API(是的,我知道它是实验性的)并使用 MediaCodec 将视频流实时转换为一些编解码器,然后获取输出并将其发送。

我尝试为此使用预览用例:preview.setOnPreviewOutputUpdateListener将 aPreview.PreviewOutput作为参数传递给侦听器。我可以使用以下方法从中提取表面纹理:output.getSurfaceTexture()

preview.setOnPreviewOutputUpdateListener(
                (Preview.PreviewOutput output) -> 
                        mSurfaceTexture = output.getSurfaceTexture());

MediaCodec 为我提供了一个Surface我可以写入的内容,但是我找不到任何有效的方法来复制mSurfaceTextureinto的内容mediaCodec.createInputSurface()

有没有办法在不弄乱OpenGL的情况下做到这一点?或者以任何其他方式将来自 CameraX 捕获的数据传递到 MediaCodec(ImageAnalysis、VideoCapture)?

标签: androidcameraandroid-cameraandroidxandroid-camerax

解决方案


推荐阅读