我想将一些旧的Flash视频转换为1种视频格式,以便内容显示在手机上。我得到了一些mp4,它不适用于Android,特别是在Android 4.3上运行的Chrome 32。
它正在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>
答案 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