Случай: мне нужно спроектировать вид, где одно видео должно быть в фоновом режиме, а другое - на переднем плане с прозрачным видом между ними. (Изображение прилагается) просмотр многослойного видео
Моя реализация: я реализовал добавление Android VideoView в фоновом режиме (полноэкранное видео) и Exoplayer на переднем плане (небольшое видео).
XML
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.jumman.videoplayer.player.FullScreenVideoView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
android:id="@+id/VideoView" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black_transparent">
</LinearLayout>
<FrameLayout
android:layout_width="200dp"
android:layout_height="250dp"
android:layout_gravity="center"
android:orientation="vertical"
android:background="@android:color/transparent">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_gravity="center"
android:layout_height="match_parent"
app:use_controller="false"/>
<ImageButton
android:id="@+id/VideoPlayButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:src="@drawable/video_play_button"
android:background="@null"/>
</FrameLayout>
</FrameLayout>
(просмотр видео)
videoView.setVideoPath("https://storage.googleapis.com/exoplayer-test-media-1/mkv/android-screens-lavf-56.36.100-aac-avc-main-1280x720.mkv");
videoView.setOnPreparedListener(
new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
mp.setVolume(0f, 0f);
}
}
);
(просмотр игрока)
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
new DefaultTrackSelector(videoTrackSelectionFactory);
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
playerView.setPlayer(player);
DataSource.Factory dataSourceFactory =
new DefaultDataSourceFactory(this, Util.getUserAgent(this, "Player"));
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ExtractorMediaSource(Uri.parse("https://storage.googleapis.com/exoplayer-test-media-1/mkv/android-screens-lavf-56.36.100-aac-avc-main-1280x720.mkv"),
dataSourceFactory, extractorsFactory, null, null);
player.prepare(mediaSource);
Задача
В приведенной выше реализации мне нужно было предоставить потоковый URL как для VideoView, так и для проигрывателя. Но было бы лучше, если бы я мог смотреть с одного URL, но видео будет воспроизводиться в двух разных режимах. Как я могу подойти к этому, поделитесь, пожалуйста, лучшим решением.