我试图找到一个解决方案来在我的 Android 应用程序中逐帧查找(不仅仅是关键帧)。
方法:简单的VideoView
of the android sdk
:
这里我有一个onSeekCompleteListener
基类的MediaPlayer
来自onPreparedListener
of VideoView
and pause
开始播放并移动到首选位置后立即播放。
Problem:仅寻求关键帧!
-
方法: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
in retriever.getFrameAtTime
它给了我一个getFrameAtTime: videoFrame is a NULL
指针错误。当我不使用此选项时,它会遍历关键帧。
也许可能的解决方案:
方法:录制具有更多关键帧的视频。如果我用更高的分辨率录制视频keyframe rate
在我的 Android 应用程序中,这可以是一个解决方案吗?这可能吗?
方法(我没有尝试过!):我听说过一些用于 android 的视频播放器 3rd 方库,它使用FFMPEG
。是否有任何库可以在暂停状态下查找并更新屏幕上视频的位置?
你有没有尝试过FFmpeg媒体元数据检索器 https://github.com/wseemann/FFmpegMediaMetadataRetriever?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)