Frage

Kann mir jemand eine Idee geben, wie können wir zeigen oder einbetten ein Video von YouTube, wenn wir einfach die URL oder den Embed-Code?

War es hilfreich?

Lösung

Sie haben die Benutzer zu bitten, den 11 Zeichencode aus dem YouTube-Video zu speichern.

Für z.B. http://www.youtube.com/watch?v=Ahg6qcgoay4

Der elf Zeichencode ist: Ahg6qcgoay4

Sie nehmen dann diesen Code und legen Sie sie in Ihrer Datenbank. Dann, wo immer Sie wollen das YouTube-Video auf Ihrer Seite platzieren, laden Sie die Zeichen aus der Datenbank und den folgenden Code: -

z. für Ahg6qcgoay4 wird es sein:

<object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4" /></object>

Andere Tipps

Bewahren Sie den Code einbetten in Ihrer Datenbank - YouTube den Code einbetten und URL-Parameter von Zeit zu Zeit ändern kann. Zum Beispiel Code der <object> einbetten hat sich für <iframe> Einbettungscode im Ruhestand. Sie sollten die Video-ID aus der URL / embed-Code (mit regulären Ausdrücken, URL-Analyse-Funktionen oder HTML-Parser) und speichern sie parsen. Dann zeigt sie was auch immer Mechanismus zur Zeit angeboten von YouTube-API.

Ein naives PHP Beispiel für die Video-ID extrahieren ist wie folgt:

<?php
    preg_match(
        '/[\\?\\&]v=([^\\?\\&]+)/',
        'http://www.youtube.com/watch?v=OzHvVoUGTOM&feature=channel',
        $matches
    );
    // $matches[1] should contain the youtube id
?>

Ich schlage vor, dass Sie in diesen Artikeln suchen, um herauszufinden, was mit dieser IDs zu tun:

Um Ihren eigenen YouTube-Video-Player zu erstellen:

Von langen und kurzen YouTube-URLs können Sie den Einbettungs diese Art und Weise erhalten:

$ytarray=explode("/", $videolink);
$ytendstring=end($ytarray);
$ytendarray=explode("?v=", $ytendstring);
$ytendstring=end($ytendarray);
$ytendarray=explode("&", $ytendstring);
$ytcode=$ytendarray[0];
echo "<iframe width=\"420\" height=\"315\" src=\"http://www.youtube.com/embed/$ytcode\" frameborder=\"0\" allowfullscreen></iframe>";

Hoffe, es hilft jemand

Die <object> und <embed> Tags sind veraltet per HTML Youtube Videos , es ist bevorzugt, den <iframe> Tag zu verwenden, dies zu tun.

<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>

Um für die Benutzer nicht ihre gesamte Lebensdauer damit verbringen, die Video-ID in Links zu finden, es in Ihrem Formularfeld zu setzen, lassen Sie sie veröffentlichen Sie den Link des Videos sie auf youtube zu finden und Sie können die folgende regex verwenden zu erhalten die Video-ID:

