Skip to content

video_range

zanxiaofei edited this page Sep 5, 2017 · 2 revisions

短视频时长裁剪功能说明

通过SDK的setEditPreviewRanges接口可以轻松完成视频的时长裁剪

另外为了丰富裁剪部分的功能实现,SDK还提供了获取缩略图、seek等接口,这些接口在Demo中均有示例 详细参考Demo中EditActivity中的video range部分

1. 设置裁剪区间,并循环预览:

setEditPreviewRanges(long startTime, long endTime, bool immediately)

/**
 * 调用此接口时, 需注意:
 * 1. startTime和endTime中必有一值大于0
 * 2. 当endTime大于0时, 其值必须大于startTime
 * 当以上任一条件不满足时设置无效
 * @param startTime 起始播放时间点, 单位为毫秒(MS)
 * @param endTime 结束播放时间点, 单位为毫秒(MS)
 * @param immediately 裁剪是否在预览立即生效
 */
public void setEditPreviewRanges(long startTime, long endTime, bool immediately)  

Demo中裁剪视频时长的示例参考以下几个类:

  • VideoRangeSeekBar:用于裁剪的seekbar
  • ThumbnailMask:被裁剪掉的区域显示View
  • RangeThumb:用于裁剪的按钮View

裁剪SeekBar的初始化参考Demo中initSeekBar()

2. 获取视频的缩略图:

getVideoThumbnailAtTime(long seekTime, int width, int height)

/**
 * @brief 获取视频的缩略图,可设置缩略图的输出宽高以及所需缩略图的具体时间点
 *
 * @param url 视频地址
 * @param seekTime 单位: 毫秒(MS)
 *                 该值为0,则以视频首帧为缩略图
 *                 若大于0,则会取离该时间点最近的一个关键帧为缩略图
 *                 该值大于视频时长时,以视频首帧为缩略图
 * @param width 输出缩略图的宽,0时按照原始视频分辨率输出
 * @param height 输出缩略图的高,0时按照原始视频分辨率输出
 *
 * @return 缩略图
 */
public Bitmap getVideoThumbnailAtTime(String url, long seekTime, int width, int height)

Demo中缩略图的获取和显示示例参考以下几个类:

  • VideoThumbnailTask:异步获取缩略图
  • VideoThumbnailInfo:缩略图的数据类
  • VideoThumbnailAdapter:加载缩略图的Adapter
  • HorizontalListView:显示缩略图的横向ListView

缩略图的初始化参考Demo中函数initThumbnailAdapter()

3. 另提供以下几个方法获取辅助信息:

/**
 * seek到指定的位置播放预览  
 * @param seek to seek的预览位置(MS)
 */
public void seekEditPreview(long seekto)  
/**
 * 获取当前preview的位置   
 * @return 当前preview的位置(MS)
 */
public long getCurrentPosition()  
/**
 * 获取原始的文件时长   
 * @return 原始文件时长(MS)
 */
public long getEditDuration(o)  
Clone this wiki locally