zoukankan      html  css  js  c++  java
  • IOS 视频缩略图的生成

    使用AVFoundation框架可以生成视频缩略图,用到的类:

    》》AVAsset:

      用于获取多媒体的相关信息,如多媒体的画面和声音等。

    》》AVURLAsset:  

      AVAsset的子类,用于根据NSURL生成AVAsset对象

    》》AVAssetImageGenerator:

      用于截取视频指定帧的动画

    一般步骤:

    1、根据视频的URLchuang见AVURLAsset对象

    2、根据AVURLAsset对象创建AVAssetImageGenerator对象

    3、调用AVAssetImageGenerator对象的copyCGImageAtTime:actualTime:error:来获取该视频指定时间点的视频截图

      第一个参数:指定获取哪个时间点的视频截图,该参数是一个CMTime结构体:(CMTime. value/timescale = seconds)

    typedef struct
    {
        CMTimeValue    value;        /*! @field value The value of the CMTime. value/timescale = seconds. */
        CMTimeScale    timescale;    /*! @field timescale The timescale of the CMTime. value/timescale = seconds.  */
        CMTimeFlags    flags;        /*! @field flags The flags, eg. kCMTimeFlags_Valid, kCMTimeFlags_PositiveInfinity, etc. */
        CMTimeEpoch    epoch;        /*! @field epoch Differentiates between equal timestamps that are actually different because
                                                     of looping, multi-item sequencing, etc.  
                                                     Will be used during comparison: greater epochs happen after lesser ones. 
                                                     Additions/subtraction is only possible within a single epoch,
                                                     however, since epoch length may be unknown/variable. */
    } CMTime;  

        获取CMTime相关函数:

    CMTime CMTimeMake(
                    int64_t value,        /*! @param value        Initializes the value field of the resulting CMTime. */
                    int32_t timescale)    /*! @param timescale    Initializes the timescale field of the resulting CMTime. */
                                __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
    
    CMTime CMTimeMakeWithSeconds(
                    Float64 seconds,      
              int32_t preferredTimeScale)
                     __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);

      第二个参数:获取截图的实际时间点(要用“&”传指针)

      第三个参数:获取错误信息(要用“&”传指针)

  • 相关阅读:
    Linux vim 跳转到指定行
    Linux安装lamp过程中出的问题
    centos 7.4源码安装mysql5.5.20+apache 2.4.29+php5.3.28
    centos install vsftpd常见的错误:vsftpd: refusing to run with writable root inside chroot ()错误
    python join函数
    enumerate函数
    实战项目 1:5 行代码爬取国内所有上市公司信息
    python yield用法理解
    python time模块
    yolov5-OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading "C:Anaconda3libsite-packages orchlibcaffe2_detectron_ops_gpu.dll"
  • 原文地址:https://www.cnblogs.com/zhhl/p/5714752.html
Copyright © 2011-2022 走看看