无法在 VideoView 中播放视频 - 为什么?

Can't play video in VideoView - why?

我正在尝试在 android 中播放 VideoView 中的视频,但它总是出现 ( 1 -2147483648 ) 错误。

起初,我尝试从 URL 播放,但没有效果,所以我下载了视频,将其保存在 raw 文件夹中并尝试播放,但仍然无法播放。 当我用谷歌搜索错误 ( 1 -2147483648 ) 时,它说这个错误是由于 URL 不正确或格式不兼容等问题造成的,但视频是 .mp4 和 H264 编解码器。 为了播放视频我还应该考虑什么?

//activity

video_view.setMediaController(MediaController(上下文))

    val videoPath="android.resource://" + context!!.packageName+ "/" + R.raw.howappvideo
    video_view.setVideoURI(Uri.parse(videoPath))
    video_view.requestFocus()
    video_view.setOnPreparedListener {
        Log.i("SeeAllFragment","video is prepared")
        try{
            video_view.start()
        }catch (e:Exception){
            Log.i("SeeAllFragment","error while playing ${e.printStackTrace()}")
        }
    }
    video_view.setOnCompletionListener { mp ->
        toast("video completed")
        mp!!.release()
    }
    video_view.setOnErrorListener { mp, what, extra ->
        Log.i("SeeAllFragment","error while loading video $what $extra ")
        true
    }

it says that this error occurs due to issues like incorrect URL or incompatible format but the video is .mp4 with the H264 codec.

=> 原因是 VideoView 在编解码器和其他功能方面没有那么强大和可扩展。

我建议使用 ExoPlayer 库。

VideoView 无法播放视频有多种原因,其中一个原因是当您使用 iPhone、摄像机等其他设备进行录制时。它们的格式不同可能不支持的视频,也可能不支持编解码器。在这种情况下,当我们开发解决方案并涉及 android/iPhone/TV 或其他媒体时,我们会在后端实施代码以维护单个编解码器,这就是我们保持与所有设备的兼容性的方式。