Показати джерело відео YouTube у відео тег HTML5?


116

Я намагаюся помістити джерело відео YouTube у <video>тег HTML5 , але це, здається, не працює. Після деякого Googling я з'ясував, що HTML5 не підтримує URL відео YouTube як джерело.

Чи можете ви використовувати HTML5 для вставки відео YouTube? Якщо ні, чи є якесь вирішення?


1
Рішення IFrame, наведене нижче stackoverflow.com/questions/5157377/…, повинно бути достатнім як вирішення.
S Meaden

Відповіді:


15

Крок 1: додайте &html5=Trueдо улюбленої URL-адреси YouTube

Крок 2. Знайдіть <video/>тег у джерелі

Крок 3: Додати controls="controls"до тегу відео:<video controls="controls"..../>

Приклад:

<video controls="controls" 
       class="video-stream" 
       x-webkit-airplay="allow" 
       data-youtube-id="N9oxmRT2YWw" 
       src="http://v20.lscache8.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Coc%3AU0hPRVRMVV9FSkNOOV9MRllD&amp;itag=43&amp;ipbits=0&amp;signature=D2BCBE2F115E68C5FF97673F1D797F3C3E3BFB99.59252109C7D2B995A8D51A461FF9A6264879948E&amp;sver=3&amp;ratebypass=yes&amp;expire=1300417200&amp;key=yt1&amp;ip=0.0.0.0&amp;id=37da319914f6616c"></video>

Зауважте, деякі expireречі здаються . Я не знаю, як довго srcбуде працювати струна.

Досі тестую себе.

Редагувати (28 липня 2011 р.) : Зауважте, що це відео src характерне для браузера, який ви використовуєте для отримання джерела сторінки. Я думаю, що Youtube генерує цей HTML динамічно (принаймні, зараз), тому під час тестування, якщо я копіюю в Firefox, це працює в Firefox, але не в Chrome, наприклад.


77
Термін дії та той факт, що він працює лише у певному браузері, робить це рішення досить марним.
pjv

1
Чи здатний він відтворювати ВСІ відео на YouTube?
Радж Паван Гумдал

2
YouTube теоретично може змінити основні URL-адреси зберігання для всіх своїх відео, якщо вони хочуть у будь-який час. URL-адреса, вказана в srcатрибуті вище, ймовірно, не гарантує довгострокової роботи.
Кріс Пітерс

1
Так, корисна інформація, але звучить як погана ідея. YouTube може вирішити закрити доступ до прямого відеопосилання в будь-який час.
Олівер Моран

36

Ця відповідь більше не працює, але я шукаю рішення.

Станом на . 2015/02/24. є веб-сайт (youtubeinmp4), який дозволяє завантажувати на YouTube відео .mp4 format, ви можете скористатися цим (за допомогою JavaScript), щоб уникнути вставки відео YouTube у <video>теги. Ось демонстрація цього в дії.

Плюси

  • Досить простий у виконанні .
  • Насправді досить швидка відповідь сервера (для отримання відео це потрібно не так багато).
  • Абстракція (прийняте рішення, навіть якщо воно працювало належним чином, було б застосовно, лише якщо ви заздалегідь знали, які відео ви збираєтесь відтворювати, це працює для будь-якого URL-адреси, введеного користувачем).

Мінуси

  • Очевидно, це залежить від youtubeinmp4.comсерверів та їх способу надання посилання для завантаження (яке може бути передано у якості <video>джерела), тому ця відповідь може не бути дійсною в майбутньому.

  • Ви не можете вибрати якість відео.


JavaScript (після load)

