YoutubeビデオソースをHTML5ビデオタグに表示しますか?


116

YouTube動画ソースをHTML5 <video>タグに挿入しようとしていますが、うまくいかないようです。グーグルで調べたところ、HTML5がソースとしてYouTube動画のURLをサポートしていないことがわかりました。

HTML5を使用してYouTube動画を埋め込むことはできますか?そうでない場合、回避策はありますか?


1
回避策として、stackoverflow.com / questions / 5157377 /…で以下に示すIFrameソリューションで十分です。
S Meaden 2017年

回答:


15

ステップ1:&html5=Trueお気に入りのYouTube URLに追加する

ステップ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>

いくつかのように見えることに注意してくださいexpiresrc文字列がどのくらいの期間動作するかわかりません。

まだ自分でテストしています。

編集(2011年7月28日)このビデオsrcは、ページソースを取得するために使用するブラウザに固有のものであることに注意してください。YoutubeはこのHTMLを動的に(少なくとも現在のところ)生成するので、Firefoxでコピーした場合、これはFirefoxでは機能しますが、Chromeでは機能しません。


77
有効期限と、特定のブラウザーでのみ機能するという事実により、このソリューションはほとんど役に立ちません。
pjv

1
すべてのYouTube動画を再生できますか?
Raj Pawan Gumdal

2
理論的には、いつでも必要に応じて、YouTubeがすべての動画の基盤となるストレージURLを変更できます。src上記の属性で指定されたURLは、おそらく長期間の動作を保証されていません。
Chris Peters

1
はい、役立つ情報ですが、悪い考えのように思えます。YouTubeは、直接動画リンクへのアクセスをいつでもクローズすることを決定できます。
Oliver Moran

36

この答えはもう機能しませんが、解決策を探しています。

現在。2015/02/24 にYouTube動画をダウンロードできるWebサイト(youtubeinmp4)があります。.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>

あまり一般的ではありませんが、タグ内の属性youtu.beとして短縮URL をsrc直接使用することで、かなり小さくなります<video>

それが役に立てば幸い!:)


素敵な機能でMozillaとChromeで動作しますが、<video>の幅が100%で高さが200pxの場合にビデオの幅と高さを設定する方法。
Anmol Ratan Mohla 2017年

私はこのソリューションを実装しましたが、2日後にYTはそれをブロックしました。それはもう機能しません。:(
apires

残念ながらこれはもう機能しません。以前はうまく機能していました。別の解決策があることを願っています!
Chamilyan

19

この<video>タグは、サポートされている形式(ブラウザーによって異なる場合があります)のビデオをロードするためのものです。

YouTubeの埋め込みリンクは動画だけではなく、通常、ユーザーがサポートしているものや、ユーザーのPCで利用可能なものに基づいてHTML5を使用してYouTube動画を再生する方法、またはその他のプラグインを検出するロジックを含むWebページです。これが、YouTube動画でvideoタグを使用するのに苦労している理由です。

YouTubeは、ページにYouTube動画を埋め込むための開発者APIを提供しています。

私はJSFiddleをライブの例として作成しました:http ://jsfiddle.net/zub16fgt/

YouTube APIの詳細については、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-exampleは説明するのに最適です:PCでは動作しますが、iPadでは動作しません。..私はこれについて新しい質問をする必要があると思いますが、ここの誰かがコメントすることができますか?
Snorvarg 2018

1
@Snorvarg私の回答は、HTML5準拠のブラウザで機能するはずです。iPadでかなり新しいバージョンのiOS(10+)を実行している限り、問題なく機能するはずです。プログラムでビデオを制御する必要がない場合は、シンプルなiframe埋め込みAPIを使用してみてください。例はこちらのdeveloper.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 is not a constructor」というエラーが発生しました:stackoverflow.com/questions/52062169/…。(唯一の)回答が指摘しているように、これは非同期スクリプトの読み込みの結果であり、APIが呼び出されたときにまだ準備ができていません。これは、onYouTubeIframeAPIReady関数を実装することで回避できます(そして上記のコードの最後のコードブロックをその中に配置します)。
jakob.j


-3

フックチューブのようにやってませんか?実際にはhtml5要素のビデオURLを使用しませんが、そのビデオを呼び出すGoogleビデオリダイレクターのURLを使用します。彼らがいくつかの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つのリンクは、両方のリソースでの個人的な経験です。どのようにフックチューブは素晴らしく新鮮で、検閲や地理的制限を回避するのに実際に役立ちます。youtubeinmp4はポップアップモンスターで、現在ConvertInMp4として知られています...


-6

新しいiframeタグがWebサイトに埋め込まれているため、コードは、HTML5をサポートするブラウザーを使用しているかどうかを自動的に検出します。

YouTube動画を埋め込むためのiframeコードは次のとおりです。動画IDをコピーして、以下のコードで置き換えます。

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

23
「新しい」iframeタグ? iframe古くからある…
Zearin 2013

11
これは答えの解決策ではなく、iframeではなくビデオタグを明確に示しています...
TGarrett

7
多分、OPはiframeタグの存在を知らなかっただけかもしれません。それが彼がvideoタグについて直接尋ねた理由です。そうでなければ、彼はHTML5が(一般的に)Youtubeビデオをサポートするかどうか尋ねなかったでしょうが、質問をvideoタグに制限するでしょう。彼は、「そのための回避策はありますか?」とさえ尋ねました。彼の最後の文で、この答えは完全に有効です。
DanielMuñozParsapoormoghadam

1
youtube.com動画を私のblogger.comブログに埋め込むには、iframeが唯一の便利なソリューションです。その上、youtube.comが生成する埋め込みコードはiframeタグです。また、w3schools.comはiframesを推奨していますhttp : //www.w3schools.com/html/html_youtube.asp。ビデオタグが言及されていない場所。
noobninja

1
誰かが気になる場合に備えて... YouTubeタグを使用する問題は、YouTube動画を埋め込むためのパブリックURLが実際のメディアリソースではないため、YouTube動画に適切なアプローチではありません。そのため、iframeの使用を提案する人々がいます。動画タグを使用しようとすると、将来変更される可能性のあるプライベートURLを使用することになります。これは、オブジェクト指向言語でプライベートメンバーにアクセスしようとするようなものです。YouTubeの公式ドキュメントは、こちらのdeveloper.google.com/youtube/iframe_api_reference#Examples
Norman Breau
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.