web-dev-qa-db-fra.com

Comment intégrer des vidéos YouTube en PHP?

Quelqu'un peut-il me donner une idée de la manière dont nous pouvons afficher ou intégrer une vidéo YouTube si nous ne disposons que de l'URL ou du code Embed?

57
Sathish Ravepati

Vous devez demander aux utilisateurs de stocker le code à 11 caractères de la vidéo youtube.

Par exemple http://www.youtube.com/watch?v=Ahg6qcgoay4

Le code de onze caractères est: Ahg6qcgoay4

Vous prenez alors ce code et le placez dans votre base de données. Ensuite, partout où vous souhaitez placer la vidéo youtube dans votre page, chargez le personnage de la base de données et insérez le code suivant: -

par exemple. pour Ahg6qcgoay4 ce sera:

<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>
86
Alec Smart

Ne stockez pas le code intégré dans votre base de données - YouTube peut modifier le code intégré et les paramètres d'URL de temps à autre. Par exemple, le <object> Le code d'intégration a été retiré en faveur de <iframe> code intégré. Vous devez analyser l'id de la vidéo à partir de l'URL/du code incorporé (à l'aide d'expressions régulières, de fonctions d'analyse d'URL ou d'un analyseur HTML) et le stocker. Puis affichez-le en utilisant le mécanisme actuellement proposé par l'API YouTube.

Un exemple naïf PHP) pour extraire l'identifiant de la vidéo est le suivant:

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

Je vous suggère de consulter ces articles pour savoir quoi faire avec ces identifiants:

Pour créer votre propre lecteur vidéo YouTube:

51
Salman A

Vous pouvez obtenir l’intégration des URL youtube longues et courtes:

$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>";

J'espère que ça aide quelqu'un

16
fanky

Les balises <object> Et <embed> Sont déconseillées conformément à HTML Youtube Videos , il est préférable d'utiliser la balise <iframe> Pour le faire.

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

Pour que vos utilisateurs ne passent pas toute leur vie à essayer de trouver l'id de la vidéo dans des liens pour le mettre dans votre champ de formulaire, laissez-les poster le lien de la vidéo trouvée sur youtube et vous pouvez utiliser la regex suivante pour obtenir l'id de la vidéo. :

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

Pour obtenir l'identifiant de la vidéo, vous pouvez le récupérer $matches[1], Ceux-ci correspondront:

Une partie de cette réponse est référée par la réponse de @ shawn dans cette question .

12
KAD

Utilisez une expression rationnelle pour extraire "l'identifiant vidéo" après watch?v=

Stocker l'identifiant vidéo dans une variable, appelons cette variable vid

Obtenez le code intégré d'une vidéo aléatoire, supprimez l'ID de la vidéo du code intégré et remplacez-le par le vid que vous avez obtenu.

Je ne sais pas comment traiter les regex en php, mais ça ne devrait pas être trop difficile

Voici un exemple de code en 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>
>>>

L'expression régulière v\=([\-\w]+) capture une (sous) chaîne de caractères et de tirets après v=

7
hasen

Voici un code que j'ai écrit pour transformer automatiquement les URL en liens et incorporer automatiquement les URL de vidéos de youtube. Je l'ai fait pour un forum de discussion sur lequel je travaille et cela fonctionne plutôt bien. Je suis sûr que cela fonctionnera parfaitement dans un autre but, comme un blog par exemple.

Tout ce que vous avez à faire est d'appeler la fonction "autolink ()" et de lui transmettre la chaîne à analyser.

Par exemple, incluez la fonction ci-dessous et faites ensuite écho à ce 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);
 }

?>

`

5
Ross

Si vous souhaitez télécharger des vidéos par programme, vérifiez le API de données YouTube pour PHP

3
CMS

Vous pouvez le faire simplement avec Joomla. Me laisser supposer un exemple d'URL YouTube - 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"/>
2
user2589739

En recherchant le même sujet, j'ai trouvé une autre méthode utilisant Javascript et les API Youtube.

Directement à partir de: http://code.google.com/apis/ajax/playground/#simple_embed

Chargement de l'API

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

Et en exécutant le code javascript suivant:

  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);

L'exemple complet se trouve dans la page précédemment mentionnée http://code.google.com/apis/ajax/playground

2
OscarRyz

Vous pouvez simplement créer un formulaire de saisie php pour Varchar date, donnez-lui une longueur de varchar de 300. Demandez ensuite aux utilisateurs de copier et coller le code intégré. Lorsque vous visualisez les enregistrements, vous visualisez la vidéo en streaming.

1
haider

luvboy,

Si je comprends bien, l'utilisateur fournit l'URL/le code de la vidéo Youtube, puis cette vidéo est affichée sur la page.

Pour cela, écrivez une simple page, avec une mise en page, etc. Copiez le code d'intégration vidéo de YouTube et collez-le dans votre page. Remplacez le code intégré par un champ, par exemple, VideoID. Définissez cet identifiant vidéo sur le code fourni par votre utilisateur.

edit: voir la réponse de Alec Smart.

0
Akshay

Juste une petite mise à jour de la réponse de Alec Smart: puisque AS2 est obsolète, la '? Version = 3' est nécessaire pour que son exemple fonctionne. Pour plus de détails, reportez-vous à la référence YouTube à l’adresse lecteurs et paramètres de lecteur YouTube sous "Sélection du contenu à lire".

En d'autres termes:

<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>

Apparemment, la référence Youtube ci-dessus fait ceci comme suit (l’intégration interne est probablement utilisée comme solution de secours pour les navigateurs qui ne supportent pas encore la balise object):

<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>

Ou en utilisant iframes (remplacez http://example.com par le domaine de votre site):

<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"/>
0
Ryan Shih