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

Posted

技术标签:

【中文标题】无法在 VideoView 中播放视频 - 为啥?【英文标题】: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
    

【问题讨论】:

【参考方案1】:

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

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

我建议使用 ExoPlayer 库。

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

【讨论】:

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

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

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

VideoView 无法播放视频

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

如何在 android 的 videoview 中播放 .mp4 视频?

VideoView 无法播放资源中的视频

使用本机播放器播放时,视频无法使用 VideoView 播放