Question

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

Était-ce utile?

La solution

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 ensuite ce code et le placez dans votre base de données. Puis, où que vous souhaitiez 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>

Autres conseils

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 code d'intégration <object> a été supprimé au profit du code d'intégration <iframe>. 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. Ensuite, affichez-le en utilisant le mécanisme actuellement offert par l'API YouTube.

Voici un exemple PHP naïf pour l'extraction de l'identifiant vidéo:

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

Depuis les URL youtube longues et courtes, vous pouvez obtenir l’intégration suivante:

$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

Les balises <object> et <embed> sont obsolètes, conformément à la vidéos HTML Youtube. , 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>

Afin que vos utilisateurs ne passent pas toute leur vie à essayer de trouver l’identifiant de la vidéo dans des liens pour le placer dans votre champ de formulaire, laissez-les poster le lien de la vidéo trouvée sur youtube et utilisez la regex suivante pour obtenir l'identifiant 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érencée par la réponse de @ shawn dans cette question .

Utilisez une expression régulière pour extraire & "id vidéo" & "; après watch?v=

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

Obtenez le code d'intégration d'une vidéo aléatoire, supprimez l'ID de la vidéo du code d'intégration et remplacez-le par le v\=([\-\w]+) résultat obtenu

.

Je ne sais pas comment gérer 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= capture une (sous) chaîne de caractères et des tirets après <=>

Voici le code que j'ai écrit pour transformer automatiquement les URL en liens et incorporer automatiquement les URL de vidéo 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.

Il suffit d'appeler la fonction & "autolink () &"; et passez la chaîne à analyser.

Par exemple, incluez la fonction ci-dessous, puis faites é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);
 }

?>

`

Si vous souhaitez transférer des vidéos par programmation, consultez l’Aide YouTube Data . pour PHP

À la recherche de ce 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

Vous pouvez faire cela simplement avec Joomla. Supposons 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"/>

Vous pouvez simplement créer un formulaire de saisie php pour Varchar date, lui attribuer une varchar longueur de 300 secondes, puis demander aux utilisateurs de copier et coller le code d'intégration. Lorsque vous visualisez les enregistrements, vous visualisez le vidéo en streaming.

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 simplement une page simple, 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 ce VideoId sur le code fourni par votre utilisateur.

modifier: voir la réponse de Alec Smart.

Juste une petite mise à jour de la réponse d'Alec Smart: puisque AS2 est obsolète, la '? version = 3' est nécessaire pour que son exemple fonctionne. Consultez la référence sur Youtube à l'adresse Joueurs intégrés YouTube et paramètres de lecteur sous " Sélection du contenu à lire " pour plus de détails.

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 des 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"/>

Ce le générateur d'intégration de YouTube résoudra tous mes problèmes avec incorporation vidéo.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top