【短视频SDK】如何获取单视频的缩略图?

获取视频缩略图iOS和Android分别提供一个方法得到一个视频的缩略图,如果需要多张需要开发者自己调用多次即可.

1.Android获取视频缩略图,仅演示单视频缩略图获取方法

核心接口:AliyunIThumbnailFetcher

//1.创建一个AliyunIThumbnailFetcher的实例
AliyunIThumbnailFetcher mThumbnailFetcher = AliyunThumbnailFetcherFactory.createThumbnailFetcher();
//2.添加一个视频源---path为开发者视频的本地路径
mThumbnailFetcher.addVideoSource("path");
//3.设置输出参数
/*
 * @param width 输出宽度
 * @param height 输出高度
 * @param mode 裁剪模式 (目前可以忽略,填任意值,所有的都是从中间裁剪)
 * @param scaleMode 缩放模式 (目前可以忽略,填任意值,只支持裁剪模式,不支持填充模式)
 * @param cacheSize 缓存大小,即缓存的缩略图数量,缓存的图片不需要重新解码取,以达到减少耗时的目的.
*/
mThumbnailFetcher.setParameters(60,60,AliyunIThumbnailFetcher.CropMode.Mediate,ScaleMode.LB, 30);
//4.获取某个时间点的缩略图
mThumbnailFetcher.requestThumbnailImage(times,
new AliyunIThumbnailFetcher.OnThumbnailCompletion() {
public void onThumbnailReady(ShareableBitmap frameBitmap, long time){
    //成功拿到图片的回调frameBitmap.getData()即可拿到一个bitmap
    //需要拿到多张如何做?就在onThumbnailReady这个回调里面再调用一  次requestThumbnailImage传入不一样的时间即可.
}
 public void onError(int errorCode) {
    //出错的回调
}
});
//5.释放
mThumbnailFetcher.release()

注意:目前仅专业版有该接口.如基础版或者是标准版有该需求可以通过MediaMetadataRetriever来获取,单该接口仅能返回关键帧的图片,如果需要获取N张会有重复图片的情况.可耐心等待SDK提供独立的获取缩略图的接口.

public Bitmap getVideoThumbnail(String filePath) {
    Bitmap bitmap = null;
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    try {
        retriever.setDataSource(filePath);
        bitmap = retriever.getFrameAtTime();
    }
    catch(IllegalArgumentException e) {
        e.printStackTrace();
    }
    catch (RuntimeException e) {
        e.printStackTrace();
    }
    finally {
        try {
            retriever.release();
        }
        catch (RuntimeException e) {
            e.printStackTrace();
        }
    }
    return bitmap;
}

2.iOS获取视频缩略图,仅演示单视频缩略图获取方法

iOS因为系统函数就可以直接做到获取非关键帧缩略图,所以我们直接使用AVFoundation获取即可.需要多张图片调用多次即可.

/**
 *  获取视频的缩略图方法
 *
 *  @param filePath 视频的本地路径
 *
 *  @return 视频截图
 */
- (UIImage )getScreenShotImageFromVideoPath:(NSString )filePath{
    UIImage *shotImage;
    //视频路径URL
    NSURL *fileURL = [NSURL fileURLWithPath:filePath];
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:fileURL options:nil];
    AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    gen.appliesPreferredTrackTransform = YES;
    CMTime time = CMTimeMakeWithSeconds(0.0, 600);
    NSError *error = nil;
    CMTime actualTime;
    CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
    shotImage = [[UIImage alloc] initWithCGImage:image];
    CGImageRelease(image);
    return shotImage;
}


本文为【问答合集】阿里视频云常见技术问题汇总——内含技术文档40+ 持续更新中 系列文章之一,如果本文还不能解决你的问题可以在汇总合集中查看,有任何问题也欢迎回复,谢谢.

时间: 2024-08-02 05:23:59

【短视频SDK】如何获取单视频的缩略图?的相关文章

【短视频SDK】如何做到视频原始比例裁剪?

