desc:水印代码优化

main
xiaowusky 2 years ago
parent 14eaf30a35
commit 1f3570c11e

@ -29,8 +29,6 @@ public class RtspSurfaceRender2 implements RtspHelper.RtspCallback {
private final Object mBitmapLock = new Object(); private final Object mBitmapLock = new Object();
private Bitmap mVideoBitmap = null; private Bitmap mVideoBitmap = null;
private TxtOverlay mOverlay = null;
private boolean mIsResumed = false; private boolean mIsResumed = false;
private boolean mRecording = false; private boolean mRecording = false;
@ -65,7 +63,6 @@ public class RtspSurfaceRender2 implements RtspHelper.RtspCallback {
holder.addCallback(new SurfaceHolder.Callback() { holder.addCallback(new SurfaceHolder.Callback() {
@Override @Override
public void surfaceCreated(SurfaceHolder holder) { public void surfaceCreated(SurfaceHolder holder) {
mOverlay = new TxtOverlay();
} }
@Override @Override
@ -118,7 +115,7 @@ public class RtspSurfaceRender2 implements RtspHelper.RtspCallback {
@Override @Override
public void onPreviewFrame(final ByteBuffer buffer, int width, int height) { public void onPreviewFrame(final ByteBuffer buffer, int width, int height) {
synchronized (mBitmapLock) { synchronized (mBitmapLock) {
Bitmap overLayBitmap = mOverlay.javaOverlayBm("1111111@2222222@333333"); Bitmap overLayBitmap = TxtOverlay.INSTANCE.buildOverlayBitmap();
mVideoBitmap.copyPixelsFromBuffer(buffer.position(0)); mVideoBitmap.copyPixelsFromBuffer(buffer.position(0));
mVideoBitmap = mergeBitmap(mVideoBitmap, overLayBitmap); mVideoBitmap = mergeBitmap(mVideoBitmap, overLayBitmap);
buffer.clear(); buffer.clear();

@ -1,44 +1,52 @@
package com.yinuo.library.vlc; package com.yinuo.library.vlc
import android.graphics.Bitmap; import android.graphics.Bitmap
import android.graphics.Color; import android.graphics.Color
import android.text.TextUtils; import android.text.TextUtils
import org.easydarwin.util.YUVUtils
import org.easydarwin.util.YUVUtils; import java.text.SimpleDateFormat
import java.text.SimpleDateFormat;
/** /**
* Created by John on 2017/2/23. * Created by John on 2017/2/23.
*/ */
object TxtOverlay {
// 上一次展示的提示文字
private var mLastShowTip = ""
// 待展示的提示文字
private var mToDoShowTip = "1111111@2222222@333333"
public class TxtOverlay { // 外部调用,设置待显示水印文字
fun setShowTip(string: String) {
mToDoShowTip = string
}
String mTip = ""; // 上一次展示的时间
long lastTipUpdateTime = 0; private var lastTipUpdateTime: Long = 0
Bitmap bmp;
SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss"); // 文字生成的bitmap
private var bmp: Bitmap? = null
public TxtOverlay() { // 时间格式化字符串
} private val dateFormat = SimpleDateFormat("yy-MM-dd HH:mm:ss")
public Bitmap javaOverlayBm(String txt) { fun buildOverlayBitmap(): Bitmap? {
if (TextUtils.isEmpty(txt)) { if (TextUtils.isEmpty(mToDoShowTip)) {
return null; return null
} }
long currentTimeMillis = System.currentTimeMillis(); val currentTimeMillis = System.currentTimeMillis()
// 限制获取bitmap的频率保证性能 // 限制获取bitmap的频率保证性能
if (TextUtils.isEmpty(mTip) || (!txt.equals(mTip) || currentTimeMillis - lastTipUpdateTime > 1000)) { if (TextUtils.isEmpty(mLastShowTip) || mToDoShowTip != mLastShowTip || currentTimeMillis - lastTipUpdateTime > 1000) {
// 记录更新时间和上一次的文字 // 记录更新时间和上一次的文字
lastTipUpdateTime = currentTimeMillis; lastTipUpdateTime = currentTimeMillis
mTip = txt; mLastShowTip = mToDoShowTip
// 文字转bitmap // 文字转bitmap
bmp = YUVUtils.generateBitmap(dateFormat.format(lastTipUpdateTime) + "@" + txt, 40, Color.WHITE); bmp = YUVUtils.generateBitmap(
dateFormat.format(lastTipUpdateTime) + "@" + mToDoShowTip, 40, Color.WHITE
)
// 缩放旋转bitmap // 缩放旋转bitmap
// bmp = YUVUtils.rotateImage(bmp, 0); // bmp = YUVUtils.rotateImage(bmp, 0);
} }
return bmp; return bmp
} }
} }
Loading…
Cancel
Save