【发布时间】:2014-02-14 15:07:46
【问题描述】:
我试图在我的 Android 应用程序中找到一种逐帧(不仅是关键帧)搜索的解决方案。
方法:
VideoView的简单android sdk:
在这里,我从VideoView和pause的onPreparedListener和pause中得到了基类MediaPlayer的onSeekCompleteListener,播放后立即开始播放并移动到首选位置。
问题:只寻找关键帧!-
方法:
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); } }); }
当我在retriever.getFrameAtTime 中使用OPTION_CLOSESTS 时,它会给我一个getFrameAtTime: videoFrame is a NULL 指针错误。当我不使用此选项时,它会通过关键帧。
可能的解决方案:
方法:录制具有更多关键帧的视频。如果我要在我的 android 应用程序中录制具有更高
keyframe rate的视频,这可能是一个解决方案吗?这可能吗?方法(我没有尝试过!):我听说过一些使用
FFMPEG的 android 视频播放器 3rd 方库。是否有任何库可以在暂停状态下查找并更新视频在屏幕上的位置?
【问题讨论】:
标签: java android video-capture video-player