MV 特效素材制作要求
MV 特效素材制作要求:
基本要求:
- 分辨率可用 480x480, 480x854,544x960等,决定合成视频的分辨率
- 帧率建议使用 30帧/秒
- 特效视频格式 .mp4。考虑跨平台以及视频体积,不建议使用 .mov
- 特效视频的时长(单位:秒)决定合成视频的时长(单位:秒)
对于部分区域为透明的 MV 特效视频,素材制作要求:
- 配备1个黑白和1个彩色视频
- 黑白视频中视频帧只有纯黑、纯白2种颜色。每一帧中纯黑像素点对应彩色视频的透明区域,纯白像素点对应彩色视频的非透明区域,视频格式为.mp4
- 彩色视频,即视频特效期望的效果,透明区域用纯黑色表示,其它非透明区域可以使用包括纯黑色在内的任意颜色,视频格式为 .mp4
- 黑白视频与彩色视频的帧率、分辨率必须相同
- 黑白视频只带视频数据,无音频数据
- 彩色视频在带有视频数据外,音频数据可有可无
- 不建议使用 .mov 视频格式。缺点在于不利于跨平台编解码和播放处理,视频体积大
6.3.10 添加静态贴图
-
PLImageView imageView = new PLImageView(this);
-
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
-
imageView.setImageBitmap(bitmap);
-
// 添加贴图
-
mShortVideoEditor.addImageView(imageView);
-
// 设置贴图的显示时间段为 0 到 3000 毫秒
-
mShortVideoEditor.setViewTimeline(imageView, 0, 3000);
-
// 删除贴图
-
mShortVideoEditor.removeImageView(imageView);
6.3.11 添加涂鸦
-
PLPaintView paintView = new PLPaintView(this, width, height);
-
//设置画笔颜色
-
paintView.setPaintColor(color);
-
//设置画笔尺寸
-
paintView.setPaintSize(size);
-
//撤销上一步操作
-
paintView.undo();
-
//清除所绘制的涂鸦
-
paintView.clear();
-
//设置画笔是否可绘制
-
paintView.setPaintEnable(false);
-
//添加涂鸦
-
mShortVideoEditor.addPaintView(paintView);
-
//设置涂鸦的显示时间段为 0 到 3000 毫秒
-
mShortVideoEditor.setViewTimeline(paintView, 0, 3000);
-
//删除涂鸦
-
mShortVideoEditor.removePaintView(paintView);
6.3.12 多重音频混合
注意:** “多重音频混合”与“音频混合”为互斥功能,不支持同时使用! **
-
//设置主音频文件
-
PLMixAudioFile mainMixAudioFile = new PLMixAudioFile(mMp4path);
-
mShortVideoEditor.addMixAudioFile(mainMixAudioFile);
-
//添加第一个混音音频文件
-
PLMixAudioFile audioFile1 = new PLMixAudioFile(audioPath1);
-
audioFile1.setOffsetInVideo(firstMixingOffsetMs * 1000);//视频中开始混音的起始位置
-
audioFile1.setDurationInVideo(firstMixingDurationMs * 1000);//视频中混音时长
-
audioFile1.setVolume(0.5);//混音音量
-
mShortVideoEditor.addMixAudioFile(audioFile1);
-
//添加第二个混音音频文件
-
PLMixAudioFile audioFile2 = new PLMixAudioFile(audioPath2);
-
audioFile2.setOffsetInVideo(secondMixingOffsetMs * 1000);//视频中开始混音的起始位置
-
audioFile2.setDurationInVideo(secondMixingDurationMs * 1000);//视频中混音时长
-
audioFile2.setVolume(0.8);//混音音量
-
mShortVideoEditor.addMixAudioFile(audioFile2);
-
//删除第二个混音音频文件
-
mShortVideoEditor.removeMixAudioFile(audioFile2);
6.4 视频剪辑
6.4.1 创建剪辑对象
-
mShortVideoTrimmer = new PLShortVideoTrimmer(getApplicationContext(), videoPath, outputpath);
6.4.2 视频帧
获取视频帧并展示给用户,帮助其选取剪辑范围。
-
// true 限定为关键帧,false 为所有视频帧
-
boolean keyFrame = false;
-
-
// 获取视频帧总数
-
mShortVideoTrimmer.getVideoFrameCount(keyFrame);
-
-
// 通过索引获取视频帧
-
mShortVideoTrimmer.getVideoFrameByIndex(index, keyFrame);
-
-
// 通过时间戳获取视频帧
-
mShortVideoTrimmer.getVideoFrameByTime(timestampInMs, keyFrame);
6.4.3 指定范围剪辑
-
// beginMs 和 endMs 可参考 从 getKeyFrame() 返回的 PLVideoFrame 中的时间戳
-
mShortVideoTrimmer.trim(beginMs, endMs, saveListener);
6.4.4 设置快速剪辑模式
-
// beginMs 和 endMs 可参考 从 getKeyFrame() 返回的 PLVideoFrame 中的时间戳
-
mShortVideoTrimmer.trim(beginMs, endMs, TRIM_MODE.FAST, saveListener);
6.5 视频转码
6.5.1 创建转码对象
-
mShortVideoTranscoder = new PLShortVideoTranscoder(getApplicationContext(), videoPath, outputpath);
6.5.2 获取源视频信息
获取源视频转码相关信息,并展示给用户,让用户更好地了解源视频的状况。
-
// 获取源视频宽度
-
mShortVideoTranscoder.getSrcWidth();
-
// 获取源视频高度
-
mShortVideoTranscoder.getSrcHeight();
-
// 获取源视频码率
-
mShortVideoTranscoder.getSrcBitrate();
6.5.3 转码
-
mShortVideoTranscoder.transcode(dstWidth, dstHeight, dstBitrate, saveListener);
6.5.4 时光倒流
可使转码后的视频倒置
-
mShortVideoTranscoder.transcode(dstWidth, dstHeight, dstBitrate, true, saveListener);
6.5.5 视频旋转
可使转码后的视频在源视频的基础上旋转某些角度, 角度可为 0, (-)90, (-)180, (-)270
-
mShortVideoTranscoder.transcode(dstWidth, dstHeight, dstBitrate, rotateBy, isReverse, saveListener);
6.5.6 降帧率转码
通过设置输出视频的帧率上限,可使得输出视频的帧率不超过设定值,实现降帧率转码
-
mShortVideoTranscoder.setMaxFrameRate(maxFrameRate);
6.5.7 区域裁剪转码
通过设置指定区域的坐标位置,针对指定的区域进行裁剪转码
-
mShortVideoTranscoder.setClipArea(originPtrX, originPtrY, width, height);