videos = document.querySelectorAll("video");
for (var i = 0, l = videos.length; i < l; i++) {
    var video = videos[i];
    var src = video.src || (function () {
        var sources = video.querySelectorAll("source");
        for (var j = 0, sl = sources.length; j < sl; j++) {
            var source = sources[j];
            var type = source.type;
            var isMp4 = type.indexOf("mp4") != -1;
            if (isMp4) return source.src;
        }
        return null;
    })();
    if (src) {
        var isYoutube = src && src.match(/(?:youtu|youtube)(?:\.com|\.be)\/([\w\W]+)/i);
        if (isYoutube) {
            var id = isYoutube[1].match(/watch\?v=|[\w\W]+/gi);
            id = (id.length > 1) ? id.splice(1) : id;
            id = id.toString();
            var mp4url = "http://www.youtubeinmp4.com/redirect.php?video=";
            video.src = mp4url + id;
        }
    }
}

Використання (повне)

<video controls="true">
    <source src="www.youtube.com/watch?v=3bGNuRtlqAQ" type="video/mp4" />
</video>

Стандартний формат відео.

Використання (міні)

<video src="youtu.be/MLeIBFYY6UY" controls="true"></video>

Трохи рідше, але досить менше, використовуючи скорочений URL youtu.beяк srcатрибут безпосередньо в <video>тегу.

Сподіваюся, це допомагає! :)


Приємна функція та працює на Mozilla та Chrome, але як встановити ширину та висоту відео, якщо <video> мають 100% ширину та висоту 200 пікселів.
Anmol Ratan Mohla

