4

YouTube API 문서는 내장 플레이어의 최소 크기를 200x200 픽셀 (link)으로 정의합니다.YouTube 플레이어가 "최소"크기보다 작은

중요한 플레이어 기능을위한 공간을 허용하려면 플레이어가 200x200 픽셀 이상이어야합니다.

내 테스트를 통해 이것이 사실이라는 결론에 도달했습니다. 최소 크기보다 작은 플레이어에서 동영상을 재생하려고하면 '동영상 플레이어가 너무 작음'이라는 오류 메시지가 표시됩니다. 동영상이 재생되지 않습니다.

그러나 더 작은 선수도 가능합니다. 예를 들어 SwitchCamlike this one 페이지에서 사용합니다.

SwitchCam small players

내가 스타일 속성의 사용함으로써, 높이와 너비 속성의 설정하고 높이와 폭 설정되어있는 포함 된 요소에 포장하여 플레이어의 크기를 줄이는 시도했습니다. 이 옵션들 중 어느 것도 작동하지 않는 것으로 보입니다.

그 밖의 플레이어의 크기를 줄이기 위해 시도 할 수있는 다른 방법이 있습니까?

편집

일부 동영상은 정말 작은 플레이어에서 재생됩니다하지만 다른 사람들이하지 않습니다 나타납니다. 잠재적 솔루션을 테스트하려면 다음 동영상 ID를 사용하십시오. -rMTExNTx2s

+0

http://www.youtube.com/html5 <- 궁금해서 재판에 참여하고 있습니까? –

+0

YouTube 사이트를 방문하면 재판을 통해 HTML5 플레이어가 제공됩니다. 저는 YouTube 플레이어 API를 사용하는 것에 대해 이야기하고 있습니다. –

+0

그게 사실인지 나는 완전히 모르겠습니다. 내가 작성한 jQuery 플러그인 (tubeplayer : https://github.com/nirvanatikku/jQuery-TubePlayer-Plugin)에 대한 단위 테스트를 만들기 시작했고 최소 플레이어 크기 오류 (onErrorNotEmbeddable)가 실제로 throw되지 않는다는 것을 알아 냈습니다. 재판을 활성화했습니다. 기본적으로 시험 모드를 사용하도록 설정하면 동영상을 아무 문제없이 <(200,200) 번으로 설정할 수 있습니다. 이 문제는 다른 어떤 것보다 버그처럼 보이기 때문에 더 잘 이해하고 싶습니다. –

답변

6

크기가 200 * 200 (px) 이하인 동영상을 퍼가는 것을 허용하지 않는 일부 동영상에는 제한이있는 것으로 보입니다. 이 제한 사항은 모든 동영상에 적용되지 않습니다 (어쩌면 마지막 업데이트 YouTube API보다 오래되었습니다. 모르겠습니다). 유튜브 플레이어 readyState의 상태로 변경하는 경우

는 몇 가지 테스트 후,이 제한이 적용됩니다

PlayerState.PLAYING (evt.data === 1) 그래서 기본적인 해결 방법으로, 당신은 satus가 업데이트 된 후 '즉시'은 iframe의 크기를 변경할 수 있습니다 참조 아래 데모 & 코드 :이 데모에서 SSEE 수 있듯이

DEMO

var player, 
    myWidth = "114px", 
    myHeight = "65px"; 

function onYouTubePlayerAPIReady() { 
    player = new YT.Player('testVideo', { 
     height: myWidth, 
     width: myHeight, 
     videoId: '-rMTExNTx2s', 
     events: { 
      'onReady': onPlayerReady, 
      'onStateChange': onPlayerStateChange 
     }, 
      playerVars: { 
      controls:0, 
      showinfo:0 
      }   
    }); 
} 

function onPlayerStateChange(evt) { 
    if (evt.data == -1) { 
     evt.target.a.width = "200px"; 
     evt.target.a.height = "200px"; 
    } 
    else if (evt.data == 1) { 
      evt.target.a.className = ""; 
     evt.target.a.width = myWidth; 
     evt.target.a.height = myHeight; 
     done = true; 
    } 
} 

, 내가 CSS를 .hidden{opacity:0}와 함께 숨겨진 클래스를 설정합니다. 이것은 비디오가로드되기 전에 플레이어를 숨기는 데 사용됩니다. display:none;을 사용하면 확실하게 다른 API 제한이 적용되지 않습니다. 아직이 데모에서는 플레이어가 나타나는지 비디오가 재생되기 시작할 때까지 기다려야합니다. 예를 들어 미리보기 이미지를 사용하고 독서가 변경되었을 때 음수 오프셋 된 플레이어에서 원하는 위치로 이동하면 필요에 따라 최적의 해결 방법을 찾을 수 있습니다. 아이디어를 얻길 바랍니다.

+2

바이올린이 작동합니다 ... 원하는대로합니다. 그래서 지금 문제는 무엇입니까? – dutchguy

+0

이 예제에서 사용 된 특정 비디오에 대해 작동합니다. 모든 동영상에서 작동하지는 않습니다 (더 중요한 것은 내가 필요로하는 특정 동영상 세트에서 작동하지 않음). http://jsfiddle.net/eDZrP/1/ 비디오 ID를 변경하면 다음과 같은 오류가 발생합니다. 내 피들에서 가져온 비디오 ID로 작업 할 수 있는지 또는 한 비디오에서만 작동하는지 다른. –

+0

@DavidTuite 간단한 해결 방법으로 답변을 업데이트했습니다 –

1

가장 세련된 솔루션은 아니지만 실제로 더 큰 플레이어를 CSS3 transform: scale() 속성으로 축소하는 것에 대해 생각해 보셨습니까? 조심하십시오 not supported in IE < 9입니다.

주된 이유는 이 아니라이 아니라면 UI 컨트롤의 크기가 줄어들어 유용성이 감소한다는 것입니다.

+0

아이디어를 주셔서 감사 드리며, 지금 시도해 보겠습니다. UI 컨트롤의 크기는 큰 문제가 아닙니다. 어쨌든 내 컨트롤을 구현하고 있기 때문입니다. –

+0

불행히도 작동하지 않습니다. YouTube는 플레이어가 "너무 작음"을 감지하고 동영상 재생을 거부합니다. –

관련 문제