Обновление:
Ответ от @ ania указывает на эту ссылку с DiveIntoHTML5 , которая действительно подтверждает мое предположение, что Android пытаетсяопределить правильный source элемент из расширения файла URL.В статье упоминается, что была ошибка, когда вместо атрибута type будет использоваться расширение, но оно было исправлено в Android 2.3.Однако ваш HTML не содержит атрибута type , поэтому я думаю, что даже Android 2.3 вернется к расширению хака, и в этом случае он, вероятно, попадет в ошибку параметров запроса, которую я подозреваю ниже.
Вы можете быстро проверить это, добавив атрибут type к элементу .mp4 source и проверив, работает ли он сейчас на Android 2.3.Однако, даже если это произойдет, это все равно не решит вашу проблему на Android 2.2 и ниже.Для этого вы все равно можете попробовать следующий подход:
Я не удивлюсь, если код Android смотрит на расширение файла в URL, чтобы определить, какой элемент source использовать.Если код, который делает это, не удаляет параметры запроса (как и должно быть) до того, как он ищет расширение файла, он будет сбит с толку, поскольку не найдет расширение, которое он распознает.Это объяснило бы симптомы, которые вы наблюдаете (отсутствие кнопки Play).
Один из способов проверить это - изменить эту строку:
<source src="https://di8df8d1ooc3o.cloudfront.net/43391_1309888197/video.mp4?Expires=XXXXXXXXXX&Policy=XXXXXXXXXX&Signature=XXXXXXXXXX&Key-Pair-Id=XXXXXXXXXX" />
на
<source src="https://di8df8d1ooc3o.cloudfront.net/43391_1309888197/video.mp4?Expires=XXXXXXXXXX&Policy=XXXXXXXXXX&Signature=XXXXXXXXXX&Key-Pair-Id=XXXXXXXXXX&__bogusparam=.mp4" />
Если я правильно угадал, это должно привести к тому, что код Android будет правильно отображать кнопку «Воспроизведение».Конечно, я не знаю, может ли наличие этого фиктивного параметра запутать CloudFront, поэтому видео по-прежнему может не воспроизводиться.Однако есть вероятность, что CloudFront просто проигнорирует этот параметр запроса.