Я реалізував це рішення, але через 2 дні YT його заблокував. Це більше не працює. :(
apires

на жаль, це більше не працює. Раніше чудово працював. Я сподіваюся, що для цього є інше рішення!
Чамілян

19

<video>Тег призначений для навантаження в відео підтримуваного формату (який може відрізнятися від браузера).

Вкладені посилання на YouTube - це не просто відео, вони, як правило, веб-сторінки, що містять логіку для виявлення того, що підтримує ваш користувач та як вони можуть відтворювати відео на YouTube, використовуючи HTML5, флеш або інший плагін на основі того, що доступно на ПК користувачів. Ось чому вам важко користуватися відеотегом з відео YouTube.

YouTube пропонує API для розробників, щоб вставити відео на YouTube у вашу сторінку.

Я зробив JSFiddle як живий приклад: http://jsfiddle.net/zub16fgt/

А ви можете прочитати більше про API YouTube тут: https://developers.google.com/youtube/iframe_api_reference#Getting_Started

Кодекс також можна знайти нижче

У вашому HTML:

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

У вашому Javascript:

var onPlayerReady = function(event) {
    event.target.playVideo();  
};

// The first argument of YT.Player is an HTML element ID. 
// YouTube API will replace my <div id="player"> tag 
// with an iframe containing the youtube video.

var player = new YT.Player('player', {
    height: 320,
    width: 400,
    videoId : '6Dc1C77nra4',
    events : {
        'onReady' : onPlayerReady
    }
});

Нещодавно у мене виникла ця проблема: Повний екран більше не підтримується на iPad! Ваш приклад jsfiddle ідеально підходить для ілюстрації: на ПК це працює, на iPad немає. .. Гадаю, я повинен поставити нове запитання з цього приводу, але хтось тут, можливо, може прокоментувати?
Снорварг

1
@Snorvarg Моя відповідь має працювати на будь-якому браузері, сумісному з HTML5, який, поки на вашому iPad працює досить нова версія версії iOS (10+), має працювати. Якщо вам не потрібно програмно керувати відео, ви можете спробувати скористатися простим вбудованим API iframe. Ви можете знайти приклад тут developers.google.com/youtube/iframe_api_reference#Examples або переглянути відповідь vinayvasyani. Якщо у вас все-таки виникають проблеми, я б поставив нове запитання, використовуючи вказівки "Як задати гарне запитання", які можна знайти на сайті stackoverflow.com/help/how-to-ask .
Норман Бро

@Snorvarg Я натрапив на цей productforums.google.com/forum/#!topic/youtube/q7cAnPlN_-Y , подібна проблема виникає у Firefox, і вона була вирішена, оскільки їм потрібно було запитувати дозволи на повний екран. Тож я готовий зробити ставку, що тому на вашому iPad не працює повноекранний екран, який, на жаль, не підтримує iOS Safari. Альтернативним рішенням є додавання власної кнопки в повноекранному режимі та просто змінити розмір програвача iframe до ширини / висоти екрана.
Норман Бро

1
Дякуємо за поради та посилання. Я додав запитання кілька днів тому, тут: stackoverflow.com/questions/49650040/… Але через деякий час я вирішив зробити власну кнопку на повноекранному екрані, як ви запропонували, і вона працює чудово.
Снорварг

Чудові речі, проте я зіткнувся з помилкою "TypeError: YT.Player - не конструктор", як описано тут: stackoverflow.com/questions/52062169/… . Як вказує (лише) відповідь, це результати завантаження асинхронного сценарію та API ще не готові при виклику. Цього можна уникнути, застосувавши onYouTubeIframeAPIReadyфункцію (і помістивши в неї останній блок коду вищевказаного коду).
jakob.j


-3

як щодо того, як це зробити так, як це робить гачка ? вони фактично не використовують URL-адресу відео для елемента html5, але URL-адреса переадресатора google для відео, яка закликає це відео. Ознайомтеся з тим, як вони представляють кілька випадкових відео Despacito ...

<video id="player-obj" controls="" src="https://redirector.googlevideo.com/videoplayback?ratebypass=yes&amp;mt=1510077993----SKIPPED----amp;utmg=ytap1,,hd720"><source>Your browser does not support HTML5 video.</video>

код для наступної сторінки відео https://hooktube.com/watch?v=72UO0v5ESUo

youtube to mp3 з іншого боку перетворився на надзвичайно монетизованого монстра, який зараз повертає файл download.html на половину запитів на завантаження відео ... дратівливий ...

2 посилання в цій відповіді стосуються мого особистого досвіду з обома ресурсами. як гачка є приємною та свіжою, і насправді допомагає уникнути цензури та гео обмежень. а youtubeinmp4 - монстр, що з'являється зараз, відомий як ConvertInMp4 ...


-6

З новим тегом iframe, вбудованим у ваш веб-сайт, код автоматично визначить, ви використовуєте браузер, який підтримує HTML5 чи ні.

Код iframe для вбудовування відео YouTube такий: просто скопіюйте ідентифікатор відео та замініть його на код нижче:

<iframe type="text/html" 
    width="640" 
    height="385" 
    src="http://www.youtube.com/embed/VIDEO_ID"
    frameborder="0">
</iframe>

23
"Новий" iframeтег? iframeіснує
довгі

11
Це не є рішенням відповіді, в ньому чітко зазначено
відеотег,

7
Можливо, ОП просто не знав про існування iframeтегу, і тому він безпосередньо запитав про videoтег. Інакше він би не запитував, чи підтримує HTML5 (загалом) відео з Youtube, але він би обмежив це питання videoтегом. Він навіть запитав "чи є для цього вирішення?" в його останньому реченні, тому ця відповідь цілком справедлива.
Даніель Муньос Парсапоормогадам

1
Щоб вставити відео youtube.com у мій блог blogger.com, iframe - єдине зручне рішення. Крім цього, вбудований код, який створює youtube.com, - це тег iframe. Також w3schools.com рекомендує iframes: http://www.w3schools.com/html/html_youtube.asp . Де відеотег не згадується.
noobninja

1
Про всяк випадок, якщо комусь цікаво ... Проблема із застосуванням тегу відео не є належним підходом до відео YouTube, оскільки загальнодоступні URL-адреси для вбудовування відео YouTube не є фактичним медіаресурсом. Ось чому є люди, які пропонують використовувати iframes. Спроба використовувати відеотег означає, що ви будете використовувати приватні URL-адреси, які можуть змінитися в майбутньому. Це як спроба отримати доступ до приватного члена об’єктно-орієнтованою мовою. Офіційну документацію YouTube ви можете переглянути тут developers.google.com/youtube/iframe_api_reference#Examples
Норман Бро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.