แสดงแหล่งที่มาของวิดีโอ 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 กรกฎาคม 2554) :โปรดทราบว่า src วิดีโอนี้ใช้เฉพาะกับเบราว์เซอร์ที่คุณใช้เพื่อดึงแหล่งที่มาของหน้า ฉันคิดว่า Youtube สร้าง HTML นี้แบบไดนามิก (อย่างน้อยก็ในปัจจุบัน) ดังนั้นในการทดสอบว่าฉันคัดลอกใน Firefox สิ่งนี้ใช้ได้ใน Firefox แต่ไม่ใช่ Chrome


77
การหมดอายุและความจริงที่ว่ามันใช้งานได้เฉพาะในเบราว์เซอร์บางตัวทำให้โซลูชันนี้ไร้ประโยชน์
pjv

1
สามารถเล่นวิดีโอ youtube ทั้งหมดได้หรือไม่?
Raj Pawan Gumdal

2
ในทางทฤษฎี YouTube สามารถเปลี่ยน URL ที่เก็บข้อมูลพื้นฐานสำหรับวิดีโอทั้งหมดได้หากต้องการเมื่อใดก็ได้ URL ที่ระบุในsrcแอตทริบิวต์ด้านบนอาจไม่รับประกันว่าจะใช้งานได้ในระยะยาว
Chris Peters

1
ใช่ข้อมูลที่เป็นประโยชน์ แต่ดูเหมือนเป็นความคิดที่ไม่ดี YouTube สามารถตัดสินใจปิดการเข้าถึงลิงก์วิดีโอโดยตรงได้ทุกเมื่อ
Oliver Moran

36

คำตอบนี้ใช้ไม่ได้อีกต่อไป แต่ฉันกำลังหาวิธีแก้ไข

. 2558/02/24. มีเว็บไซต์ (youtubeinmp4)ที่ให้คุณดาวน์โหลดวิดีโอ youtube .mp4 formatได้คุณสามารถใช้ประโยชน์จากสิ่งนี้ (ด้วย JavaScript บางส่วน) เพื่อหลีกเลี่ยงการฝังวิดีโอ youtube ใน<video>แท็ก นี่คือตัวอย่างของการดำเนินการนี้

