Pregunta

¿Alguien puede darme una idea de cómo podemos espectáculo ¿O insertar un vídeo de YouTube si solo tenemos la URL o el código de inserción?

¿Fue útil?

Solución

Debe solicitar a los usuarios que almacenen el código de 11 caracteres del video de youtube.

Por ej. http://www.youtube.com/watch?v=Ahg6qcgoay4

El código de once caracteres es: Ahg6qcgoay4

Luego toma este código y lo coloca en su base de datos. Luego, donde quiera colocar el video de YouTube en su página, cargue el personaje de la base de datos y coloque el siguiente código: -

p. para Ahg6qcgoay4 será:

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

Otros consejos

No almacene el código de inserción en su base de datos: YouTube puede cambiar el código de inserción y los parámetros de URL de vez en cuando. Por ejemplo, el código de inserción <object> ha sido retirado a favor del código de inserción <iframe>. Debe analizar la identificación del video del código URL / incrustar (usando expresiones regulares, funciones de análisis URL o analizador HTML) y almacenarlo. Luego, muéstrela utilizando cualquier mecanismo que ofrezca actualmente la API de YouTube.

Un ejemplo ingenuo de PHP para extraer la identificación de video es el siguiente:

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

Le sugiero que consulte estos artículos para averiguar qué hacer con estos identificadores:

Para crear su propio reproductor de video de YouTube:

Desde las URL largas y cortas de youtube puedes obtener la inserción de esta manera:

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

Espero que ayude a alguien

El <object> y <embed> Las etiquetas están en desuso según Vídeos HTML de YouTube, es preferible utilizar el <iframe> etiqueta para hacerlo.

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

Para que sus usuarios no pasen toda su vida tratando de encontrar la identificación del video en los enlaces para colocarla en el campo de su formulario, permítales publicar el enlace del video que encuentran en youtube y puede usar la siguiente expresión regular para obtener la identificación del video. :

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

Para obtener la identificación del video, puedes buscarlo. $matches[1], estos coincidirán:

Parte de esta respuesta se refiere a la respuesta de @shawn en esta pregunta.

Use una expresión regular para extraer " video id " después de watch?v=

Almacene la identificación del video en una variable, llamemos a esta variable vid

Obtenga el código de inserción de un video aleatorio, elimine la identificación del video del código de inserción y reemplácelo con el v\=([\-\w]+) que obtuvo.

No sé cómo lidiar con regex en php, pero no debería ser demasiado difícil

Aquí está el código de ejemplo 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>
>>>

La expresión regular v= captura una (sub) cadena de caracteres y guiones que viene después de <=>

Aquí hay un código que escribí para convertir automáticamente las URL en enlaces e incrustar automáticamente cualquier URL de video de YouTube. Lo hice para una sala de chat en la que estoy trabajando y funciona bastante bien. Estoy seguro de que funcionará bien para cualquier otro propósito, así como un blog, por ejemplo.

Todo lo que tiene que hacer es llamar a la función " autolink () " y pásalo la cadena que se analizará.

Por ejemplo, incluya la función a continuación y luego haga eco de este código.

`
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 desea cargar videos mediante programación, consulte la API de datos de YouTube para PHP

Buscando este mismo tema, encontré otro método usando Javascript y API de Youtube

Directamente desde: http://code.google.com/apis/ajax / playground / # simple_embed

Cargando la API

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

Y ejecutando el siguiente código javascript:

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

La muestra completa se encuentra en la página referida anteriormente http://code.google.com/ apis / ajax / playground

Puedes hacer esto simple con Joomla. Permítame asumir una URL de YouTube de muestra: 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"/>

Puede simplemente crear un formulario de entrada de php para Varchar date, asignarle una longitud de varchar digamos 300. Luego, solicite a los usuarios que copien y peguen el código de Incrustar. Cuando vea los registros, verá el video transmitido.

luvboy,

Si entiendo claramente, el usuario proporciona la URL / código del video de Youtube y luego ese video se muestra en la página.

Para eso, simplemente escriba una página simple, con diseño, etc. Copie el código de inserción de video de YouTube y péguelo en su página. Reemplace el código de inserción con algún campo, diga VideoID. Establezca este VideoId en el código proporcionado por su usuario.

editar: ver respuesta de Alec Smart.

Solo una pequeña actualización de la respuesta de Alec Smart: dado que AS2 está en desuso ahora, se requiere '? version = 3' para que su ejemplo funcione. Consulte la referencia de Youtube en Jugadores integrados de YouTube y parámetros de jugadores debajo de " Seleccionar contenido para reproducir " para más detalles.

En otras palabras:

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

Aparentemente, la referencia de Youtube anterior hace esto de la siguiente manera (la incrustación interna presumiblemente se usa como respaldo para los navegadores que aún no admiten la etiqueta de objeto):

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

O usando iframes (reemplace http://example.com con el dominio de su sitio):

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

Este generador de inserción de YouTube resuelve todos mis problemas con incrustación de video.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top