【问题标题】:How to split video with MediaMetaDataRetriever如何使用 MediaMetaDataRetriever 分割视频
【发布时间】:2013-09-30 13:14:46
【问题描述】:

我在 Android 环境中编程,我想从设备加载一个视频文件,将其分割成帧并使用一些图像处理技术处理每个帧。

为了将视频正确分割成帧数组,我使用 MetaDataRetriever 类,将文件路径作为输入。

我的问题是我不明白如何使用 getFrameAtTime 方法正确拆分文件。特别是,我的代码是:

    MediaMetaDataRetriever media = new MediaMetaDataRetriever();
    media.setDataSource(this.path);
    String durata = media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
    int durata_millisec = Integer.parseInt(durata);
    durata_video_micros = durata_millisec * 1000; 
    durata_secondi = durata_millisec / 1000; 
    String bitrate = media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE);  //numero bit al secondo.

    int fps = 10;
    int numeroFrameCaptured = fps * durata_secondi;
    int i=0;
    while(i<numeroFrameCaptured){
        vettoreFrame[i] = media.getFrameAtTime();
    }

如果 fps 为 10,我应该每秒有 10 帧。所以,在一个 5 秒的文件中,我应该有 50 个捕获的帧。这该怎么做?如何正确编写 while/for 语句以使用 getFramesAtTime 方法捕获所有这些帧?

提前致谢。

【问题讨论】:

    标签: android video split


    【解决方案1】:

    试试这个:

    String durata = media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
    int durata_millisec = Integer.parseInt(durata);
    durata_video_micros = durata_millisec * 1000; 
    durata_secondi = durata_millisec / 1000; 
    String bitrate = media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE);    
    int fps = 10;
    int numeroFrameCaptured = fps * durata_secondi;
    ArrayList<Bitmap> frames;
    frames = new ArrayList<Bitmap>();
    Bitmap bmFrame;
    MediaMetaDataRetriever media = new MediaMetaDataRetriever();
    media.setDataSource(this.path);
    totalFotogramas = durata_millisec/1000*fps; //video duration(micro seg)/1000s*fotogramas/s
    
    for(int i = 0; i < totalFotogramas; i++){
    bmFrame = mediaLowResolution.getFrameAtTime(100000*i , MediaMetadataRetriever.OPTION_CLOSEST);
    

    frames.add(bmFrame);

    }
    

    希望有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      相关资源
      最近更新 更多