【问题标题】:Can't play video in VideoView - why?无法在 VideoView 中播放视频 - 为什么?
【发布时间】:2019-09-10 06:08:08
【问题描述】:

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

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

//活动

video_view.setMediaController(MediaController(context))

    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
    }

【问题讨论】:

    标签: android android-videoview


    【解决方案1】:

    它表示此错误是由于 URL 不正确或 格式不兼容,但视频是带有 H264 编解码器的 .mp4。

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

    我建议使用 ExoPlayer 库。

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

    【讨论】:

    • 如果可以的话可以分享视频吗?
    • 实际上,是的。在我正在工作的这个应用程序中,我们从服务器获取了一个 URL ......视频在 iPhone 上播放良好,它只是在 android 上有这个问题......所以你的意思是说后端可能有问题??
    • 是的,我们需要转换从 android 或 iPhone 接收到的视频,并保持在两者中都可以使用的相同编解码器。
    • 好的,但是当我检查视频的属性时,它说视频是带 h264 编解码器的 mp4 格式...播放视频还不够吗??
    • @RubynaThapa 很高兴,它很有帮助。但是,我建议您分享您的发现并准确解决此问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 2014-11-02
    • 2014-03-11
    • 2012-11-07
    • 1970-01-01
    相关资源
    最近更新 更多