ข้อดี

  • ค่อนข้างง่ายต่อการใช้
  • การตอบสนองของเซิร์ฟเวอร์ค่อนข้างรวดเร็วจริง ๆ (ใช้เวลาไม่มากในการดึงข้อมูลวิดีโอ)
  • Abstraction (วิธีแก้ปัญหาที่ได้รับการยอมรับแม้ว่าจะทำงานได้อย่างถูกต้อง แต่จะใช้ได้ก็ต่อเมื่อคุณรู้ล่วงหน้าว่าคุณกำลังจะเล่นวิดีโอใดซึ่งใช้ได้กับ 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% และความสูง 200px
Anmol Ratan Mohla

ฉันได้ใช้โซลูชันนี้แล้ว แต่ 2 วันต่อมา YT ได้บล็อก มันไม่ทำงานอีกต่อไป :(
ถึง

ไม่ได้ผลอีกต่อไปน่าเสียดาย มันใช้งานได้ดี ฉันหวังว่าจะมีทางออกอื่นสำหรับมัน!
Chamilyan

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 ไม่ .. ฉันคิดว่าฉันควรจะถามคำถามใหม่เกี่ยวกับเรื่องนี้ แต่อาจมีใครบางคนสามารถแสดงความคิดเห็นได้?
Snorvarg

1
@Snorvarg คำตอบของฉันควรใช้งานได้กับเบราว์เซอร์ที่รองรับ HTML5 ซึ่งตราบใดที่คุณใช้ iOS เวอร์ชันล่าสุด (10+) บน iPad ของคุณก็ควรใช้งานได้ หากคุณไม่จำเป็นต้องควบคุมวิดีโอด้วยโปรแกรมคุณสามารถลองใช้ iframe embed API แบบง่ายๆ คุณสามารถดูตัวอย่างได้ที่นี่developers.google.com/youtube/iframe_api_reference#Examplesหรือดูคำตอบของ vinayvasyani หากคุณยังคงมีปัญหาแล้วฉันจะถามคำถามใหม่โดยใช้ "วิธีการถามคำถามที่ดี" แนวทางที่พบในที่stackoverflow.com/help/how-to-ask
Norman Breau

@Snorvarg ฉันเจอผลิตภัณฑ์นี้forums.google.com/forum/#!topic/youtube/q7cAnPlN_-Yซึ่งเป็นปัญหาที่คล้ายกันที่เกิดขึ้นใน Firefox และได้รับการแก้ไขแล้วเนื่องจากต้องขอสิทธิ์แบบเต็มหน้าจอ ดังนั้นฉันยินดีที่จะเดิมพันว่าทำไมเต็มหน้าจอไม่ทำงานบน iPad ของคุณซึ่งดูเหมือนว่า iOS Safari จะไม่รองรับ ทางเลือกอื่นคือเพิ่มปุ่มเต็มหน้าจอของคุณเองและปรับขนาดโปรแกรมเล่น iframe ให้เท่ากับความกว้าง / ความสูงของหน้าจอ
Norman Breau

1
ขอบคุณสำหรับเคล็ดลับและลิงก์ของคุณ ฉันได้เพิ่มคำถามเมื่อสองสามวันก่อนที่นี่: stackoverflow.com/questions/49650040/…แต่หลังจากนั้นไม่นานฉันตัดสินใจสร้างปุ่มเต็มหน้าจอของฉันเองตามที่คุณเสนอและมันก็ใช้ได้ดี
Snorvarg

สิ่งที่ดี แต่ฉันวิ่งเข้าไปในข้อผิดพลาด "TypeError: YT.Player ไม่ได้เป็นผู้สร้าง" ตามที่อธิบายไว้ที่นี่: stackoverflow.com/questions/52062169/... ดังที่คำตอบ (เท่านั้น) ชี้ให้เห็นผลลัพธ์ของการโหลดสคริปต์แบบอะซิงโครนัสและ API ยังไม่พร้อมใช้งานเมื่อถูกเรียก สิ่งนี้สามารถหลีกเลี่ยงได้โดยใช้onYouTubeIframeAPIReadyฟังก์ชัน (และใส่บล็อกโค้ดสุดท้ายของโค้ดด้านบนไว้ข้างใน)
jakob.j

1

คำตอบที่ง่ายที่สุดคือ W3schools https://www.w3schools.com/html/html_youtube.asp

  1. อัปโหลดวิดีโอของคุณไปยัง Youtube
  2. สังเกตรหัสวิดีโอ
  3. ตอนนี้เขียนโค้ดนี้ใน HTML5 ของคุณ
<iframe width="640" height="520"
src="https://www.youtube.com/embed/<VideoID>">
</iframe>

-3

วิธีทำแบบที่hooktubeทำยังไง? พวกเขาไม่ได้ใช้ 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 เป็น mp3ได้กลายเป็นสัตว์ประหลาดที่สร้างรายได้อย่างมากซึ่งส่งคืน download.html ครึ่งหนึ่งของคำขอดาวน์โหลดวิดีโอ ... น่ารำคาญ ...

ลิงก์ 2 ลิงก์ในคำตอบนี้เป็นประสบการณ์ส่วนตัวของฉันกับแหล่งข้อมูลทั้งสอง hooktube นั้นดีและสดแค่ไหนและช่วยหลีกเลี่ยงการเซ็นเซอร์และข้อ จำกัด ทางภูมิศาสตร์ได้อย่างไร .. ลองดูสิว่ามันเจ๋งมาก และ 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มีมานานแล้ว…
Zearin

11
นี่ไม่ใช่วิธีแก้คำตอบ แต่ระบุแท็กวิดีโออย่างชัดเจนไม่ใช่ iframe ...
TGarrett

7
บางที OP อาจไม่รู้เกี่ยวกับการมีอยู่ของiframeแท็กและนั่นคือเหตุผลที่เขาถามเกี่ยวกับvideoแท็กโดยตรง มิฉะนั้นเขาจะไม่ถามว่า HTML5 (โดยทั่วไป) รองรับวิดีโอ Youtube หรือไม่ แต่เขาจะ จำกัด คำถามไว้ที่videoแท็ก เขาถึงกับถามว่า "มีวิธีแก้ปัญหานี้ไหม" ในประโยคสุดท้ายของเขาดังนั้นคำตอบนี้จึงใช้ได้อย่างสมบูรณ์แบบ
Daniel Muñoz Parsapoormoghadam

1
ในการฝังวิดีโอ youtube.com ในบล็อก blogger.com ของฉัน iframe เป็นทางเลือกเดียวที่สะดวก ยิ่งไปกว่านั้นโค้ดฝังที่ youtube.com สร้างคือแท็ก iframe นอกจากนี้ w3schools.com แนะนำใน iframe: http://www.w3schools.com/html/html_youtube.asp ในกรณีที่ไม่ได้กล่าวถึงแท็กวิดีโอ
noobninja

1
ในกรณีที่มีใครสงสัย ... ปัญหาคือการใช้แท็กวิดีโอไม่ใช่แนวทางที่เหมาะสมสำหรับวิดีโอ YouTube เนื่องจาก URL สาธารณะในการฝังวิดีโอ YouTube ไม่ใช่แหล่งข้อมูลสื่อที่แท้จริง นั่นคือเหตุผลที่มีคนแนะนำให้ใช้ iframe การพยายามใช้แท็กวิดีโอหมายความว่าคุณจะใช้ URL ส่วนตัวที่อาจเปลี่ยนแปลงในอนาคต มันเหมือนกับการพยายามเข้าถึงสมาชิกส่วนตัวในภาษาเชิงวัตถุ คุณสามารถดูเอกสารอย่างเป็นทางการของ YouTube ได้ที่นี่developers.google.com/youtube/iframe_api_reference#Examples
Norman Breau
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.