两名生产者一个表面

时间:2019-04-25 11:54:10

标签: android surface producer

好吧,对于某些人来说,这似乎是一个简单的问题,但是我有点迷茫,仍然在学习。 因此,我正在学习在Andriod上编码,并且正在学习一些技术限制。就像两个生产者不能共享相同的曲面。

我正在使用FFMPEG构建电视稳定器。 当我按一下暂停时,我将从视频中拉出帧。

 int currentPosition = myVideoView.getCurrentPosition(); 

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

现在,这将为我提供一个位图以在其上做画布。

现在这是我的问题,我有点迷失了。

我的表面正在播放视频,并在抓取框架时暂停。表面上不能有两个生产者是我的理解。因此,当视频保持暂停并保持位置不变时,如何使用位图上的绘画/画布功能显示位图并在其上进行绘制。

我知道这是可能的,但我不知道它是怎么做到的。

这是完成项目的最后一步,因为一旦知道位置,位图并且知道了画布/绘画,我就知道如何将它们全部放到FFMPEG上。

1 个答案:

答案 0 :(得分:0)

您可以在视频表面上覆盖另一个表面,在其中绘制所需的内容。 您可以通过将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并且videoView不会受到影响。