Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, boa tarde!
Eu estava procurando na internet, mas não obtive nenhum resultado significativo.
Eu preciso de um script em php que converte os links do youtube para o formato .mp4. Como que eu posso fazer isso? Alguma dica?
Quero que quando o usuário informa o link do youtube no input e clica no botão de converter baixe o vídeo e faz a conversão para .mp4 e fornece para o usuário o link convertido para .mp4.
Obrigado desde já.
Eu tentei usar esse código, mas eu não consigo fazer ele funcionar. Você pode me ajudar com isso?
Os códigos são:
CÓDIGO 01 - EXEMPLO
<?php
//Qual URL do YouTube foi fornecida para nós?
$url = (string) @$_GET['url'];
/**
* Defina uma função para extrair um ID de vídeo do YouTube de um URL.
*
* @param string $url Uma URL de vídeo do YouTube
* @return mixed Se for bem-sucedido, retornará uma string. Se falhar, retornará NULL
**/
function getYouTubeVideoIdFromUrl($url) {
preg_match( "/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches );
//Se esta correspondência existe.
if(sizeof($matches) >= 2 && strlen($matches[1])) {
return $matches[1];
}
//Não encontramos nada, ops...
return NULL;
}
/**
* Define a function to extract a YouTube encoded stream URL.
*
* @param array $streams Uma série de streams fornecida a nós na página "get_video_info" do YouTube.
* @return mixed Se for bem-sucedido, retornará o URL do stream MP4. Se falhar, retornará NULL
*/
function getMP4FromEncodedStream($streams) {
foreach($streams as $stream) {
//Decodifique os dados deste fluxo.
parse_str($stream, $data);
//Se encontrarmos nossa fonte de stream MP4.
if(stripos($data['type'], 'video/mp4') === 0) {
return $data['url'];
}
}
//Não encontramos nada, ops...
return NULL;
}
//Iremos tentar validar o seu pedido.
try {
//Se uma URL do YouTube fornecida for inválida.
if(($videoId = getYouTubeVideoIdFromUrl($url)) === NULL) {
throw new Exception('Uma URL de vídeo do YouTube inválido foi fornecido.');
}
//Recupere todas as informações pertencentes a este vídeo; mais especificamente, estamos procurando os streams de vídeo codificados.
parse_str(file_get_contents('http://youtube.com/get_video_info?video_id=' . $videoId), $videoData);
//Se houver um problema ao extrair informações.
if(@$videoData['status'] == 'fail') {
throw new Exception( $videoData['reason'] );
}
//Fomos capazes de localizar um stream codificado no formato MP4?
if(($streamUrl = getMP4FromEncodedStream(explode(',', $videoData['url_encoded_fmt_stream_map']))) === NULL) {
throw new Exception('Nenhuma fonte de vídeo MP4 foi localizada.');
}
//Onde estaremos salvando este vídeo?
$saveAs = dirname(__FILE__) . '/' . $videoId . '.mp4';
//Tente abrir o URL do stream de vídeo codificado.
if($read = @fopen($streamUrl, 'r')) {
//Abra o arquivo no qual deseja salvar.
$write = @fopen($saveAs, 'w');
//Grave o fluxo em seu arquivo.
$streamReturn = stream_copy_to_stream($read, $write);
//Feche nossos arquivos.
@fclose($read);
@fclose($write);
//Se não foi possível copiar do stream.
if($streamReturn === false) {
throw new Exception('Não foi possível copiar isso do stream.');
}
}
//Se nosso novo arquivo não existir, temos um problema.
if(!@file_exists($saveAs)) {
throw new Exception('Encontramos um problema ao salvar este vídeo.');
}
//Tudo salvo corretamente, informaremos que podem ver o arquivo.
print 'Seu vídeo <strong>' . $videoId . '</strong> foi salvo em <strong>' . $saveAs . '</strong>';
}
//Se algo desse errado.
catch(Exception $e) {
print '<strong>Ops, parece que ocorreu um erro:</strong> ' . $e->getMessage();
}
**CÓDIGO 02 - EXEMPLO**
<?php
$_GET['vid'] = 'VIDEOID';
$vid = $_GET['vid'];//O ID DO VÍDEO DO YOUTUBE
parse_str(file_get_contents("http://youtube.com/get_video_info?video_id=" . $vid), $info);//Decodificar os dados
$videoData = json_decode($info['player_response'], true);
$videoDetails = $videoData['videoDetails'];
$streamingData = $videoData['streamingData'];
$streamingDataFormats = $streamingData['formats'];
//Definir o título do vídeo
$video_title = $videoDetails["title"];
print_r($streamingDataFormats[1]['url']);
$video = $streamingDataFormats[1]['url'];
file_put_contents("video-title-name.mp4", fopen($video, 'r'));
echo 'Download do vídeo do Youtube concluído! Agora verifique o arquivo.';
Nenhum desses código funcionam.
Não seria converter e sim capturar, tem alguns scripts na internet, tem que ir testando pq o google não gosta que você faça isso então fica mudando o codigo para dificultar
um ex
https://stackoverflow.com/questions/43290806/youtube-videos-downloading-using-php-to-server