2012-10-26 58 views
1
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检索视频帧

MediaMetadataRetriever getFrameAttime failed to retrieve video frames

对此的任何输入?

回答

0

对于获取数据源,你可以使用:

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