创建一个简单的 exoplayer 从 url 流式传输视频

Ank*_*ena 3 android android-video-player android-videoview exoplayer exoplayer2.x

我是 android studio 的初学者。

我正在开发一个简单的应用程序,我必须在其中从 URL 流式传输视频。只是一个简单的 Exoplayer 我尝试了下面的代码,但它不起作用。如果有人知道请帮忙。

XML

<com.google.android.exoplayer2.ui.PlayerView
    android:id="@+id/exoplayer"
    android:layout_width="match_parent"
    android:layout_height="500dp"
    android:foregroundGravity="center"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
Run Code Online (Sandbox Code Playgroud)

爪哇

    PlayerView playerView;
    SimpleExoPlayer simpleExoPlayer;

    simpleExoPlayer = new SimpleExoPlayer.Builder(this).build();
    playerView = findViewById(R.id.exoPlayerView);
    playerView.setPlayer(simpleExoPlayer);
    MediaItem mediaItem = MediaItem.fromUri(my video url);
    simpleExoPlayer.addMediaItem(mediaItem);
    simpleExoPlayer.prepare();
    simpleExoPlayer.play();
Run Code Online (Sandbox Code Playgroud)

Teo*_* G. 11

首先确保您已将互联网权限添加到清单中<uses-permission android:name="android.permission.INTERNET" />。之后,您可以尝试添加android:usesCleartextTraffic="true"到应用程序标记中的清单。

以下是清单文件的示例:

<manifest ...>
  ...
  <uses-permission android:name="android.permission.INTERNET"/>
  ...
  <application
    android:usesCleartextTraffic="true"
    ...>

    ...

  </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

在你的*.java班级中添加这个

simpleExoPlayer = new SimpleExoPlayer.Builder(this).build();
playerView = findViewById(R.id.exoPlayerView);
playerView.setPlayer(simpleExoPlayer);
MediaItem mediaItem = MediaItem.fromUri("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4");
simpleExoPlayer.addMediaItem(mediaItem);
simpleExoPlayer.prepare();
simpleExoPlayer.setPlayWhenReady(true);
Run Code Online (Sandbox Code Playgroud)

setPlayWhenReady(true)当您从 URL 播放视频时,这是必需的。

  • 代表...空白区域 - 或您的数据/内容