Player em Flash para vídeos diretos do youtube
labs setembro 3rd, 2008Um de meus projetos necessitou a criação de um player de vídeos e agora estou compartilhando a idéia, ai tu me diz: ok Andrews, um player é simples de se fazer, só arrastar um componente e configurar a url do vídeo FLV! porém, o desafio era fazer um player com vídeos vindos diretos do YouTube e de forma randômica, que por sua vez a url destes vídeos estariam cadastrados em um banco de dados.
Então mãos a obra e vamos fazer este player,
Construindo a tabela para abrigar as url’s. Usaremos o MySQL como base de dados para abrigar estas url’s.
/* CRIANDO A TABELA */ CREATE TABLE `videos` ( `vid_codigo` int(10) NOT NULL auto_increment, `vid_url` varchar(300) default NULL, PRIMARY KEY (`vid_codigo`) ) /* INSERINDO URL'S DO YOUTUBE */ insert into `videos`(`vid_codigo`, `vid_url`) values (1,'http://br.youtube.com/watch?v=DJZUrTXPIBE'), (2,'http://br.youtube.com/watch?v=NfxtAcjYbX0'), (3,'http://br.youtube.com/watch?v=TGBZfhLsljY');
Criada a tabela, partiremos agora para o php, onde criaremos uma consulta para buscar as url’s dos vídeos nesta tabela. Também criaremos a função que faz a conversão da url do vídeo do YouTube, para que tenhamos a url final/verdadeira do vídeo FLV. Esta conversão se faz necessária devido a url apresentada quando estamos vendo o vídeo no YouTube não ser a url final/verdadeira do vídeo FLV, então se colocarmos esta url o player que criaremos não conseguirá encontrar o vídeo, caracterizando assim uma url inválida.
Criando a função para conexão com o banco de dados. Após escrever a função, salve-a com o nome de conexao.php.
function conexao() { $cnx = mysql_connect('nome-do-servidor', 'nome-do-usuario', 'senha'); mysql_select_db('nome-da-tabela', $cnx); return $cnx; }
Criaremos então a função para selecionar a url na tabela, e fazer a conversão para a url final/verdadeira do vídeo FLV. Após escrever a função, salve-a com o nome de video_url.php.
/* INCLUINDO O ARQUIVO DE CONEXAO*/ require_once('conexao.php'); /* VARIAVEL DE CONEXAO COM O DB */ $cnx = conexao(); /* CONSULTA TABELA VIDEOS */ $SQL_video = "SELECT vid_url FROM videos ORDER BY rand() LIMIT 1"; $q_video = mysql_query($SQL_video, $cnx) or die(mysql_error()); $row_video = mysql_fetch_array($q_video); /* PASSANDO URL SELECIONADA PARA VARIAVEL */ $url = $row_video['vid_url']; // ATIVADA (UPDATE EM 29-01-2009) $data = implode("", file($url)); /* FUNCTION CRIADA DEVIDO A MEU SERVER BLOQUEAR A FUNCTION file() ACIMA, * ENTAO curl FAZ O SERVICO DO file() E TRAZ A URL EXTERNA. * * EXPERIMENTE TESTAR EM SEU SERVER A LINHA ACIMA, SE FUNCIONAR * PODE REMOVER O BLOCO DE CODIGO ONDE UTILIZA AS curl */ // DESATIVADA (UPDATE EM 29-01-2009) /*$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_HEADER, 1); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0); $data = curl_exec($ch); curl_close($ch);*/ if (preg_match_all("/&t=[^&]*/", $data, $matches)) { $t = $matches[0][0]; $t = preg_split("/=/", $t); $t = $t[1]; $v = $url; // DESATIVADA (UPDATE EM 29-01-2009) //$v = preg_split("/?v=/", $v); $v = explode("?v=", $v); $v = $v[1]; echo "&Path=http://www.youtube.com/get_video.php?video_id=".$v . "&t=".$t . "&.flv"; } else { echo "null"; } mysql_free_result($q_video);
Ja temos a função do php que faz a ponte para trazer as url’s verdadeiras pronta. Agora partiremos para o flash, onde faremos o player para tocar o vídeo.
Crie um novo arquivo no flash, podendo deixá-lo com os tamanhos padrões 550 x 400 pixels.
Agora, renomei a Layer 1 para “player”, arraste um componente “FLVPlayback” para o palco e para o nome de instância digite “my_vid”.
Agora vamos criar as action que serão responsáveis por fazer a ligação com o arquivo php.
Crie uma nova Layer com o nome de “Action”, clique no Frame 1 e precissione a tecla F9.
Agora iremos escrever o código actionscript a seguir para que nosso player funcione.
// INFORMANDO AO FLASH QUE A COMUNICACAO (ARQUIVO) ESTA EM OUTRO DOMINIO System.security.allowDomain("*"); var myvar:LoadVars = new LoadVars(); // CARREGANDO O ARQUIVO PHP myvar.load("video_url.php"); myvar.onLoad = function() { // PASSANDO A URL VERDADEIRA DO YOUTUBE PARA O PLAYER my_vid.contentPath = myvar.Path + "&t=" + myvar.t + "&.flv"; };
Pronto! agora salve e compile seu arquivo flash, e pode testá-lo em seu servidor.
Veja aqui o player em funcionamento. Clique no botão de refresh para ver os vídeos de forma randômica.
Abraço. Espero que tenham aproveitado.


outubro 8th, 2008 at 7:58 am
Muito bom mesmo! Continue com o bom trabalho! Blog favoritado aqui! Abração do Ved
dezembro 1st, 2008 at 11:37 am
Olá amigo muito legal esse desenvolvimento esta precisando muito de algo assim…infelizmente nãoestou conseguindo implantar na minha pagina …sou iniciante em php ….o player está aparecendo em branco …eu fiz ele como vc explicou no flash e inseri o swf na pagina pelo dream .
dezembro 1st, 2008 at 12:22 pm
Jefferson,
As url’s ja estavam off no youtube. Experimenta trocar elas ai em sua tabela por outras qualquer.
Abraço
janeiro 9th, 2009 at 1:12 pm
Peguei uma url que estava funcionando e quando rodo o player ele fica em branco com se estise carregando ….
janeiro 10th, 2009 at 12:43 pm
Jefferson, revisei o post e o código e esta tudo correto, tenta escrever novamente… não custa tentar,
Abraço
janeiro 28th, 2009 at 8:04 pm
cara, fiz tudo certinho e revisei e estou com o mesmo problema do jefferson gomes.
acredito que o bug seja no php mesmo pois ele retorna null
janeiro 29th, 2009 at 1:36 am
Rodrigo,
revisei o arquivo video_url.php e efetuei algumas correções:
habilitei esta linha $data = implode(“”, file($url));,
e desabilitei as da function curl
também troquei a function preg_explit por explode
antes estava $v = preg_split(“/?v=/”, $v);
agora esta $v = explode(“?v=”, $v);
espero ter resolvido o problema agora,
Abraço