Как не искать ключевые кадры
Я попытался найти решение для поиска по кадрам (не только по ключевым кадрам) в моем приложении для 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, это может быть решением? Это возможно?подход (я не пробовал!): я слышал что-то о сторонних библиотеках видеоплеера для Android, которые используют
FFMPEG
, Есть ли какая-нибудь библиотека, которая может искать в состоянии паузы и обновлять положение видео на экране?
1 ответ
Вы пробовали https://github.com/wseemann/FFmpegMediaMetadataRetriever?