2011-01-28 2 views

답변

7

동영상의 URL이 있다고 가정하면 생성하는 것이 매우 간단합니다. URL의 끝 부분 (/watch? v = 뒤에있는 부분은 ID이라고 부름)이 필요합니다. iframe을 임베드 HTML을 생성하려면, 단지 (괄호를 포함하지 않는, src 속성에) 적절한 장소에 배치 : URL에서 v 매개 변수를 얻을 수있는 몇 가지 방법이 있습니다

<iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" 
height="390" src="http://www.youtube.com/embed/{ID}" frameborder="0" 
allowFullScreen></iframe> 

. 정규 표현식이 작동합니다.

+1

위의 방법은 멋진 것 같다, 그러나 우리는 가정이 기술에 의존 할 수 이 형식 앞으로 YouTube에서 변경하지 않아야합니다. 참고 :이 ID를 데이터베이스에 저장하고 전체 HTML을 저장하는 대신이 HTML 코드를 작성하려고합니다. 그것은 권위가 있습니까? – Jason

+3

예전에 제작 사이트에서 해봤습니다. 사실 ebmed HTML의 예전 스타일을 사용했지만,이 새로운 iframe 삽입이 이제는 선호 되더라도 여전히 작동합니다. Google은 현재 포함 된 모든 동영상과의 호환성 유지에 큰 관심을 가지고 있으므로 걱정할 필요가 없습니다. – probabilityzero

+1

YouTube는이 방법을 오랫동안 사용해 왔으며 목적에 따라이 방법을 사용하는 것을 지원하는 것으로 보입니다. –

0

대답이 유효하더라도 프로그래밍 방식으로이 작업을 수행하려면 비디오의 최적 iframe 크기를 생성하려면 올바른 가로 세로 비율이 필요합니다. 내가 비행에 대한 링크를 생성 할 수있는 다음과 같은 PHP 함수를 썼습니다. 그것은 어떤 유튜브 링크에서 비디오에 대한 정보를 얻을 수있는 bash는 유틸리티 youtube-dl를 사용하는, 그래서 당신은

function getYoutubeEmbed($link, $size = [], $options = [], $privacy = false) { 

    $options += [ 
     'rel'  => true, // Show suggested videos when the video finishes. 
     'controls' => true, // Show player controls. 
     'showinfo' => true, // Show video title and player actions. 
    ]; 

    $json = json_decode(exec('youtube-dl -j --no-warnings ' . $link . ' 2>/dev/null')); 
    if ($json && !empty($id = $json->id) && !empty($width = $json->width) && !empty($height = $json->height)) { 

     $args = []; 
     foreach ($options as $option => $value) { 
      if (!$value) { 
       $args[] = $option . '=0'; 
      } 
     } 

     if ($size) { 
      if (!empty($size['width']) && !empty($size['height'])) { 
       $width = $size['width']; 
       $height = $size['height']; 
      } else if (!empty($size['width'])) { 
       $height = ceil(($height * $size['width'])/$width); 
       $width = $size['width']; 
      } else if (!empty($size['height'])) { 
       $width = ceil(($width * $size['height'])/$height); 
       $height = $size['height']; 
      } 
     } 

     $url = ($privacy ? 'www.youtube-nocookie.com/embed/' : 'www.youtube.com/embed/') . $id . ($args ? '?' . implode('&amp;',$args) : ''); 
     $iframe = '<iframe width="' . $width . '" height="' . $height . '" src="//' . $url . '" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>'; 
     return $iframe; 
    } else { 
     return false; 
    } 
} 

기능 (apt-get install youtube-dl 우분투 또는 다른 데비안 맛에 작동합니다) 그 설치되어 있는지 확인해야합니다 상당히 자체입니다 설명하지만 여기에 고장이 있습니다 :

  • 최소한 첫 번째 인수에 대한 링크를 제공해야합니다.
  • 두 번째 인수는 너비, 높이 또는 둘 다의 배열입니다. 하나만 지정하면 기본 가로 세로 비율을 유지하고 다른 치수를 계산합니다 (일반적으로 사용하는 방법입니다).
  • 세 번째 인수는 함수 자체에 설명되어있는 선택적 인수 배열입니다.

하는 개인 정보 강화 모드 사용 :

  • 사톤는 다음과 같이 설명 '개인 정보 보호'에 대한 선택적 부울 인수입니다. 개인 정보 보호 강화 모드를 사용 설정하면 YouTube는 동영상을 재생하지 않는 한 웹 사이트 방문자의 정보를 저장하지 않습니다.

  • 사용 예 :

    $link = 'https://www.youtube.com/watch?v=adAqQct3vRI'; 
    echo getYoutubeEmbed($link, ['width' => 560], ['rel' => false]); 
    

    출력 :

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

    관련 문제