1.概述 目前短视频SDK裁剪视频提供了多种模式.填充模式和裁剪模式.但是demo没有演示裁剪视频原始大小.就会出现几个问题: 如果使用填充模式,设置输出的分辨率是竖屏,如果原始视频是横屏的,就会对视频添加黑边. 如果使用裁剪模式,设置输出的分辨率是竖屏,如果原始视频是横屏的,就会只裁剪视频的部分区域,导致有些细节会丢掉. 于是我们就需要一个做法能裁剪视频的原始大小,以此来解决视频裁剪出现黑边或者是丢掉太多细节的问题. 2 .如何做到裁剪视频原始大小? 2.1 核心接口AliyunICrop(安

php如何获取YouTube视频信息

YouTube的视频地址格式 https://www.youtube.com/watch?v=[VIDEO_ID] 例子:https://www.youtube.com/watch?v=psvkyf3PzjE // 根据video id 获取YouTube视频信息 function getYouTubeInfo($video_id){ $content = file_get_contents("http://youtube.com/get_video_info?video_id=" .

【短视频SDK】Android如何使用硬编硬解?

为什么要使用硬编硬解? 音频和视频编码时有两种选择:软件编码和硬件编码.软编的效果更好但会占用更多的资源,硬编的效果差一些但占用的资源较少. 同样解码也有两种选择:硬件解码和软件解码.硬解的效果相比软解的速度有更大的优势.由于Android设备和系统的多样性,并非每一台设备都直接支持硬编,硬解,正确的使用硬编.硬解可以极大的提高性能. 内部硬编硬解策略? 短视频SDK关于硬编硬解的默认策略是:默认开启硬编,硬解,因为Android的多样性问题为提升阿里云短视频SDK使用硬编硬解的成功率和覆盖率,

短视频SDK基础版、标准版、专业版的差异

1.为什么需要多个版本? 短视频SDK分为三个版本,基础版,标准版和专业版.他们三个版本分辨对应不同的功能,需要三个版本的主要核心原因是针对不同的客户的产品策略不一样,各个版本各有优势. 基础版:虽然不能自定义UI,但是却是最容易集成的SDK,不需要关心业务,SDK一次性解决了所有工作,理论集成时间不超过一天. 标准版:在基础版的基础上能够自定义UI,主要是为了解决部分客户对基础版的UI交互不满意需要修改UI交互的需求. 专业版:整体功能性需求多,且定制性高的客户. 2.核心差异对比 短视频有三

【短视频SDK】如何开启人脸识别做到像faceu一样的人脸动图效果?如何集成第三方人脸识别库?

现如今短视频应用没个人脸识别都不好意思说自己是做短视频的,阿里云深知这个痛点,花了大力气来完成人脸识别的开发,在现在第三方厂家人脸识别都卖几十万的市价基础上免费阿里视频云团队做了一个不算艰难的决定.免费!免费!免费! 短视频SDK目前的人脸识别提供两种方案,一种是直接使用短视频的SDK内部的人脸识别,一种是购买第三方的人脸识别来集成自SDK,本文将会分别讲解这两种方式的集成. 先来看看我们实现的人脸动图的效果: 人脸动图是什么? 现在市面上看到的人脸动图效果在技术上我们通俗的讲分为几个部分: 视

【短视频SDK系列之一】阿里云上线短视频解决方案

相信很多人都已经被从去年年底接开始踵而来的短视频行业融资.战略事件.新品发布刷屏,短视频已经走上了风口浪尖,成为大众用户和行业人士关注的对象. 实际上,互联网的内容行业正在进阶,从文字.图片到视频.直播,再到能填补用户碎片时间的短视频,这是一个趋于互动性.实时性的迭代.而且,4G普及.资费下调.编解码技术进步和移动硬件的品质提升,也为短视频的发展提供了良好客观因素.从产品形态层面看,短视频本身也拥有创作门槛低.内容精炼.易于发酵等属性,更易于传播.综合这几点,短视频创业才如此蓬勃.那作为国内领先

【短视频SDK】合成时长和文件大小对比数据---给参数设置提供参考.

本文之前我们已经有一篇文章针对现在短视频SDK暴露的参数有一个基本解析:----->传送门:对焦模式.裁剪模式.视频质量.分辨率.视频比例.帧率.关键帧间隔等参数解析.做好一个短视频SDK的核心我们认为有几个要点:清晰度,稳定性,合成速度.开发者理解了这些参数的意义之后,那么到底怎么样选择参数呢?今天我们以数据的形式来展示目前阿里云短视频SDK能够达到什么程度,以方便产品和开发同学选择怎么样的参数. 一.测试准备 1.使用SDK:短视频SDK(Android端) v3.3.2版本 2.根据CPU

【短视频SDK】如何导入Android的AAR?动态库so文件到底怎么样放呢?

开发者在拿到短视频Android的SDK的时候会有些觉得不太一样,为什么SDK提供的是AAR文件和几个so文件呢?我们常见的SDK不是都是jar包吗?文本试图将AAR是什么,如何导入出现的问题进行一个归纳总结,希望开发者读完能够解决这种类型的问题. 1.什么是AAR文件?如何导入AAR文件? 1.1 什么是AAR文件? 开发者在开发的时候大家都遵循组件化的思路写代码,比如我们在写一个圆形的自定义组件的时候,这个组件是一个独立的组件,但是他可能不仅仅包含Java代码,还有很多资源甚至是底层so文件

【短视频SDK】 如何实现变速录制做一个像抖音、muse这样的短视频应用

之前我们发了一个关于阿里云短视频SDK上线前置变速录制+音乐的博文见:阿里云首推音乐变速短视频SDK,上线抖音 freestyle只需1步.但是具体如何做呢?看起来这么高大上的功能使用SDK集成简单吗? 接口简析 上面说了所谓的抖音特效事实上我们理解分为两个功能点:变速录制+录制时播放并添加背景音乐.对应到SDK中如何设置呢? 变速录制:变速录制事实上就是希望感官上看到的视频是速度变快的,且能够卡主音乐的时间点以达到快播的效果.开发者仅需要设置录制速率即可 录制时播放音乐并添加音乐:需要根据设置