Déterminer la taille / durée d'une video via un tuto

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Déterminer la taille / durée d'une video via un tuto

par sadeq » 19 déc. 2008, 10:09

quelque soit le script que tu va utiliser pour lire un flux par une URL HTTP distante, il faut que la configuration de ton PHP.ini autorise l'accès distant aux URL dans la clause suivante:

Code : Tout sélectionner

; Whether to allow the treatment of URLs (like http:// or ftp://) as files. allow_url_fopen = On
Le paramètre "allow_url_fopen" veut dire : Autoriser l'ouverture de fichier en utilisant une URL distante. Ce paramètre doit être à "on" pour pouvoir effectuer les opérations sur les flux URL.

Change ce paramètre dans php.ini.

par zaknaou. » 19 déc. 2008, 00:53

J'ai même essayer :
function urlfilesize($url,$thereturn)
{
	if (substr($url,0,4)=='http')
	{ 
		$a = get_headers($url, 1);
		$x = array_change_key_case($a, ASE_LOWER);
		$x = $x['content-length'];
	}
	else
	{
		$x = @filesize($url);
	}

	if (!$thereturn)
	{
		return $x ;
	}
	elseif($thereturn == 'mb')
	{
		return round($x / (1024*1024),2) ;
	}
	elseif($thereturn == 'kb')
	{
		return round($x / (1024),2) ;
	}
} 
meme erreur

par zaknaou. » 19 déc. 2008, 00:48

Bon sa ne marche pas avec ou sans false, toujours zero...

Donc je suis allé tester un autre code :

http://www.tayo.fr/filesize-pour-une-url-aide.php
<?php
function urlfilesize($url,$thereturn) {
if (substr($url,0,4)=='http') { 
$x = array_change_key_case(get_headers($url, 1),CASE_LOWER);
$x = $x['content-length'];
            }
else { $x = @filesize($url); }
if (!$thereturn) { return $x ; }
elseif($thereturn == 'mb') { return round($x / (1024*1024),2) ; }
elseif($thereturn == 'kb') { return round($x / (1024),2) ; }
}
?>
<?php echo urlfilesize('filezip','') ; ?>
j'ai une erreur avec get_headers

J'ai : Fatal error: Call to undefined function: get_headers() in /homepages/12/d211182997/htdocs/access_7cb8ee526db177f3f14f326aabdac215/fiche_anime/exemple.php on line 232

par sadeq » 19 déc. 2008, 00:25

L'erreur se trouve ici:
   if(@$aURL['scheme'] != 'http')
    {
        return false; 
       .....
       .....
    }
En fait, ce if ne doit pas avoir de { } car il ne doit retourner que "false", puisque la fonction n'opère en principe que sur un flux http. Les autres affectations doivent rester indépendantes du if (et c'est ça la cause de l'erreur qui fait que la fonction te retourne toujours "false" ou 0).

Il faut réécrire comme ça:
     if(@$aURL\['scheme'] != 'http')  
         return false;  
    
     // Récuperation du host du serveur...  
     $sHost = $aURL\['host'];  
     // Et du chemin du fichier distant ainsi que du query string...  
     $sFilepath = (isset($aURL\['path']) ? $aURL\['path'] : '/')  
     $sFilepath .= (isset($aURL\['query']) ? '?' . $aURL\['query'] : '');  
     // Récuperation du port, ou mise par défaut au port HTTP 80  
     $nPort = isset($aURL\['port']) ? $aURL\['port'] : 80;  
       
.....

par Elie » 19 déc. 2008, 00:06

http_filesize($sURL);

suffit puisque si tu ne configure pas la deuxieme variable elle se met a 30 toute seule.

Mais bon je vois sur ce site : http://www.tynambule.net/index.php/2006 ... rveur-http

Que le code ne marche plus depuis PHP5 ;)

Bref...

par zaknaou. » 19 déc. 2008, 00:03

Oui l'erreur venait bien de là. Est-il correct d'appeler la fonction comme ça :
$taille_x = http_filesize($url,30);
Le deuxième paramètre à déjà une valeur :
function http_filesize($sURL, $nTimeout = 30)
Je ne sais pas pouquoi mais la taille des fichier est toujours = 0...

par Elie » 18 déc. 2008, 23:46

En gros ici :
$sFilepath = (isset($aURL['path']) ? $aURL['path'] : '/') 
Au passage je pense que :
$sFilepath = !empty($aURL['path']) ? $aURL['path'] : '/';
serait plus judicieu

par sadeq » 18 déc. 2008, 22:49

Ce message d'erreur indique qu'il manque un point-virgule à la fin de l'instruction 237 qui précède l'instruction 238 que tu as donné.

Déterminer la taille / durée d'une video via un tuto

par zaknaou » 18 déc. 2008, 21:37

Bonjour, j'ai trouvé un code source sur ce lien : http://www.tynambule.net/index.php/2006 ... rveur-http

Donc voici le code
function http_filesize($sURL, $nTimeout = 30)
{
	$aURL = parse_url($sURL);

	if(@$aURL['scheme'] != 'http')
	{
		return false;
		$sHost = $aURL['host'];
		$sFilepath = (isset($aURL['path']) ? $aURL['path'] : '/')
		$sFilepath = (isset($aURL['query']) ? '?' . $aURL['query'] : '');
		$nPort = isset($aURL['port']) ? $aURL['port'] : 80;
		$fpRemote = fsockopen($sHost, $nPort, $errno, $errstr, $nTimeout);
	}

	if(!$fpRemote)
	{
		return false;
	}

	else
	{
		$sHeaders = "HEAD " . $sFilepath . " HTTP/1.1\r\n";
		$sHeaders = "Host: ". $sHost . "\r\n";
		$sHeaders = "Connection: Close\r\n\r\n";
		fwrite($fpRemote, $sHeaders);
		$sRemoteHeaders = '';
		while(!feof($fpRemote))
		{
			$sRemoteHeaders = fgets($fpRemote, 128);
			fclose($fpRemote);
			preg_match('/Content-Length:\s([0-9].+?)\s/', $sRemoteHeaders, $aMatches);
			
			if(isset($aMatches[1]))
			{
				return (int)$aMatches[1];
			}
			else
			{
				return false;
			}
		}
	}
}
Et il ne fonctionne pas il y a une erreur : Parse error: syntax error, unexpected T_VARIABLE in /homepages/12/d211182997/htdocs/access_7cb8ee526db177f3f14f326aabdac215/fiche/exemple.php on line 238

Bon la ligne 238 correspont à :
$sFilepath = (isset($aURL['query']) ? '?' . $aURL['query'] : '');
Une idée ? D'autre erreurs sont-elle présente ?

En faite je ne suis pas abituer à lire la façon de coder de Tyn, surement mon niveau de PHP...

Est-il également possible de déterminer la durée d'une video via PHP ?

Merci à vous