Android上的mp4视频

时间:2014-06-03 12:14:54

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

我想将一些旧的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上加载以下内容时。我有一个mp4文件,我转换为webm,但铬仍然无法运行它。它是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> 

2 个答案:

答案 0 :(得分:7)

只是为了跟进。用于视频的H.264编解码器和用于声音编解码器的AAC包装在MP4容器中。根据{{​​3}},有5种不同的个人资料&#39;对于使用H.264编解码器的mp4视频文件扩展名。谷歌希望转向免版税的Webm,但看起来他们只有一半的时间。无论如何,使用&#39; Main&#39;编码的mp4视频该配置文件适用于Apple iPhone,但不适用于我测试的任何Android移动设备:Sony Xperia,Google Nexus,Samsung Galaxy和Motorola MotoG。

将个人资料更改为&#39;约束基线资料&#39;允许视频在所有这些Android设备以及Apple iPhone上播放。

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

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

它甚至适用于在Android上运行的Firefox,虽然我读过Firefox和Opera肯定不支持这种编解码器。不确定可能是设备,而不是浏览器。

答案 1 :(得分:2)

这会生成带有约束基线轮廓的mp4。 视频还可以在较旧的Xperia上使用MediaPlayer和Android 4.1.1运行:

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