Instala youtube-dl en el servidor, usa shell_exec para obtener los enlaces directos a googlevideo(cuando es youtube), con esos enlaces puedes ofrecerlos en descarga redirigiendo la descarga desde el servidor o abrir en una ventana del navegador pudiéndose descargar desde allí, esto último no funciona para una minoría de vídeos pero se pueden descargar redirigiendo la descarga...
ej...
### $gurl es el enlace youtube, twitter y youtube-dl compatible
##IMPORTANTE pasar FILTER_VALIDATE_URL para evitar inyección de código en shell_exec
$gurl = trim(filter_input(INPUT_POST,"gurl",FILTER_VALIDATE_URL));
$rd = shell_exec("youtube-dl --no-cache-dir -J $gurl");
$json = json_decode($rd);
function object_to_array($obj) {
$_arr = is_object($obj) ? get_object_vars($obj) : $obj;
foreach ($_arr as $key => $val) {
$val = (is_array($val) || is_object($val)) ? object_to_array($val) : $val;
$arr[$key] = $val;
}
return $arr;
}
$RES = object_to_array($json);
##IMprimimos el json a pantalla para ver como manejamos los datos...
print_r($RES);
##Siga Usted
------
obtienes los enlaces y otros datos (titulo,descripcion...) en formato json de youtube y otros sitios, estudiando el formato se pueden luego hacer cosas
redirigir descarga...
//donde $fichero es el enlace ya extraido anteriormente..
$fichero = $link;
$title = preg_replace("/[ \|\/\=·\"\']/si","_",urldecode($title));
if ($fp = @fopen(urldecode($link), 'r')) {
$meta = stream_get_meta_data($fp);
// print_r($meta);
//return;
foreach($meta["wrapper_data"] as $k => $value){
if(preg_match("/^(Content\-Type\
?(audio|video)\/(.+)$/si",$value,$resdata)){
$content_type=$resdata[1]." ".$resdata[2]."/".$resdata[3];
$title = $title.".".$resdata[3];
}
else if(preg_match("/^(Content-Length:) ?([0-9]+)$/si",$value,$resdata)){
$length = $resdata[1]." ".$resdata[2];
} else {
continue;
}
}
if($content_type && $length){
if($meta["uri"]){
$url = $meta["uri"];
}
}
header('Content-Description: File Transfer');
header($content_type);
header('Content-Disposition: attachment; filename="'.$title.'"');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header($length);
fpassthru($fp);
} else {
echo "<h1>ERROR</h1>";
echo "Intenta acceder directamente desde <a href='".urldecode($link)."'>aquí</a>";
echo "<br>".$url;
}
Código aunque a modo de ejemplo se usa en
https://www.dontubes.comAdemás youtube-dl, previa instalación, se puede usar desde cualquier aplicación invocándolo a la shell del sistema
ver captura en este hilo
https://foro.elhacker.net/foro_libre/se_acabo_por_que_descargar_videos_de_youtube_es_ahora_mas_dificil-t507552.0.html;msg2246997;topicseen#msg2246997salu2