我试图找到一个解决方案,在我的Android应用程序中逐帧搜索(不仅仅是关键帧)。
方法:VideoView
的简单android sdk
:
在onSeekCompleteListener
MediaPlayer
onPreparedListener
和VideoView
播放后,我立即获得pause
基类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_CLOSESTS
当我在retriever.getFrameAtTime
中使用getFrameAtTime: videoFrame is a NULL
时,它会给我一个keyframe rate
指针错误。当我不使用此选项时,它会通过关键帧。
也许是可能的解决方案:
方法:使用更多关键帧录制视频。如果我在我的Android应用中录制更高FFMPEG
的视频,这可能是一个解决方案吗?这可能吗?
方法(我还没试过!):我听说过一些使用{{1}}的Android视频播放器第三方库。是否有任何库可以在暂停状态下搜索并更新屏幕上的视频位置?