2014-01-23 71 views
3

我試圖找到一個解決方案,以尋求在我的android應用程序中逐幀(而不是關鍵幀)的幀。如何不尋求關鍵幀

  1. 的方法:android sdk的簡單VideoView
    在這裏,我從VideoViewonPreparedListenerpause播放後立即開始,並移動到最佳位置得到了基類MediaPlayeronSeekCompleteListener
    問題:只尋求關鍵幀!

  2. 方法:MediaMetaRetriever: 我有這樣的事情:

    MediaMetadataRetriever retriever; 
    long Position; 
    ImageView video; 
    TextView lbPosition; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    
        video = (ImageView)findViewById(R.id.imVideo); 
        lbPosition = (TextView)findViewById(R.id.lbPosition); 
        bnTake = (Button)findViewById(R.id.bntake); 
        retriever.setDataSource(this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.vid)); 
    
        video.setOnClickListener(new ImageView.OnClickListener() { 
         @Override 
         public void onClick(View arg0) { 
          Position += 100000; 
          Bitmap frame = retriever.getFrameAtTime(Position, MediaMetadataRetriever.OPTION_CLOSEST); 
          video.setImageBitmap(frame); 
          lbPosition.setText(String.valueOf(Position)); 
         }    
        }); 
    
        bnTake.setOnClickListener(new Button.OnClickListener() { 
         @Override 
         public void onClick(View arg0) { 
          Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
          startActivityForResult(takeVideoIntent, 123123); 
         } 
        }); 
    } 
    

當我使用OPTION_CLOSESTSretriever.getFrameAtTime它給了我一個getFrameAtTime: videoFrame is a NULL指針錯誤。當我不使用這個選項時,它通過關鍵幀。

也許可能的解決方案:

  1. 辦法:用更關鍵幀錄製視頻。如果我在我的android應用程序中錄製更高的keyframe rate視頻,這可能是一種解決方案嗎?這可能嗎?

  2. 方法(我還沒有試過!):我聽說過一些使用FFMPEG的android視頻播放器第三方庫。是否有任何庫可以在暫停狀態下查找並更新屏幕上視頻的位置?

回答

1
+1

你api完全滿足我的需求!我不是一個感謝所有人在stackoverflow,但這api救了我的生命!還有一個問題:如何從原始使用內容uris或視頻? – user2737037

+0

我很高興聽到這個消息。我將重新檢查虹膜和原始資源的內容,並在今天回覆您。 –

+0

我添加了對setDataSource的支持(Context ctx,Uri uri)您可以將此方法用於內容URI。 http://wseemann.github.io/FFmpegMediaMetadataRetriever/apidocs/wseemann/media/FFmpegMediaMetadataRetriever.html#setDataSource(Context,%20Uri)。圖書館此時不支持原始資源,抱歉。 –