2015-11-30 5 views
5

カメラでキャプチャされたビデオファイルからフレームを取得しようとしています。 私がそうするように機能を書いて、私は別の時間のループでそれを使用する、フレームごとに100000(マイクロ秒)を受信:getFrameAtTime()は同じフレームを返します

public static Bitmap getVideoFrame(long time) { 
     MediaMetadataRetriever mdr = new MediaMetadataRetriever(); 
     mdr.setDataSource(path); 
     try { 
      return mdr.getFrameAtTime((time),MediaMetadataRetriever.OPTION_CLOSEST); 
     } catch (IllegalArgumentException ex) { 
      ex.printStackTrace(); 
     } catch (RuntimeException ex) { 
      ex.printStackTrace(); 
     } finally { 
      try { 
       mdr.release(); 
      } catch (RuntimeException ex) { 
      } 
     } 

     return null; 
    } 

私は与えられた時間はマイクロ秒でなければなりませんし、私はthat.Noを試みたことを知っています問題は、getFrameAtTime()は常に同じフレームを返します。

+0

1秒= 1_000_000のときに秒のように100_000を使用するため、この問題が発生する可能性があります。 –

答えて

3

同じ問題が発生しましたが、MediaMetadataRetrieverを使用して解決策を見つけることができませんでした。 https://github.com/wseemann/FFmpegMediaMetadataRetriever

はそれが役に立てば幸い:

しかし、私はこの使用していました。

+1

これはありがたいことですが、この問題は2日間続きました。このためのAndroidのAPIは、このような恐ろしい信頼性を持っているとは思いません。 – hiimabear

+0

FFMMRはすべてのアンドロイドデバイスにとって信頼できるものではなく、効率的ではないことを皆に通知しなくてはなりません。 – Mehrdad1373

関連する問題