思路:
我的实时视频流需要加水印,我的解决思路是:将水印图片转换成YUV格式,在Camera中onPreviewFrame中将获取到的视频流做一个叠加
1:水印转YUV
//从drawble中获取水印图片
Bitmap bmp1 = BitmapFactory.decodeResource(App.getCtx().getResources(), R.drawable.ic_camera );
//缩小图片
final Bitmap bmp=scaleImage(bmp1,40,40);
//转YUV
final byte[] mark=getYUVByBitmap(bmp);
2:叠加
int startY=100;//水印Y轴的位置
int startX=100;//水印X轴的位置
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
int j=0;
for(int i=startY; i
for(int c=0;c
//去掉PNG水印的黑边
if(mark[j*bmp.getWidth()+c]!=0x10&&mark[j*bmp.getWidth()+c]!=0x80&&mark[j*bmp.getWidth()+c]!=0xeb){
System.arrayco