# android 使用ffmpeg 将avframe yuv 成avframe rgb ## 设置视频转换参数 ```java img_convert_ctx = sws_getContext( 1440, //源视频宽度 1088, //源视频高度 AV_PIX_FMT_YUV420P, //源视频格式 720, //输出视频宽度 540, //输出视频高度 AV_PIX_FMT_RGB24, //输出视频格式 SWS_POINT, //视频转码算法 null, //额外参数1 null, //额外参数2 (DoublePointer) null //额外参数3 ); ``` ## 转换数据 ```java sws_scale( img_convert_ctx, //SwsContext *swsContext 转换上下文 m_pFrame.data(), //源视频数据 m_pFrame.linesize(), //源视频每行数据长度 0, //源图像数据数组处理的索引值 , 从 0 开始计数 , 一般是 0 m_pCodecCtx.height(), //源视频高度即有多少行数据 m_pFrameRGB.data(), //目标视频数据 m_pFrameRGB.linesize() //目标视频每行有多少数据 ); ``` ## avframe rgb 转 mat ```java Mat mat = new Mat(1080, //图片高度 1440, //图片宽度 CvType.CV_8UC3, //图片格式 m_pFrameRGB.data(0).asBuffer(), //avframe 数据 m_pFrameRGB.linesize(0) //数据每行长度 ); ```