Pergunta

Alguém pode me dar uma idéia de como podemos Mostrar ou incorporar um vídeo do YouTube, se só temos o URL ou o código Embed?

Foi útil?

Solução

Você tem que perguntar aos usuários armazenar o código de 11 caracteres a partir do vídeo do youtube.

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

O código de onze personagem é: Ahg6qcgoay4

Você, então, tomar este código e colocá-lo em seu banco de dados. Então onde quer que você deseja colocar o vídeo do YouTube na sua página, carregue o caráter do banco de dados e colocar o seguinte código: -

por exemplo. 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>

Outras dicas

Não armazenar o código em seu banco de dados - YouTube pode alterar o código e parâmetros de URL de tempos em tempos. Por exemplo, o código <object> foi aposentado em favor do <iframe> incorporar código. Você deve analisar o ID de vídeo a partir do / code incorporar URL (usando expressões regulares, URL funções de análise ou HTML parser) e armazená-lo. Em seguida, exibi-lo usando qualquer mecanismo oferecido atualmente pela API do YouTube.

Um exemplo PHP ingênuo para extrair o ID do vídeo é o seguinte:

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

Eu sugiro que você olhar para estes artigos para descobrir o que fazer com estes ids:

Para criar seu próprio player de vídeo YouTube:

De ambos os longas e curtas urls de youtube você pode obter a incorporar desta maneira:

$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 ajude alguém

Os <object> e <embed> marcas estão obsoletos como por HTML vídeos Youtube , é preferível usar a tag <iframe> a fazê-lo.

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

Para que seus usuários não passar sua vida inteira tentando encontrar o ID de vídeo em ligações para colocá-lo em seu campo de formulário, deixá-los postar o link do vídeo que encontrar no YouTube e você pode usar o seguinte regex para obter o identificador do vídeo:

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

Para obter o ID de vídeo que você pode buscá-la $matches[1], estes irão jogo:

Parte dessa resposta é referido por @ resposta de Shawn em esta pergunta .

Use um regex para extrair o "ID de vídeo" depois watch?v=

Guarde o ID de vídeo em uma variável, vamos chamar esta variável vid

Obter o código de incorporação de um vídeo aleatório, remova o ID de vídeo a partir do código e substituí-lo com o vid você tem.

Eu não sei como lidar com regex em php, mas não deve ser muito difícil

Aqui é exemplo de código em 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>
>>>

O v\=([\-\w]+) expressão regular captura um (sub) conjunto de caracteres e traços que vem depois v=

Aqui está um código que eu escrevi para ligar automaticamente URL de links e automaticamente incorporar quaisquer URLs de vídeo do youtube. Fiz para uma sala de chat que estou trabalhando e ele funciona muito bem. Tenho certeza de que vai funcionar muito bem para qualquer outra finalidade, bem como um blog, por exemplo.

Tudo que você tem a fazer é chamar o "autolink ()" função e passá-lo a string a ser analisado.

Por exemplo incluem a função abaixo e em seguida, eco deste 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);
 }

?>

`

Se você quiser fazer upload de vídeos através de programação, verifique o de dados do YouTube API para PHP

Procurando por esse mesmo assunto eu encontrei um outro método que usa do Javascript uma Youtube API

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

Como carregar a API

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

e executar o seguinte 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);

A amostra completa está na página anteriormente referido http://code.google.com/ apis / ajax / parque de diversão

Você pode fazer isso simples com Joomla. Deixe-me assumir uma amostra YouTube URL - 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"/>

Você pode simplesmente criar um formulário de entrada php para Varchar date, dar-lhe um comprimento varchar de digamos 300. Em seguida, pedir aos usuários copiar e colar o Embed code.When você visualizar os registros, você vai ver o vídeo transmitido.

luvboy,

Se eu entender claramente, o usuário fornece a URL / código do vídeo do YouTube e, em seguida, esse vídeo será exibido na página.

Para isso, basta escrever uma página simples, com disposição etc .. Copiar vídeo inserir código do YouTube e colá-lo em sua página. Substituir o código de embutir com algum campo, diz o ID do vídeo. Defina esta VideoId ao código fornecido pelo usuário.

edit:. Ver resposta por Alec inteligente

Apenas uma pequena atualização para a resposta de Alec inteligente: '? Version = 3' desde AS2 está obsoleta agora, o é necessário para obter o seu exemplo ao trabalho. Consulte a referência Youtube em YouTube jogadores embutido e Parâmetros Jogador em "Selecionar conteúdo para jogar" para mais detalhes.

Em outras palavras:

<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, a referência Youtube acima faz isso da seguinte forma (a incorporar interior presumivelmente usado como um fallback para navegadores que ainda não suportam a tag 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 usando iframe (substitua http://example.com com domínio do seu 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"/>

Este YouTube incorporar gerador resolver todos os meus problemas com a incorporação de vídeo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top