为什么我不能从videoview播放我的视频?

gt0wga4j  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(954)

我已经非常接近让我的视频播放,但我仍然遇到了一个问题。这是我的密码 MainActivity.java :

public void my_vid(View view){
setContentView(R.layout.my_vid);
        VideoView vid = findViewById(R.id.video_view);
        String vid_path = "/sdcard/Download/Track_horizontal_plane.mp4";
        Uri uri = Uri.parse(vid_path);
        vid.setVideoURI(uri);
        MediaController mediaController = new MediaController(this);
        vid.setMediaController(mediaController);
        mediaController.setAnchorView(vid);

    }

以下是我的相关布局:

<VideoView
        android:id="@+id/video_view"
        android:layout_width="411dp"
        android:layout_height="667dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

最后,这里是我得到的错误:

2020-12-16 12:40:15.204 25622-25622/com.android.choice D/MediaPlayerNative: getMetadata
2020-12-16 12:40:26.286 25622-25654/com.android.choice E/MediaPlayerNative: error (100, 2)
2020-12-16 12:40:26.287 25622-25622/com.android.choice E/MediaPlayer: Error (100,2)
2020-12-16 12:40:26.287 25622-25622/com.android.choice D/VideoView: Error: 100,2
2020-12-16 12:40:26.302 25622-25654/com.android.choice E/MediaPlayerNative: error (1, -2147479551)
2020-12-16 12:40:26.401 25622-25622/com.android.choice E/MediaPlayer: Error (1,-2147479551)
2020-12-16 12:40:26.401 25622-25622/com.android.choice D/VideoView: Error: 1,-2147479551

当我打开包含videoview的内容布局时,mediacontroller可以工作,甚至可以正确地告诉我所选视频的长度。我一按mediacontroller上的play,它就告诉我无法播放视频。文件是一个 mp4 文件,所以我认为应该没有问题。知道我哪里出错了吗?谢谢你的帮助。

dzjeubhm

dzjeubhm1#

1.请确保从硬编码字符串解析uri是正确的。如果您尝试使用实际的uri,可能会更好。在这里你可以看到一个从画廊获取视频的例子。

fun chooseVideoFromGallery() {
    val intent = Intent()
    intent.type = "video/mp4"
    intent.action = Intent.ACTION_GET_CONTENT
    startActivityForResult(
        Intent.createChooser(intent, "Select Video"),
        REQUEST_TAKE_GALLERY_VIDEO
    )
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == REQUEST_TAKE_GALLERY_VIDEO) {
            val uri: Uri? = data!!.data

        }
    } 
}

2.如果问题不在uri上,那么最好使用exo播放器(由google构建)而不是视频播放器,这样可以支持广泛的视频和音频容器。

相关问题