Параметр youtube iframe API rel = 0 не работает

Мне нужно скрыть похожие видео после просмотра видео. Я установил rel=0, но он не работает. Я использую эту страницу для тестирования. Значение флажка rel не влияет на показ похожих видео после просмотра видео.

В гугл хром не работает. В мозилле фаерфокс работает нормально.


person Viktor    schedule 22.01.2018    source источник


Ответы (8)


С 25 сентября 2018 года вы не сможете отключить похожие видео. Вместо этого, если для параметра rel установлено значение 0, похожие видео будут поступать с того же канала, что и видео, которое только что воспроизводилось. API YouTube

person Irina    schedule 21.10.2018
comment
Похоже, он меняется, чтобы контролировать только то, находятся ли связанные видео с того же сайта или нет. Странный. - person rogerdpack; 30.10.2018
comment
@caneta В своем ответе я дал ссылку на API YouTube. - person Irina; 15.11.2018
comment
Извините, @IrinaKovalchuk, мой браузер Chrome взял мою итальянскую локаль и автоматически показывает мне итальянскую страницу, которая не обновляется... заставляя браузер работать на английском языке (chrome://settings/languages), я мог видеть обновленную документацию и предложение Примечание. : этот параметр устарел и будет игнорироваться после 25 сентября 2018 года. - person caneta; 16.11.2018

YouTube изменил параметр rel=0 в сентябре 2018 года, и теперь он больше не полностью отключает похожие видео.

Однако эту проблему можно обойти с помощью API проигрывателя YouTube, чтобы показывать пользовательский HTML вместо связанных видео.

Вот пример кода, который отображает пользовательскую кнопку «повторить» поверх видео после его завершения, скрывая связанные видео:

<style>
    #playerWrap {
        display: inline-block;
        position: relative;
    }
    #playerWrap.shown::after {
        content:"";
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        cursor: pointer;
        background-color: black;
        background-repeat: no-repeat;
        background-position: center; 
        background-size: 64px 64px;
        background-image: url(data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB2aWV3Qm94PSIwIDAgNTEwIDUxMCI+PHBhdGggZD0iTTI1NSAxMDJWMEwxMjcuNSAxMjcuNSAyNTUgMjU1VjE1M2M4NC4xNSAwIDE1MyA2OC44NSAxNTMgMTUzcy02OC44NSAxNTMtMTUzIDE1My0xNTMtNjguODUtMTUzLTE1M0g1MWMwIDExMi4yIDkxLjggMjA0IDIwNCAyMDRzMjA0LTkxLjggMjA0LTIwNC05MS44LTIwNC0yMDQtMjA0eiIgZmlsbD0iI0ZGRiIvPjwvc3ZnPg==);
    }
</style>
<div>
    <div id="playerWrap">
        <iframe
            width="640" height="360"
            src="https://www.youtube.com/embed/0sDg2h3M1RE?enablejsapi=1"
            frameborder="0"
        ></iframe>
    </div>
</div>
<script>
  var playerFrame = document.currentScript.previousElementSibling.children[0].children[0];

  var tag = document.createElement('script');
  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player(playerFrame, {
      videoId: 'M7lc1UVf-VE',
      events: {
        'onStateChange': onPlayerStateChange
      }
    });
  }

  function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.ENDED) {
        document.getElementById("playerWrap").classList.add("shown");
    }
  }

  document.getElementById("playerWrap").addEventListener("click", function() {
    player.seekTo(0);
    document.getElementById("playerWrap").classList.remove("shown");
  });
</script>

Минимизированный код вместе с дальнейшим описанием, подробностями и инструкциями можно найти в . мой пост в блоге на эту тему.

person Maximillian Laumeister    schedule 30.01.2019

Это связано с тем, что вы, скорее всего, вошли в свой браузер Chrome, а не в браузер Firefox.

&rel=0 работает только без входа в систему. Однако вы можете обойти это, используя расширенный режим конфиденциальности:

https://www.youtube-nocookie.com/embed/[id]?rel=0

person Chris    schedule 01.08.2018

