Android Video View在某些设备上没有播放MP4文件

san*_*ndy 9 video android android-videoview

在我的应用程序中,我需要播放SD卡中的视频.现在它在Galaxy S,Galaxy Tab2上工作正常,但在一些中文选项卡上像"Giada"它根本不起作用.

我有4种不同的活动来播放像这样的视频.第一个活动播放菜单视频,其中包含指向其他活动的导航链接.我面临的问题.

  1. 第一个视频播放正常,但循环失败,应用程序关闭.
  2. 如果我导航到其他活动播放另一个视频,它会显示"无法播放视频"并关闭某些时候它会播放相同的视频但不完整且关闭应用程序.

视频扩展:MP4分辨率:1024x600播放自:SDCard.

目标选项卡规范.

分辨率:1024x600 Android:4.1

尝试使用视频视图和SurfaceView.

帮助我任何帮助将被遗憾.

Umo*_*sdn 18

这个问题的答案永远不会在所有设备或所有视频中保持一致.

给定视频文件是否将在给定播放器中播放取决于三件事:

  • 视频容器格式(文件类型).
  • 视频(和潜在的音频)流编码的编解码器
  • 您的播放器支持容器格式和编解码器的组合

编解码器和播放器/设备支持几乎可以肯定是您看到的结果不一致的原因.(编解码器,如果您不知道,基本上是一个可重复的数学公式,告诉您的系统如何将打包到文件中的位和字节转换成动态图像(并且再次返回)

视频文件中有各种各样的视频编解码器.由于视频分发的历史,对这些编解码器的支持非常不一致.许多设备不支持使用某些编解码器编码的流.造成这种情况的原因有很多,但最常见的是默默无闻或许可成本.

例如,直到几年前,几乎所有内容都编码在带有On2 VP6/VP7/VP8编解码器的.FLV容器中.这引起了今天的麻烦,因为虽然On2拥有这些编解码器,但他们严格控制了许可证.直到.FLV已经开始失去相关性,并没有放松,所以没有很多(合法的)软件可以使用On2编码的内容.

所有这一切意味着没有银弹.所有视频都不会在所有设备上运行,至少在没有安装和使用自己的编解码器来解码流的视频播放器的帮助下.

毋庸置疑,这不包括工厂安装的Android库为您和您的最终用户提供的库.

所以你会怎么做?好吧,如果没有生产带有自己编解码器的视频播放器,你可以通过两步方法最有效地解决问题:

  1. 定位您希望应用程序处理的特定设备
  2. 对要使用的内容进行编码,使用适用于您要定位的所有设备的视频编解码器.如果您发现没有可用于您计划支持的所有设备的编解码器,则可能需要生成两个视频副本.

今天,MP4容器和使用H.264(AVC)编解码器编码的视频流可提供最广泛的支持.正如我所说的那样,没有任何灵丹妙药,并且H.264支持在任何方面都不是普遍的,但是由于其受欢迎程度和现代化的广泛支持,这种格式将比任何其他单一选择都可以播放更多潜在用户.桌面和移动环境.

您可能会发现一些有用的工具:

  • MediaInfo将让您浏览MPEG风格的视频容器,以查看正在使用的编解码器.这将有助于确定哪些设备在哪些编解码器上遇到问题.
  • FFmpeg是一个编码应用程序,可以将您的内容转换为MP4/H.264

祝好运!