首页 > 安卓 preview 的 callback机制问题

安卓 preview 的 callback机制问题

请问一下我在安卓camera的回调中获得视频数据,然后通过安卓的MediaCodec 编码为h.264数据,之后经过一些不耗时的处理,都在第一个线程中做的。

        Camera.PreviewCallback() { 
        @Override 
        public void onPreviewFrame(byte[] data, Camera camera) {
            /*我在这里进行的编码操作,以及其他操作*/
        }

请问一下如果我的编码工作比较耗时间,camera会等待我转码完成之后(等待callback执行完) 再给我发采集到的图像数据,还是有什么缓存机制,onPreviewFrame()是从缓存(如队列)中拿到的数据???
请有经验的朋友指教,多谢!!


首先视频数据的获取是有帧数的,取决于你是要30帧,还是60帧
理论上30帧视频的话,没隔33ms会触发一次callback
如果callback 33ms之内没有执行完成,会先等callback执行完,然后再等下一个callback信号过来
但这样就产生了丢帧的情况
建议不要再previewcallback里面执行耗时操作,多个buffer子线程操作,或者AsyncTask来做

【热门文章】
【热门文章】