2014-01-23 22 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)。图书馆此时不支持原始资源,抱歉。 –