【问题标题】:MediaMetadataRetriever getFrameAtTime to retrieve video frameMediaMetadataRetriever getFrameAtTime 检索视频帧
【发布时间】:2012-10-26 13:15:35
【问题描述】:
    private void sample(){
        int FRAME_BYTES=326;
        int FRAMESMAX=36;
        String subFolder="media";
        String mediafileName="sample.mp4";
        MediaMetadataRetriever mediaMetadata=new MediaMetadataRetriever();

        try{
            AssetFileDescriptor afd=getApplicationContext().getAssets().openFd(subFolder+File.separator+mediaFileName);
            ;


            mediaMetadata.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

            Bitmap frame=null;
            for(int currentFrame=0;currentFrame<FRAMESMAX; currentFrame++){

                if(currentFrame<=0){ 
                    frame = mediaMetadata.getFrameAtTime();
                }else{
                    frame =   mediaMetadata.getFrameAtTime(FRAME_BYTES*currentFrame*1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC );
                    //currentFrame++;
                }
                // do some thing with frame
            }
        }catch(Exception e){
            Log.i(TAG, "  unable to get file descriptor of the frame"+e.toString());
        }
    }
}

我能够在模拟器和其他设备上从 mp4 媒体文件中读取帧,但三星 Galaxy S III 抛出错误提示

MediaMetadataRetriever getFrameAttime failed to retrieve video frames.

对此有何意见?

【问题讨论】:

    标签: android


    【解决方案1】:

    要获取数据源,可以使用:

    mediaMetadata.setDataSource(Environment.getExternalStorageDirectory().getPath()+"your_folder/your_file");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多