无法在 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 中播放视频 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Android 中的 VideoView 需要花费太多时间来加载和播放来自 http 链接的视频?