Если вы хотите скрыть связанное видео, вам следует вызвать «player.stopVideo()», когда состояние проигрывателя завершается «PlayerState.ENDED».

PS: Извините, английский не мой родной язык.

person Artur    schedule 26.11.2018

Как указано выше Ириной Ковальчук, с 25 сентября 2018 года вы не сможете отключить похожие видео.

Но я нашел обходной путь:

setInterval(function () {
    if (player.getCurrentTime() >= player.getDuration()-1) {
        player.seekTo(1);  
    }
}, 100);

как только видео дойдет до конца, переместите указатель поиска, чтобы начать. Это не даст времени, чтобы показать похожие видео. Этот обходной путь подходит, если вы хотите воспроизводить видео в цикле

person Manpreet Singh Dhillon    schedule 10.11.2019

Мой не работал, потому что код выдавался со страницы разработки https://developers.google.com/youtube/youtube_player_demo

был неполным и отсутствовал закрывающий тег!

введите здесь описание изображения

person Morgan Seibert    schedule 22.01.2018

Здесь я нашел решение. stopVideo в состоянии проигрывателя изменено на ENDING

<!DOCTYPE html>
<html>
<head>
    <title>Alternative to hide Related Video & Info</title>
    <script src="https://www.youtube.com/iframe_api"></script>
</head>
<body>

<div id="playerWrapOuter">
    <div id="playerWrap">
        <?php 
            $embed = '<iframe width="560" height="315" src="https://www.youtube.com/embed/HjxYvcdpVnU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
            preg_match('/src="(.+?)"/', $embed, $matches);
            $src = $matches[1];
            $params = array(
                'width'          => "640",
                'height'         => "360",
                'enablejsapi'    => 1,
                'rel'            => 0,
                'modestbranding' => 1,
                'showinfo'       => 0,
            );


            $querystring  = http_build_query($params, $src);
            $new_src = $src.'?'. $querystring;
            $embed = str_replace($src, $new_src, $embed);
            $embed = str_replace( '<iframe ', '<iframe ', $embed );

            echo $embed; 
        ?>
    </div>
</div>
<script>
    (function() {
        var player;
        var playerFrame = document.currentScript.previousElementSibling.querySelector("iframe");

        window.onYouTubeIframeAPIReady = function() {
            player = new YT.Player(playerFrame, {
                events: {
                    'onStateChange': onPlayerStateChange
                }
            });
        };
        window.onPlayerStateChange = function(event) {
            if (event.data == YT.PlayerState.ENDED) {
                player.stopVideo();
            }
        };

    })();
</script>
</body>
</html>

Вот демонстрация скрипки: https://jsfiddle.net/Aishan/znabhuo2/ Надеюсь, это поможет !!

person Aishan    schedule 26.12.2018

Проверил это и в Хроме, и в Опере, все работает.

https://jsfiddle.net/o8ztczn6/

<iframe width="560" height="315" src="https://www.youtube.com/embed/6UVZpQ8cLSQ?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

При завершении не отображается связанное видео.

person ild flue    schedule 22.01.2018
comment
Я только что проверил это в Google Chrome (версия 63.0.3239.132 (официальная сборка) (64-разрядная версия)) и показаны соответствующие видео. Взгляните на скриншот image.prntscr.com/image/5OPze6ZxTeyKAHGFiLXrcw.png. - person Viktor; 22.01.2018
comment
@Viktor Вот что я получил с Google Chrome imgur.com/a/Zjftx. Игра завершена, Google Chrome версии 63.0.3239.132 (официальная сборка) (64-разрядная версия). Точно такая же, как у вас. - person ild flue; 22.01.2018
comment
Я заметил, что похожие видео отображаются, когда я вхожу в аккаунт YouTube. Таким образом, rel = 0 не работает для google chrome и mozilla firefox, когда я вошел в систему. Если я выйду, никакие связанные видео не будут отображаться по окончании. Итак, еще один вопрос. Как я могу скрыть похожие видео для зарегистрированных пользователей. - person Viktor; 22.01.2018