2012-10-26 161 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");