在预览隐藏的实时视频时获取绿色图像

时间:2019-05-30 15:04:26

标签: android android-camera live-streaming yuv

我想将实时视频从Android手机流传输到Ant Media Server之类的视频流服务器。问题是我在实时视频服务器中获得了绿色图像预览。

我收到错误的代码部分

  1. 我更改了Yasea(适用于Android的实时广播),以便在活动中隐藏摄像机预览(以便可以在任何地方进行记录)。隐藏相机的想法来自[Android隐藏的相机](https://github.com/kevalpatel2106/android-hidden-camera)。
  2. 隐藏摄像机预览后,我在视频流服务器中获得了音频包,但没有得到任何视频帧,这使我意识到必须获取自己的相框并将其发送到直播服务器。因此,我已经在SRSCameraView中实现了Camera.PreviewCallback。
  3. onPreviewFrame(byte[] data, Camera camera)中,我获得了NV21图像数据,并将其转换为YuvImage,如下所示:

    YuvImage yuv = new YuvImage(data, camera.getParameters().getPreviewFormat(), camera.getParameters().getPreviewSize().width, camera.getParameters().getPreviewSize().height, null);
    mGLPreviewBuffer.asIntBuffer().put(convertData2IntBuffer(yuv.getYuvData()));
    mPrevCb.onGetNV21Frame(mGLPreviewBuffer.array(), yuv.getWidth(), yuv.getHeight());
    
  4. 在那之后,我将YuvData放入流媒体的预览缓冲区中,并实现了缓冲区接收器:

    public void onGetNV21Frame(byte[] data, int width, int height) {
        calcSamplingFps();
        if (!sendAudioOnly) {
            mEncoder.onGetYuvNV21Frame(data, width, height, new Rect(0, 0, width, height));
        }
    }
    
  5. mEncoder的代码来自Yasea。
  6. 现在,我在实时流媒体中获得了实时(和隐藏的摄像机)视频(和音频),但是获得了绿色图像,如下所示:

这是我在Ant Media Server中得到的: Green Android Camera Live Stream Preview

请帮助我解决此问题。谢谢。

0 个答案:

没有答案