Хотя принятый ответ работает, если вы хотите сделать это программно, вам нужно правильное соотношение сторон, чтобы генерировать оптимальные размеры iframe для вашего видео.Я написал следующую функцию php, которая может генерировать для вас ссылку на лету.Он использует утилиту bash youtube-dl для получения информации о видео по любой ссылке на YouTube, поэтому вам необходимо убедиться, что она установлена (apt-get install youtube-dl
должна работать в Ubuntu или других версиях Debian)
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('&',$args) : '');
$iframe = '<iframe width="' . $width . '" height="' . $height . '" src="//' . $url . '" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>';
return $iframe;
} else {
return false;
}
}
Функция довольно понятна, но вот ее разбивка:
- Как минимум, вам необходимо указать ссылку для первого аргумента.
- Второй аргументявляется массивом ширины, высоты или обоих.Если вы укажете только один, он сохранит соотношение сторон по умолчанию и рассчитает для вас другое измерение (именно так я обычно его использую).
- Третий аргумент - необязательный массив аргументов, которые задокументированы.в самой функции.
- Параметр fourt является необязательным логическим аргументом для «конфиденциальности», который объясняется следующим образом:
Включение режима повышенной конфиденциальности.Когда вы включите режим повышенной конфиденциальности, 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>