Java 如何不寻找关键帧
我试图在我的android应用程序中找到一个逐帧(不仅仅是关键帧)搜索的解决方案Java 如何不寻找关键帧,java,android,video-capture,video-player,Java,Android,Video Capture,Video Player,我试图在我的android应用程序中找到一个逐帧(不仅仅是关键帧)搜索的解决方案 方法:一个简单的android sdk的VideoView: 在这里,我从VideoView的onPreparedListener和pause中获得了一个基本类MediaPlayer的onseekcompleteelistener,在开始播放并移动到首选位置后立即暂停播放。 问题:仅搜索关键帧 方法:MediaMetaRetriever: 我有这样的想法: MediaMetadataRetriever retrie
VideoView
:在这里,我从
VideoView
的onPreparedListener
和pause
中获得了一个基本类MediaPlayer
的onseekcompleteelistener
,在开始播放并移动到首选位置后立即暂停播放。问题:仅搜索关键帧
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
中使用选项时,它会给我一个getFrameAtTime:videoFrame是空的
指针错误。当我不使用此选项时,它将通过关键帧
可能的解决方案:
方法:使用更多关键帧录制视频。如果我在android应用程序中以更高的关键帧速率录制视频,这会是一个解决方案吗?这可能吗
方法(我还没试过!):我听说android视频播放器第三方库使用FFMPEG
。是否有任何库可以在暂停状态下查找并更新屏幕上视频的位置
你试过了吗?你的api完全满足了我的需要!我不是一个在stackoverflow感谢所有人的人,但是这个api救了我的命!!还有一个问题:如何使用来自raw的内容URI或视频?我很高兴听到这一点。我将检查内容IRI和原始资源,并在今天回复您。我添加了对setDataSource(Context ctx,Uri)的支持,您可以将此方法用于内容Uri。很抱歉,库目前不支持原始资源。