После долгих поисков мы запустили автовоспроизведение со звуком на нашем веб-сайте, но существует проблема: всякий раз, когда видео попадает в область просмотра, оно запускается автоматически, но когда в область просмотра появляется другое видео, указанное выше видео должно останавливаться. Оба видео воспроизводятся одновременно, пока оба остаются в области просмотра.
Это мой код:
HTML:
<video
id = "video--<?php echo $wo['media']['storyId'];?>"
class = "plyrr-<?php echo $wo['media']['storyId'].$rand ; ?> <?php echo($wo['rvad_con']); ?> video-container"
playsinline preload = "metadata"
poster = "<?php echo $wo['media']['video_thumb'];?>"
data-setup = "{}" data-post-video = "<?php echo $wo['media']['storyId'];?>"
>
JavaScript (JQuery):
$(window).scroll(function(e)
{
if (!document.pictureInPictureElement)
{
$('.plyrr-<?php echo $wo['media']['storyId'].$rand ; ?>').each(function()
{
if ($(this).is(":in-viewport"))
{ jQuery(this).get(0).play(); }
else
{ $(this)[0].pause(); }
});
}
});
Проблема:
Он не работает так, как Instagram или Facebook, где одновременно воспроизводится только одно видео.
Можно ли настроить размер области просмотра (или что-то в этом роде), если два видео находятся внутри области просмотра одновременно? Как остановить первое видео и воспроизвести второе (последнее видео в области просмотра после прокрутки вверх или вниз)?
пример изображения проблемы. Оба видео воспроизводятся одновременно
Пожалуйста, проверьте мой пример HTML-страницы по адресу: https://pintrafeed.com/directory
(2) Попробуйте использовать идентификаторы видеотегов в своих интересах. Возможно, у вас есть переменная типа current_playing_id
, и всякий раз, когда в области просмотра появляется новое видео, используйте оператор IF
, чтобы сначала приостановить/остановить «текущее» видео, а затем обновить current_playing_id
var, чтобы сделать этот другой новый идентификатор видео новым «текущим» для играть. (3) Если в окне просмотра находятся два видео, используйте их положение по оси Y, чтобы узнать, насколько они центральны (по сравнению с экраном). Идентификатор с Y, наиболее близким к «центру экрана», должен быть «текущим» для воспроизведения.
Спасибо за комментарий... можете ли вы разместить мой код в позиции X/Y? Я могу скопировать и вставить раздел сценария... Я уже использую для этого множество методов, но безуспешно.
После многих исследований и изменений методов, наконец, я получил этот ответ. я изменился в своем jQuery(JavaScript)
if ($(this).is(":in-viewport(250)"))
Теперь в окне просмотра воспроизводится по одному видео за раз.
(1) Я не использую JQuery (только обычный JS), поэтому, пока вы ждете ответа JQuery, просто рассмотрите другой вопрос о позициях X/Y. Может быть полезно для идей по ее решению.