【问题标题】:Android Video View not playing MP4 file on some devicesAndroid Video View 无法在某些设备上播放 MP4 文件
【发布时间】:2013-10-03 05:47:18
【问题描述】:

在我的应用程序中,我需要播放 sdcard 中的视频。现在它在 Galaxy S,Galaxy Tab2 上运行良好,但在一些中文标签上,如“Giada”,它根本不工作。

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

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

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

目标选项卡规范。

分辨率:1024x600 安卓:4.1

尝试使用 Video View 和 SurfaceView。

帮帮我,任何帮助都会后悔的。

【问题讨论】:

    标签: android video android-videoview


    【解决方案1】:

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

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

    • 视频容器格式(文件类型)。
    • 视频(可能还有音频)流使用的编解码器
    • 您的播放器对容器格式和编解码器组合的支持

    几乎可以肯定,编解码器和播放器/设备支持是您看到的结果不一致的原因。 (编解码器,如果您不知道的话,基本上是一个可重复的数学公式,它告诉您的系统如何将打包到文件中的位和字节转换为运动图片(就此而言,再返回))

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

    例如,直到几年前,几乎所有内容都被编码在一个带有 On2 VP6/VP7/VP8 编解码器的 .FLV 容器中。这在今天引起了人们的头疼,因为虽然 On2 拥有这些编解码器,但他们严格控制了许可证。在 .FLV 已经开始失去相关性之前,这种情况一直没有放松,因此没有很多(合法的)软件可以处理 On2 编码的内容。

    所有这一切意味着没有灵丹妙药。所有视频都不会在所有设备上运行,至少在没有安装和使用自己的编解码器解码流的视频播放器的帮助下是这样。

    不用说,这不包括工厂安装的 Android 库提供给您和您的最终用户的库。

    那么,你是做什么的?好吧,除了制作带有自己的编解码器的视频播放器之外,您可以通过两步方法最有效地解决问题:

    1. 定位您希望应用程序在其上运行的特定设备
    2. 编码您的内容以使用适用于您要定位的所有设备的视频编解码器。如果您发现没有适用于您计划支持的所有设备的编解码器,您可能需要制作两个视频副本。

    如今,MP4 容器和使用 H.264 (AVC) 编解码器编码的视频流提供了最广泛的支持。正如我所说,没有灵丹妙药,而且 H.264 支持无论如何也不是普遍的,但是由于它在现代的流行和广泛的支持,这种格式将比您可以做出的任何其他单一选择更具有潜在用户的可玩性桌面和移动环境。

    一些您可能会觉得有用的工具:

    • MediaInfo 将让您窥视 MPEG 风格的视频容器,以查看正在使用的编解码器。这将有助于确定哪些设备在使用哪些编解码器时出现问题。
    • FFmpeg 是一个可以将您的内容转换为 MP4/H.264 的编码应用程序
    • Android Supported media formats 支持的媒体音频/视频格式列表。

    祝你好运!

    【讨论】:

    • 太棒了。因此,您要做的是找出——如果可以通过研究,如果必须的话,通过反复试验——设备上将播放什么样的编解码器/容器组合,以及什么样的质量水平(视频比特率和分辨率)是这里的大的)将顺利播放。
    • 一旦您找到“最佳位置”——容器、编解码器、分辨率、比特率、质量级别和播放流畅度的正确组合,适合您的设备,将您的所有内容转换为该格式.
    • ffmpeg 命令示例,用于几乎所有设备支持的 android 视频格式:ffmpeg -i input.mp4 -f mp4 -r 30 -vcodec libx264 -bufsize 2k -ac 2 -ab 192k -preset veryslow -profile :v main -acodec aac output.mp4 -hide_banner
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2012-09-26
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多