Как не искать ключевые кадры

Я попытался найти решение для поиска по кадрам (не только по ключевым кадрам) в моем приложении для Android.

  1. подход: простой VideoView из android sdk:
    Здесь у меня есть onSeekCompleteListener базового класса MediaPlayer от onPreparedListener из VideoView а также pause Воспроизведение сразу после запуска и переместилось в предпочтительное положение.
    Проблема: стремится только к ключевым кадрам!

  2. подход: 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 ошибка указателя. Когда я не использую эту опцию, она проходит через ключевые кадры.

Возможно возможные решения:

  1. подход: записывать видео с большим количеством ключевых кадров. Если бы я записал видео с более высоким keyframe rate в моем приложении для Android, это может быть решением? Это возможно?

  2. подход (я не пробовал!): я слышал что-то о сторонних библиотеках видеоплеера для Android, которые используют FFMPEG, Есть ли какая-нибудь библиотека, которая может искать в состоянии паузы и обновлять положение видео на экране?

1 ответ

Решение
Другие вопросы по тегам