【问题标题】:mp4 video on AndroidAndroid 上的 mp4 视频
【发布时间】:2014-06-03 12:14:53
【问题描述】:

我想将一些旧的 Flash 视频转换为 1 种视频格式,以便内容可以显示在手机上。我有一些 mp4,但它在 Android 上不起作用,特别是在 Android 4.3 上运行的 Chrome 32。

Click this link to a fiddle

它正在 Android 4.3 上的 Chrome 32 上加载 mp4 文件,但我认为不支持 H.256

然后我去了这个网站http://techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5/

那里的 mp4 视频可以在 Android/Chrome 上运行。

我使用 VLC 检查编解码器,它们看起来一样

H264 - MPEG-4 AVC (part 10) (avc1)
Resolution: is different (working one is 560x320
Resolution: mp4 not working is 640x480
Framerate: working is 30, not working is 12
Decoded format: Planar4:2:0 YUV

然后我用 ffmpeg 搜索了编解码器,我看到了 有一个属性叫 compatible_brands: mp42icomavc1

这与将此属性设置为的非工作 mp4 不同 兼容:mp42mp41

文件大小也完全不同。这可能是一个问题。

当我加载http://html5test.com 时,Android 浏览器上的 Chrome 显示 H.264 不支持 MPEG-4。它没有说明容器。

好的,这是一些源代码,我认为 android 上的 chrome 不支持 mp4 文件,但是当我在运行 Android 4.3 的 Sony Xperia Tablet 上运行的 Chrome 32 上加载以下内容时。我有一个转换为 webm 的 mp4 文件,但 chrome 仍然无法运行它。它是 8 MB,所以大小可能是个问题....这个 mp4 有不同的大小和框架。除此之外,我只看到与上述不同的兼容版本。

<html>
<head>
    <meta name="viewport" content="width=device-width">
</head>
<body>
    <h4>This is mp4 video</h4>
    <video id="small" controls="controls" autoplay="autoplay" preload="auto" name="small">
        <source src="http://techslides.com/demos/sample-videos/small.mp4" type="video/mp4">
    </video>
</body>
</html> 

【问题讨论】:

  • 这是一道编程题吗?您似乎只是在尝试使用股票浏览器播放视频,而不是编写自己的代码。
  • 其实我把视频放在了一个 jquery 移动页面中。但是 .mp4 文件似乎无法播放。所以我将它剥离为一个基本的 html 文件,然后我将其加载到 Android4.3 上的 Chrome32 上。该视频无法播放,但随后我看到了另一个 mp4 文件,该文件按照提到的网站播放。如果你愿意,我可以给你基本的 html,但看起来这与编解码器有关。我读到 Chrome 是用 .webm 的,但是我转换了视频仍然无法正常工作,然后我发现上面的 .mp4 确实可以在其中工作,所以我真的很困惑。

标签: android google-chrome video ffmpeg html5-video


【解决方案1】:

只是为了跟进。视频的 H.264 编解码器和声音编解码器的 AAC 封装在 MP4 容器中。根据wikipedia,使用 H.264 编解码器的 mp4 视频文件扩展名有 5 种不同的“配置文件”。谷歌想转向免版税的 Webm,但似乎他们已经成功了一半。无论如何,使用“主要”配置文件编码的 mp4 视频可以在 Apple iPhone 上运行,但在我测试的任何 Android 移动设备上都不能运行:Sony Xperia、Google Nexus、Samsung Galaxy 和摩托罗拉 MotoG。

将配置文件更改为“受限制的基线配置文件”允许视频在所有这些 Android 设备以及 Apple iPhone 上播放。

ffmpeg 是一个带有很多开关的命令行程序。最简单的方法是下载 Handbrake 并从预卷编码设置列表中选择“通用”。

这意味着我只需使用 1 个视频文件即可获得更广泛的支持。

它甚至可以在运行在 Android 上的 Firefox 上运行,尽管我读过 Firefox 和 Opera 肯定不支持这个编解码器。不确定可能取决于设备,而不是浏览器。

【讨论】:

    【解决方案2】:

    这会生成一个带有约束基线配置文件的 mp4。 视频还可以在旧版 Xperia 上使用带有 Android 4.1.1 的 MediaPlayer 运行:

    > ffmpeg -i in.mp4 -profile:v baseline out.mp4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 2017-01-16
      • 2012-01-06
      • 2012-05-22
      • 1970-01-01
      相关资源
      最近更新 更多