我正在尝试抓住相机捕获的帧,
对它们进行编码,最后使用RTP / RTSP发送它们。

为了进行捕获,我使用了stagefright的CameraSource类。
屏幕上的预览(从Java传递过来的界面)很棒。
但是,当我尝试提取帧时,会得到20个字节的帧。

我究竟做错了什么 ?

Size videoSize;
videoSize.width = 352;
videoSize.height = 288;
sp<CameraSource> myCamera = CameraSource::CreateFromCamera(NULL, NULL,
                             1 /*front camera*/, videoSize, 25, mySurface, true);
myCamera->start();

//the following is from a reader thread.
status_t err = OK;
MediaBuffer* pBuffer;
while ((err = myCamera->read(&pBuffer)) == OK)
{
    // if not getting a valid buffer from source, then exit
    if (pBuffer == NULL)
    {
        return;
    }
    else
    {
        LOGD("The Size of the returned buffer is: %d", pBuffer->size() );
    }
    pBuffer->release();
    pBuffer = NULL;
}

最佳答案

您所做的一切都正确,但是Samsung决定不支持您尝试实现的路由。在Galaxy S2(和许多其他三星设备)上使用CameraSource的唯一方法是将其直接连接到硬件编码器。

10-08 18:26