首页 > 解决方案 > Android Videoview 不显示 mp4

问题描述

Videoview 只是在某些设备上播放黑屏。

例如:在 Pixel 2 设备上流畅播放。但是三星SM-T395只有黑屏

如何使其在所有设备上兼容?

override fun onCreate(savedInstanceState: Bundle?) {
    ---
    videoView!!.setMediaController(null)
    videoView?.setOnCompletionListener {
        ...
    }
}

public override fun onResume() {
    super.onResume()

    val uri = Uri.parse("android.resource://" + packageName + "/" + R.raw.asd)
    videoView?.setVideoURI(uri)
    videoView?.setMediaController(mediaController)
    //mediaController?.setAnchorView(videoView)
    videoView?.requestFocus()
    videoView?.start()
}

XML:

<VideoView
    android:id="@+id/video_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

标签: androidandroid-studioandroid-videoviewandroid-video-player

解决方案


我遇到了同样的问题,并用上面接受的解决方案加上这个来解决它:

  @Override
  public void onPrepared(MediaPlayer mp) {
    mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
      @Override
      public boolean onInfo(MediaPlayer mp, int what, int extra) {
        Log.d(TAG, "onInfo, what = " + what);
        if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
          // video started; hide the placeholder.
          placeholder.setVisibility(View.GONE);
          return true;
        }
        return false;
      }
    });

我认为 onPrepared 只是意味着视频已准备好播放,但并不意味着视频开始播放。如果在 onPrepared 中隐藏占位符,屏幕仍然显示黑屏。


推荐阅读