Два производителя одной поверхности - PullRequest
0 голосов
/ 25 апреля 2019

Хорошо, для некоторых это может показаться простым вопросом, но я немного растерялся и все еще учусь. Итак, я учусь кодировать на andriod и изучаю некоторые технические ограничения. Как 2 производителя не могут использовать одну и ту же поверхность.

Я строю телесторатор, используя FFMPEG. Я собираюсь вытащить кадр из видео при нажатии паузы как таковой.

 int currentPosition = myVideoView.getCurrentPosition(); 

            Bitmap bmFrame = mediaMetadataRetriever
                    .getFrameAtTime(currentPosition * 1000);

Теперь это даст мне растровое изображение для создания холста.

Теперь вот моя проблема, из-за которой я как бы потерялся.

Моя поверхность воспроизводит видео и приостанавливается во время захвата кадра. Поверхность не может иметь двух производителей - это мое понимание. Итак, как я могу отобразить растровое изображение и нарисовать его, используя функцию рисования / холста на растровом изображении, пока видео остается в режиме паузы и сохраняет позицию.

Я знаю, что это возможно, но я не понимаю, как это делается.

Это последний шаг к завершению проекта, так как я знаю, как собрать все это вместе в FFMPEG, когда у меня есть позиция, растровое изображение и я знаю холст / краску.

1 Ответ

0 голосов
/ 25 апреля 2019

Вы можете наложить поверхность видео на другую, на которой вы нарисуете то, что хотите.Вы можете добиться этого, используя FrameLayout (вы также можете использовать Relative или ConstraintLayout) с двумя дочерними элементами, что-то вроде этого:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"> 
	
    <VideoView 
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
    <ImageView 
        android:id="@+id/imageView"
        android:layout_width="match_parent"
    	android:layout_height="match_parent"/>
</FrameLayout>

Таким образом, вы будете рисовать в ImageView, и видеообзор не будет затронут.

...