preg_match("/^(?:http(?:s)?:\/\/)?
    (?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|
    (?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);

Um die Video-ID erhalten Sie holen kann es $matches[1], werden diese entsprechen:

Ein Teil dieser Antwort bezeichnet wird durch die Antwort von @ shawn in diese Frage .

einen regulären Ausdruck Verwenden Sie die "Video-ID" nach watch?v= zu extrahieren

Speichern Sie die Video-ID in einer Variablen, lassen Sie uns diese Variable vid nennen

Holen Sie sich den embed-Code aus einem random video, entfernen Sie die Video-ID aus dem Code einbetten und ersetzen Sie es mit dem vid Sie.

Ich weiß nicht, wie mit Regex in PHP zu tun, aber es sollte nicht zu hart sein

Hier ist Beispielcode in Python:

>>> ytlink = 'http://www.youtube.com/watch?v=7-dXUEbBz70'
>>> import re
>>> vid = re.findall( r'v\=([\-\w]+)', ytlink )[0]
>>> vid
'7-dXUEbBz70'
>>> print '''<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/%s&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/%s&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>''' % (vid,vid)
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
>>>

Der reguläre Ausdruck v\=([\-\w]+) fängt eine (Teil-) Zeichenkette und Striche, die nach v= kommt

Hier einige Code, den ich geschrieben habe, um automatisch URLs in Links zu drehen und einbetten automatisch all Video-URLs von YouTube. Ich habe es für einen Chat-Raum arbeite ich an und es funktioniert ziemlich gut. Ich bin sicher, es wird gut funktionieren für andere Zwecke als auch wie ein Blog zum Beispiel.

Alles, was Sie tun müssen, ist die Funktion „Autolink ()“ aufrufen und die Zeichenfolge übergeben analysiert werden.

Zum Beispiel gehört die Funktion unten und Echo dann diesen Code.

`
echo '<div id="chat_message">'.autolink($string).'</div>';

/****************Function to include****************/

<?php

function autolink($string){
    // force http: on www.
    $string = str_ireplace( "www.", "http://www.", $string );
    // eliminate duplicates after force
    $string = str_ireplace( "http://http://www.", "http://www.", $string );
    $string = str_ireplace( "https://http://www.", "https://www.", $string );

    // The Regular Expression filter
    $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
    // Check if there is a url in the text

$m = preg_match_all($reg_exUrl, $string, $match); 

if ($m) { 
$links=$match[0]; 
for ($j=0;$j<$m;$j++) { 

    if(substr($links[$j], 0, 18) == 'http://www.youtube'){

    $string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string).'<br /><iframe title="YouTube video player" class="youtube-player" type="text/html" width="320" height="185" src="http://www.youtube.com/embed/'.substr($links[$j], -11).'" frameborder="0" allowFullScreen></iframe><br />';


    }else{

    $string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string);

        } 

    } 
} 




               return ($string);
 }

?>

`

Wenn Sie programmatisch Videos hochladen möchten, überprüfen Sie die YouTube Data API für PHP

Die Suche nach diesem gleichen Thema fand ich eine andere Methode verwendet Javascript einen Youtube-API

Direkt von: http://code.google.com/apis/ajax / Spielplatz / # simple_embed

Laden des API

<script src="http://www.google.com/jsapi" type="text/javascript"></script>

Und der folgenden JavaScript-Code ausführen:

  google.load("swfobject", "2.1");
  function _run() {

    var videoID = "ylLzyHk54Z0"
    var params = { allowScriptAccess: "always" };
    var atts = { id: "ytPlayer" };
    // All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
    swfobject.embedSWF("http://www.youtube.com/v/" + videoID + "&enablejsapi=1&playerapiid=player1",
                       "videoDiv", "480", "295", "8", null, null, params, atts);


  }
  google.setOnLoadCallback(_run);

Das vollständige Beispiel ist in der zuvor Seite http://code.google.com/ apis / ajax / Spielplatz

Sie können mit Joomla diese einfache tun. Lassen Sie mich ein Beispiel YouTube-URL annehmen - https://www.youtube.com/watch?v=ndmXkyohT1M

<?php 
$youtubeUrl =  JUri::getInstance('https://www.youtube.com/watch?v=ndmXkyohT1M');
$videoId = $youtubeUrl->getVar('v'); ?>

<iframe id="ytplayer" type="text/html" width="640" height="390"  src="http://www.youtube.com/embed/<?php echo $videoId; ?>"  frameborder="0"/>

Sie können einfach ein PHP-Eingabeformular für Varchar date erstellen, eine varchar Länge geben von 300. können sagen, dann den Benutzer auffordern, die einbetten code.When Sie die Datensätze anzuzeigen, zu kopieren und, werden Sie das gestreamte Video ansehen.

luvboy,

Wenn ich klar verstehen, Benutzer stellen die URL / Code des Youtube-Videos, und dann wird das Video auf der Seite angezeigt.

Dazu schreiben Sie einfach eine einfache Seite, mit Layout etc .. Copy Video Code einbetten aus YouTube und fügen Sie ihn auf Ihrer Seite. Ersetzen Code einbetten mit einem Feld, sagen VideoID. Setzen Sie diese VideoId von Ihrem Benutzer bereitgestellt Code.

edit: siehe Antwort von Alec Smart-

.

Nur ein kleines Update auf Alec Smart-Antwort: ‚? Version = 3‘ seit AS2 jetzt veraltet ist, die erforderlich ist, sein Beispiel zu bekommen zu arbeiten. Siehe den Youtube Bezug auf YouTube Embedded-Spieler und Spieler-Parameter unter "Auswählen von Inhalt zu spielen" für Details.

Mit anderen Worten:

<object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4?version=3" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4?version=3" /></object>

Offenbar ist die Youtube Referenz oben tut dies wie folgt (die innere einbetten vermutlich als Ausweich für Browser verwendet, die noch nicht das Objekt-Tag-Unterstützung):

<object width="640" height="390">
  <param name="movie"
         value="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"></param>
  <param name="allowScriptAccess" value="always"></param>
  <embed src="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"
         type="application/x-shockwave-flash"
         allowscriptaccess="always"
         width="640" height="390"></embed>
</object>

oder mit iframes (ersetzen http://example.com mit Ihrer Website-Domain):

<iframe id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=1&origin=http://example.com" frameborder="0"/>

Das YouTube einbetten Generator lösen alle meine Probleme mit Video-Einbettung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top