Видео HTML5 не может воспроизводиться в iPad после .appendTo или .detach
У меня возникает интересная проблема, когда мое видео не может воспроизводиться в iPad после .appendTo
или .detach
. Он представляет кнопку воспроизведения, но когда нажата кнопка воспроизведения, ничего не происходит.
Jsfiddle
http://jsfiddle.net/LHTb5/1/
HTML
<video id="video1">
<source id="mp4" src="https://s3.amazonaws.com/s3hub-1b3c58271cb3e0dfa49d60cae0ac8b86ade30aed6294bdb5fe682e2bf/HTML5/sintel_trailer-480.mp4" type="video/mp4"/>
</video>
<div id="new"></div>
Javascript
$(document).ready(function(){
$("#video1").appendTo($("#new"));
});
Edit
О, люди, были некоторые путаницы в отношении того, что работает, а что нет. Позвольте мне сделать это очень легко.
http://jsfiddle.net/LHTb5/2/ < --- works
http://jsfiddle.net/ecbUP/ < ---- не работает
Не имеет ничего общего с html, тегами или автозапуском. Это просто мертвая простая вещь, которая заставляет iPad не играть. Мне просто интересно, почему, или как сделать .appendTo
или .detach
и заставить его работать.
Ответы
Ответ 1
Кажется, что проблема связана с перемещением video tag
. Восстановление всего тега видео - это решение, которое может работать (см. Скрипку)
$(document).ready(function(){
var tt = $('<video/>', {
id: 'video2',
'autobuffer' : 'autobuffer',
'controls' : 'controls',
'autoplay' : 'autoplay',
html : $('<source />', {
'src' : 'http://media.w3.org/2010/05/sintel/trailer.mp4',
'type' : 'video/mp4'
})
});
$("#video1").remove();
tt.appendTo($('#new'));
});
Я использовал жестко заданные значения для сборки нового тега видео, но вы можете использовать .attr()
в теге видео и источнике, чтобы получить значения из тега.
Я знаю, что это не решение проблемы с appendTo()
.
Для полноты: протестировано на iPad2 - iOS4.3.3/iPod 5 - iOS6.0.1/iPod 5 - iOS 7
РЕДАКТИРОВАТЬ: обновлена ссылка на видео в скрипте и протестирована на iOS7
Ответ 2
Попробуйте следующее:
$(document).ready(function(){
$("#video1").appendTo("#new");
$('#video1').get(0).play();
});
Ответ 3
Автовоспроизведение не работает на iPad.
Можете ли вы автовоспроизвести HTML5-видео на iPad?
Если вы хотите воспроизвести видео, вы можете добавить его так (без < source):
<video controls src="https://s3.amazonaws.com/s3hub-1b3c58271cb3e0dfa49d60cae0ac8b86ade30aed6294bdb5fe682e2bf/HTML5/sintel_trailer-480.mp4"></video>
jsfiddle
В моем проекте я делаю так:
...
initVideoPlayer: function(id) {
var firstvideo='foo.mp4';
this.embeddVideoPlayer(firstvideo);
},
embeddVideoPlayer: function(videoFile) {
this.setupVideoPlayer(videoFile);
this.appendVideoPlayer();
},
/** Setup Video-Player with Size 950px x 406px */
setupVideoPlayer: function(videoFile) {
this.videotag = document.createElement('video');
this.videotag.src = videoFile;
this.videotag.height = "406";
this.videotag.width = "950";
this.videotag.seekable = true;
},
/** Setup Video-Player to DOM, */
appendVideoPlayer: function() {
var node = document.getElementById('new');
this._removeChildNodes(node);
node.appendChild(this.videotag);
},
_removeChildNodes: function(node) {
while (node.hasChildNodes()) {
node.removeChild(node.lastChild);
};
},
....
каждый раз, когда я запускаю видео, мне нужно вызвать embeddVideoPlayer (videoFile).
Ответ 4
Я думаю, вы можете найти решение по этой ссылке:
Как вставить фильм mp4 в свой html?
Кстати, я попробовал jsfiddle на моем iphone, кажется, что он несовместим. никаких элементов управления вообще.
@BenjaminPowers
Вы пытались добавить controls="controls"
в свой тег video
?
Edit:
Я думаю, что я наконец получил решение, не могли бы вы подтвердить, что используете правильный тип doctit для html5, как показано ниже:
<!DOCTYPE html>
<html>
Вот код из W3Schools:
<!DOCTYPE html>
<html>
<body>
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4"/>
<source src="movie.ogg" type="video/ogg"/>
Your browser does not support the video tag.
</video>
</body>
</html>
Я попробовал ссылку ниже на моем iPhone, и она отлично работала, видео полностью просматривается, и вы будете использовать элементы управления IOS:
http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video_all