做出来的例子效果如下:
第一步:集成EpMedia,
步骤在大神的github上都有,地址如下:
https://github.com/yangjie10930/EpMedia
添加时间水印,我的方法是我认为的笨方法,如果有别的好方法,可以告诉我一下。
首先在手机录屏开始的时候记录下开始时间,录屏结束的时候记录下结束时间,
然后把开始时间转换成String字符串,然后在用EpMedia 在视频的指定位置添加文字,让文字显示到时间为一秒。
再把开始时间加一秒,然后重复以上步骤,这样达到添加时间水印的效果。
代码入下:
String str1 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/TTF/msyh.ttf";
EpVideo epVideo = new EpVideo(videoUrl);
outPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/out1.mp4";
//根据开始时间还有视频的长度来添加文字
setText(epVideo, str1, duration);
EpEditor.exec(epVideo, new EpEditor.OutputOption(outPath), new OnEditorListener() {
@Override
public void onSuccess() {
Log.e("aaa", "onSuccess-->");
}
@Override
public void onFailure() {
Log.e("aaa", "onFailure-->");
}
@Override
public void onProgress(float v) {
int i = (int) (v * 100);
Log.e("aaa", "onProgress-->" + i);
}
});
private void setText(EpVideo epVideo, String str1, int duration) {
long start_mm = System.currentTimeMillis();
if (duration > 0) {
for (int i = 0; i < (duration + 1); i++) {
//把时间转换成字符串
String s = setStringDate(start_mm);
start_mm = start_mm + 1000;
epVideo.addText(new EpText(10, 10, 70, EpText.Color.Red, str1, s, new EpText.Time(i, (i + 1))));
}
}
}
注意:
在把时间装换成String字符串的时候,要先根据冒号(:)分割字符串,把冒号(:)使用转义符如下,不然会报错:
String[] split1 = split[1].split(":");
String str = split1[0] + "\\:" + split1[1] + "\\:" + split1[2];
还有就是经过测试发现 那个添加文字的时候 new EpText.Time(3,5),3和5分别代表开始时间 和 结束时间,5不是持续时间。
//参数分别是添加位置的X,Y坐标,文字的字号(单位px),文字颜色,字体文件的路径,内容,Time类为显示的起始时间和结束时间
epVideo.addText(new EpText(10,10,35,"red",ttfPath,text,new EpText.Time(3,5)));
在手机根目录新建一个名为TTF 的文件夹里面放一个为ttf格式的字体。就可以了,添加好时间水印的视屏放在了手机根目录里 名为 out1.MP4.