ffmpeg解码后的视频帧怎样显示出来

 我来答
蘑菇饭资讯
推荐于2016-07-05 · TA获得超过6万个赞
知道大有可为答主
回答量:1.7万
采纳率:90%
帮助的人:1.2亿
展开全部
贴你一段代码,希望有用
[mw_shl_code=cpp,true]
static Surface* getNativeSurface(JNIEnv* env, jobject jsurface) {
jclass clazz = env->FindClass("android/view/Surface");
if(clazz == NULL){
return NULL;
}
jfieldID field_surface = env->GetFieldID(clazz, ANDROID_VIEW_SURFACE_JNI_ID, "I");//env->GetFieldID(clazz, "mSurface", "I");
if(field_surface == NULL) {
return NULL;
}
return (Surface *) env->GetIntField(jsurface, field_surface);
}

static int initBitmap(SkBitmap *bitmap, int format, int width, int height, bool allocPixels) {
switch (format) {
case PIXEL_FORMAT_RGBA_8888:
bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height);
break;

case PIXEL_FORMAT_RGBA_4444:
bitmap->setConfig(SkBitmap::kARGB_4444_Config, width, height);
break;

case PIXEL_FORMAT_RGB_565:
bitmap->setConfig(SkBitmap::kRGB_565_Config, width, height);
break;

case PIXEL_FORMAT_A_8:
bitmap->setConfig(SkBitmap::kA8_Config, width, height);
break;

default:
bitmap->setConfig(SkBitmap::kNo_Config, width, height);
break;
}

if(allocPixels) {
bitmap->setIsOpaque(true);
//-- alloc array of pixels
if(!bitmap->allocPixels()) {
return -1;
}
}
return 0;
}

int AndroidSurface_register(JNIEnv* env, jobject jsurface) {
__android_log_print(ANDROID_LOG_INFO, TAG, "registering video surface");

sSurface = getNativeSurface(env, jsurface);
if(sSurface == NULL) {
return ANDROID_SURFACE_RESULT_JNI_EXCEPTION;
}

__android_log_print(ANDROID_LOG_INFO, TAG, "registered");

return ANDROID_SURFACE_RESULT_SUCCESS
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式