YouTube 비디오 재생이 끝나면 감지하는 방법은 무엇입니까?


93

나는 수많은 유튜브 비디오가 포함 된 사이트에서 일하고 있는데, 클라이언트는 비디오가 멈출 때마다 팝업을 표시하고 싶어합니다.

YouTube API를 살펴 보았는데 동영상이 끝날 때 감지하는 방법이있는 것 같습니다.

http://code.google.com/apis/youtube/js_api_reference.html

그러나 동영상이 모두 이미 사이트에 있기 때문에 해당 페이지에서 언급 한대로 동영상을 삽입 할 수 없습니다 (임베디드 코드를 붙여 수동으로 추가 한 수천 개).

기존 동영상을 변경하지 않고 (JavaScript를 사용하여) 이러한 동영상의 결말을 감지하는 방법이 있습니까?


2
내가 제안 할 수있는 유일한 것은 포함 항목을 포함하도록 프로그래밍 방식으로 변경하는 것 enablejsapi=1입니다. 데이터베이스에있는 경우 src속성 을 변경하는 것은 매우 쉽습니다 . HTML 파일에 정적으로 삽입되는 경우 정규식이 필요할 수 있습니다.
다운로드

답변:


175

YouTube 플레이어 API를 통해 수행 할 수 있습니다.

http://jsfiddle.net/7Gznb/

작업 예 :

    <div id="player"></div>

    <script src="http://www.youtube.com/player_api"></script>

    <script>

        // create youtube player
        var player;
        function onYouTubePlayerAPIReady() {
            player = new YT.Player('player', {
              width: '640',
              height: '390',
              videoId: '0Bmhjf0rKe8',
              events: {
                onReady: onPlayerReady,
                onStateChange: onPlayerStateChange
              }
            });
        }

        // autoplay video
        function onPlayerReady(event) {
            event.target.playVideo();
        }

        // when video ends
        function onPlayerStateChange(event) {        
            if(event.data === 0) {          
                alert('done');
            }
        }

    </script>

1
한 페이지에 여러 동영상을 어떻게 통합 했나요?
motoxer4533

@ motoxer4533 글쎄, 같은 페이지에서 여러 비디오를 다룰 필요는 없었지만 페이지 당 하나만 다룰 필요가있었습니다. API에서 여러 플레이어를 생성하고 개별 엔드 포인트를 감지 할 수 있는지 확실하지 않습니다.
TK123

1
여러 플레이어를 설정하는 것이 어렵지 않아야합니다. 여러 var player1, var player2, var player 3 등을 설정 한 다음 설정 코드를 여러 번 실행합니다. 각각의 새로운 var
codeguy

또한 여기에 iframe이 API를 사용하여 비슷한 일을하는 전체 예제 developers.google.com/youtube/...
JeremyWeir

3
가독성을 위해 상태를 확인할 때 YT.PlayerState.ENDED를 조언합니다.
Bart Burg

-6

다음을 수행하는 모든 페이지에 스크립트를 포함하는 것이 좋습니다. 1. youtube-iframe을 찾습니다. 제목별로 너비와 높이로 검색하거나 소스에서 www.youtube.com을 찾습니다. 당신은 그것을 할 수 있습니다 ...-for-in 루프로 window.frames를 반복 한 다음 속성으로 필터링하십시오.

  1. onYoutubePlayerReady must-include-function http://shazwazza.com/post/Injecting-JavaScript-into-other-frames.aspx를 추가하여 현재 페이지의 iframe에 jscript를 삽입 하십시오.

  2. 이벤트 리스너 등을 추가합니다.

도움이 되었기를 바랍니다


1
하지 않도록이 때문에 도메인 간 규칙을 가능한 경우
아셀 갈랜드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.