为啥我不能从 VideoView 播放我的视频?

Posted

技术标签:

【中文标题】为啥我不能从 VideoView 播放我的视频?【英文标题】:Why can't I play my video from VideoView?为什么我不能从 VideoView 播放我的视频? 【发布时间】:2020-12-16 17:52:16 【问题描述】:

我已经非常接近播放视频了,但我仍然遇到问题。这是我来自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_
        android:layout_
        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 工作,甚至可以正确告诉我我选择的视频的长度。一旦我在媒体控制器上点击播放,它就会告诉我视频无法播放。该文件是mp4 文件,所以我认为应该没有问题。知道我哪里出错了吗?感谢您的帮助。

【问题讨论】:

【参考方案1】:

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 构建)而不是视频播放器,这样可以支持广泛的视频和音频容器。

【讨论】:

以上是关于为啥我不能从 VideoView 播放我的视频?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Android 中的 VideoView 需要花费太多时间来加载和播放来自 http 链接的视频?

无法从 openload 播放此视频 VideoView

在 videoView 中播放视频时出现 java.lang.StringIndexOutOfBoundsException:Android v 4.2.1

如何在 VideoView 中使用手势滑动功能播放视频

如何让 VideoView 播放带有 Drive 链接的视频?

如何从 SD 卡播放视频