七牛短视频文档

MV 特效素材制作要求

MV 特效素材制作要求:

基本要求:

  • 分辨率可用 480x480, 480x854,544x960等,决定合成视频的分辨率
  • 帧率建议使用 30帧/秒
  • 特效视频格式 .mp4。考虑跨平台以及视频体积,不建议使用 .mov
  • 特效视频的时长(单位:秒)决定合成视频的时长(单位:秒)

对于部分区域为透明的 MV 特效视频,素材制作要求:

  • 配备1个黑白和1个彩色视频
  • 黑白视频中视频帧只有纯黑、纯白2种颜色。每一帧中纯黑像素点对应彩色视频的透明区域,纯白像素点对应彩色视频的非透明区域,视频格式为.mp4
  • 彩色视频,即视频特效期望的效果,透明区域用纯黑色表示,其它非透明区域可以使用包括纯黑色在内的任意颜色,视频格式为 .mp4
  • 黑白视频与彩色视频的帧率、分辨率必须相同
  • 黑白视频只带视频数据,无音频数据
  • 彩色视频在带有视频数据外,音频数据可有可无
  • 不建议使用 .mov 视频格式。缺点在于不利于跨平台编解码和播放处理,视频体积大

6.3.10 添加静态贴图

  1. PLImageView imageView = new PLImageView(this);
  2. Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
  3. imageView.setImageBitmap(bitmap);
  4. // 添加贴图
  5. mShortVideoEditor.addImageView(imageView);
  6. // 设置贴图的显示时间段为 0 到 3000 毫秒
  7. mShortVideoEditor.setViewTimeline(imageView, 0, 3000);
  8. // 删除贴图
  9. mShortVideoEditor.removeImageView(imageView);

6.3.11 添加涂鸦

  1. PLPaintView paintView = new PLPaintView(this, width, height);
  2. //设置画笔颜色
  3. paintView.setPaintColor(color);
  4. //设置画笔尺寸
  5. paintView.setPaintSize(size);
  6. //撤销上一步操作
  7. paintView.undo();
  8. //清除所绘制的涂鸦
  9. paintView.clear();
  10. //设置画笔是否可绘制
  11. paintView.setPaintEnable(false);
  12. //添加涂鸦
  13. mShortVideoEditor.addPaintView(paintView);
  14. //设置涂鸦的显示时间段为 0 到 3000 毫秒
  15. mShortVideoEditor.setViewTimeline(paintView, 0, 3000);
  16. //删除涂鸦
  17. mShortVideoEditor.removePaintView(paintView);

6.3.12 多重音频混合

注意:** “多重音频混合”与“音频混合”为互斥功能,不支持同时使用! **

  1. //设置主音频文件
  2. PLMixAudioFile mainMixAudioFile = new PLMixAudioFile(mMp4path);
  3. mShortVideoEditor.addMixAudioFile(mainMixAudioFile);
  4. //添加第一个混音音频文件
  5. PLMixAudioFile audioFile1 = new PLMixAudioFile(audioPath1);
  6. audioFile1.setOffsetInVideo(firstMixingOffsetMs * 1000);//视频中开始混音的起始位置
  7. audioFile1.setDurationInVideo(firstMixingDurationMs * 1000);//视频中混音时长
  8. audioFile1.setVolume(0.5);//混音音量
  9. mShortVideoEditor.addMixAudioFile(audioFile1);
  10. //添加第二个混音音频文件
  11. PLMixAudioFile audioFile2 = new PLMixAudioFile(audioPath2);
  12. audioFile2.setOffsetInVideo(secondMixingOffsetMs * 1000);//视频中开始混音的起始位置
  13. audioFile2.setDurationInVideo(secondMixingDurationMs * 1000);//视频中混音时长
  14. audioFile2.setVolume(0.8);//混音音量
  15. mShortVideoEditor.addMixAudioFile(audioFile2);
  16. //删除第二个混音音频文件
  17. mShortVideoEditor.removeMixAudioFile(audioFile2);

6.4 视频剪辑

6.4.1 创建剪辑对象

  1. mShortVideoTrimmer = new PLShortVideoTrimmer(getApplicationContext(), videoPath, outputpath);

6.4.2 视频帧

获取视频帧并展示给用户,帮助其选取剪辑范围。

  1. // true 限定为关键帧,false 为所有视频帧
  2. boolean keyFrame = false;
  3.  
  4. // 获取视频帧总数
  5. mShortVideoTrimmer.getVideoFrameCount(keyFrame);
  6.  
  7. // 通过索引获取视频帧
  8. mShortVideoTrimmer.getVideoFrameByIndex(index, keyFrame);
  9.  
  10. // 通过时间戳获取视频帧
  11. mShortVideoTrimmer.getVideoFrameByTime(timestampInMs, keyFrame);

6.4.3 指定范围剪辑

  1. // beginMs 和 endMs 可参考 从 getKeyFrame() 返回的 PLVideoFrame 中的时间戳
  2. mShortVideoTrimmer.trim(beginMs, endMs, saveListener);

6.4.4 设置快速剪辑模式

  1. // beginMs 和 endMs 可参考 从 getKeyFrame() 返回的 PLVideoFrame 中的时间戳
  2. mShortVideoTrimmer.trim(beginMs, endMs, TRIM_MODE.FAST, saveListener);

6.5 视频转码

6.5.1 创建转码对象

  1. mShortVideoTranscoder = new PLShortVideoTranscoder(getApplicationContext(), videoPath, outputpath);

6.5.2 获取源视频信息

获取源视频转码相关信息,并展示给用户,让用户更好地了解源视频的状况。

  1. // 获取源视频宽度
  2. mShortVideoTranscoder.getSrcWidth();
  3. // 获取源视频高度
  4. mShortVideoTranscoder.getSrcHeight();
  5. // 获取源视频码率
  6. mShortVideoTranscoder.getSrcBitrate();

6.5.3 转码

  1. mShortVideoTranscoder.transcode(dstWidth, dstHeight, dstBitrate, saveListener);

6.5.4 时光倒流

可使转码后的视频倒置

  1. mShortVideoTranscoder.transcode(dstWidth, dstHeight, dstBitrate, true, saveListener);

6.5.5 视频旋转

可使转码后的视频在源视频的基础上旋转某些角度, 角度可为 0, (-)90, (-)180, (-)270

  1. mShortVideoTranscoder.transcode(dstWidth, dstHeight, dstBitrate, rotateBy, isReverse, saveListener);

6.5.6 降帧率转码

通过设置输出视频的帧率上限,可使得输出视频的帧率不超过设定值,实现降帧率转码

  1. mShortVideoTranscoder.setMaxFrameRate(maxFrameRate);

6.5.7 区域裁剪转码

通过设置指定区域的坐标位置,针对指定的区域进行裁剪转码

  1. mShortVideoTranscoder.setClipArea(originPtrX, originPtrY, width, height);
0.054108s