Page 1 sur 1

Lire une video depuis un disque dur

Posté : 27 nov. 2013, 04:35
par Fre3z69
Salutation à tous

J'aimerais savoir si il est possible de lire une vidéo depuis un disque du (D:\ par exemple), et ce directement sur le site (uniquement en local).

En effet, j'ai acheter pas mal de vidéos tuto que j'ai placer sur un disque dur autre que celui du système, et vu le nombre de fichier et la taille globale, je ne peux pas les mettre tous sur wamp.

Hors j'aimerais pour des raison pratique et d'accès (oui, je sais ouvrir un dossier c'est chiant ^^) les lire depuis mon site web local, sans avoir à les télécharger (ou du mois les ouvrir avec l'option proposée)
Dans le pire des cas, comment télécharger la vidéo pour la lire depuis un lecteur tel que Windows media ?
(edit:// j'ai la lettre du lecteur qui s'affiche en petit, et donc je ne peux pas télécharger la vidéo : (d:/Videos/Tutoriels/Formations/Apprendre%20CakePHP/01_Les%20bases/03_Grafikart%20-%20Tutoriel%20Tutoriel%20Les%20Controllers.mp4), comment cela se fait il alors que dans le nom du fichier, on à bien le D (D:\Videos\Tutoriels\Formations\Apprendre%20CakePHP\01_Les%20bases\03_Grafikart%20-%20Tutoriel%20Tutoriel%20Les%20Controllers.mp4)?

Est ce possible?

Merci beaucoup

Cordialement

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 09:03
par xTG
Oui c'est possible, utilises le préfixe file://

Code : Tout sélectionner

file://ton_chemin

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 09:22
par moogli
Salut,

1/ l'accès comme ça aux ressources ne devrait pas être possible (faille de sécurité)
2/ windows n'est pas sensible pas à la casse des caractères donc d ou D c'est pareil
3/ ajoute simplement un alias ou vhost dans la conf de ton serveur httpd ( vers le répertoire des vidéos) et utilise le pour générer tes liens sur la page web.
Tu pourras ainsi utiliser un player vidéo (balise vidéo html5 par exemple) en lui fournissant l'url de la vidéo avec l'alias ou le vhost ;)

@+

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 09:30
par Fre3z69
Lorseque je fait celà, je trouve l'url modifiée.
Les " \ " sont remplacés par des " / "
De plus, il doubles les " // " de " file:// "
Comment cela ce fait il?

Merci beaucoup

Cordialement

Scripts :

function.php
function mkmap($dir){
        echo "<ul>";
        $dossier=$_GET['s'];
        $folder = opendir ($dir);
        // $authextension = array ('mp4', 'mov');
        // on boucle le dossier
        while ($file = readdir ($folder)) {
            if ($file != "." && $file != "..") {
                // $spacer = (preg_match("@^D:\^@i", $dir, $matches))?"/":"\\";
                // $pathfile = $dir.$spacer.$file;
                // $pathfile = $dir.'\\'.$file;
                $pathfile = $dir.'/'.$file;
                $extension=strrchr($file,'.');
                $extension=substr($extension,1) ;
                $icon = 'icon.png';
                // on supprime l'affichage du nom de l'icone
                /*
                 * on vérifie l'extention du fichier
                 */
                // si il n'y en a pas, alors il s'agit d'un dossier
                if ($extension=="mp4" || $extension=="mov" || $extension=="avi" || $extension=="mkv") {
                    // $video = $_SERVER['HTTP_REFERER']'.$pathfile;
                    $namef=preg_replace("`(.+)\_Grafikart - Tutoriel `isU", "", $file);
                    echo '<li><a href="index.php?s='.$dossier.'&v='.$pathfile.'">'.$namef.'</a></li>';
                    // echo '<li><a href="index.php?v='.$pathfile.'">'.$namef.'</a></li>';
                // sinon c'est u fichier
                } else {
                    $namef=preg_replace("`(.+)\_`isU", "", $file);
                    $namef=preg_replace("`icon.png`isU", "", $namef);
                    // echo $file;
                    echo '<li><span class="titre">'.$namef.'</span></li>'."\n"; 
                    if(filetype($pathfile) == 'dir'){            
                        mkmap($pathfile);
                    }
                }
            }
        }
        closedir ($folder);    
        echo "</ul>";
    }
video.php
<?php
$direction = $_SERVER['QUERY_STRING'];
$direction = preg_replace("`v=`isU", "", $direction);
$direction = preg_replace("`s=(.+)&`isU", "", $direction);
?>
<a href="file://<?php echo $direction; ?>" class="btn btn-info">Télécharger la vidéo</a>
index.php
<?php
include_once ('./function.php');
?>
<!doctype html>
<html lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
	<title>Tutoriels GraphikArt</title>
	<link href="./css/bootstrap.css" rel="stylesheet">
	<link href="./css/bootstrap-responsive.css" rel="stylesheet">
	<link href="./css/video.css" rel="stylesheet">
    <style type="text/css">
		body { padding-top: 60px; padding-bottom: 40px; }
        ul { list-style:none; }
        span.titre { font-size:17px;font-weight:bold; }
        #player_4193 { width:670px;height:503px; }
    </style>
<!--[if IE]>
<style type="text/css">
 li span  {
    display:inline;
    zoom:1;

    }

</style>
<![endif]-->    
</head>
<body>
	<div class="navbar navbar-fixed-top">
		<div class="navbar-inner">
			<div class="container">
				<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
				</a>
                <div class="navbar-header">
                      <div class="nav-collapse collapse">
                        <ul class="nav">
                          <li class=""><a href="./">Accueil</a></li>
                          <li class=""><a href="./index.php?s=Film">Film</a></li>
                          <li class=""><a href="./index.php?s=Tutoriels">Tutoriels</a></li>
                        </ul>
                      </div>
            </div>
			</div>
		</div>
	</div>

    <div class="container-fluid">
      <div class="row-fluid">
        <div class="span4">
          <div class="well sidebar-nav">
<?php
    if (isset($_GET['s']) && $_GET['s']=='Film'){
        $dossier = 'D:\Videos\Films';
    }
    else if (isset($_GET['s']) && $_GET['s']=='Tutoriels'){
        $dossier = 'D:\Videos\Tutos';
    }
    else {
        $dossier = '';
    }
    mkmap($dossier);
?>
            <?php // mkmap('videos'); ?>
          </div><!--/.well -->
        </div><!--/span-->
        <div class="span8">
          <div class="hero-unit">
<?php
            if (isset($_GET['v'])){
              include ('./video.php');
            }
?>
          </div><!--/span-->
        </div><!--/row-->
      </div><!--/span-->
    </div><!--/row-->
</body>
</html>

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 11:19
par xTG
1/ l'accès comme ça aux ressources ne devrait pas être possible (faille de sécurité)
2/ windows n'est pas sensible pas à la casse des caractères donc d ou D c'est pareil
3/ ajoute simplement un alias ou vhost dans la conf de ton serveur httpd ( vers le répertoire des vidéos) et utilise le pour générer tes liens sur la page web.
Tu pourras ainsi utiliser un player vidéo (balise vidéo html5 par exemple) en lui fournissant l'url de la vidéo avec l'alias ou le vhost ;)
On parle là d'un accès navigateur (et non serveur), j'ouvre par exemple mes fichier pdf avec firefox depuis n'importe quel disque dur.
Donc pour moi je vois pas de point bloquant si c'est un code de traitement HTML.

Edit : ah oui je viens de voir ce que tu tentes de faire...
Là effectivement code serveur => vhost ou bien tes vidéos dans ton www.

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 11:41
par Fre3z69
Merci à toi

Pour les faille de sécurité je m'en fou un peu, ce script resteras en local ^^

Edit : " J'avais pas vu, mais les vidéos dans le www ça reviens à alourdir mon disque système, qui lui n'est pas très gros.
Sinon dans le pire des pire des cas, je réinstalle Wamp sur le disque où sont stockés les vidéos. "

Pour le Vhost, tu le fait comment?
Style:
$Vhost = "D:\Video\."$_GET['s']."\"; ??


" Edit : j'ai réussi à faire un virtualhost, et ça redirige bien sur mon disque dur.
Bon bin il me reste plus qu'à ^^
"

Je vous tiens informé

Merci à toi en tout cas

Cordialement

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 12:36
par Fre3z69
Je reviens vers vous pour deux choses.

D'une part, le système de Vhosts fonctionne à merveille, merci beaucoup.

D'autre part, j'ai au final la bonne adresse du fichier, qui si je la met dans la barre d'adresse, se télécharge correctement, mais ne se lit pas dans le lecteur video.

Je vous remontre les scripts, pourriez vous voir ce qui ne vas pas SVP, car franchement, j'ai beau chercher, je ne vois pas d'où cela peux bien venir.

Merci beaucoup

Cordialement


Scripts :

function.php
<?php
if (isset($_GET['s'])){
header('Content-Type: text/html; charset=iso-8859-1');
    function mkmap($dir){
        echo "<ul>";
        $dossier=$_GET['s'];
        $folder = opendir ($dir);
        // on boucle le dossier
        while ($file = readdir ($folder)) {
            if ($file != "." && $file != "..") {
                $pathfile = $dir.'/'.$file;
                $extension=strrchr($file,'.');
                $extension=substr($extension,1) ;
                $icon = 'icon.png';
                // on supprime l'affichage du nom de l'icone
                /*
                 * on vérifie l'extention du fichier
                 */
                // si il n'y en a pas, alors il s'agit d'un dossier
                if ($extension=="mp4" || $extension=="mov" || $extension=="avi" || $extension=="mkv") {
                    // $video = $_SERVER['HTTP_REFERER']'.$pathfile;
                    $namef=preg_replace("`(.+)\_Grafikart - Tutoriel `isU", "", $file);
                    echo '<li><a href="index.php?s='.$dossier.'&v='.$namef.'">'.$namef.'</a></li>';
                    // echo '<li><a href="index.php?v='.$pathfile.'">'.$namef.'</a></li>';
                // sinon c'est u fichier
                } else {
                    $namef=preg_replace("`(.+)\_`isU", "", $file);
                    $namef=preg_replace("`icon.png`isU", "", $namef);
                    // echo $file;
                    echo '<li><span class="titre">'.$namef.'</span></li>'."\n"; 
                    if(filetype($pathfile) == 'dir'){            
                        mkmap($pathfile);
                    }
                }
            }
        }
        closedir ($folder);    
        echo "</ul>";
    }
}else{
    function mkmap(){
        echo 'Choisissez un dossier dans le menu';
    }
}
?>
video.php
<?php
header('Content-Type: text/html; charset=utf-8');
$fichier = $_SERVER['QUERY_STRING'];
$fichier = preg_replace("`v=`isU", "", $fichier);
$fichier = preg_replace("`s=(.+)&`isU", "", $fichier);
$adresse = 'http://video.loc/';
$dossier=$_GET['s'].'/';
$direction = $adresse.$dossier.$fichier;
$serverAdresse = 'http://local.loc/'
?>
<script type="text/javascript" src="<?php echo $serverAdresse; ?>Tutoriels/js/flashobject.js"></script>
<div id="player_4752" style="display:inline-block;">
    <a href="http://get.adobe.com/flashplayer/">You need to install the Flash plugin</a>
</div>
<script type="text/javascript">
    var flashvars_4752 = {};
    var params_4752 = {
    quality: "high",
    wmode: "transparent",
    bgcolor: "#ff0000",
    allowScriptAccess: "always",
    allowFullScreen: "true",
    flashvars: "fichier=<?php echo $direction; ?>&apercu=<?php echo $serverAdresse; ?>Tutoriels/img/video.png"
    };
    var attributes_4752 = {};
    flashObject("<?php echo $serverAdresse; ?>Tutoriels/flash/v1_12.swf", "player_4752", "670", "503", "8", false, flashvars_4752, params_4752, attributes_4752);
</script>
index.php
<?php
header('Content-Type: text/html; charset=utf-8');
include_once ('./function.php');
?>
<!doctype html>
<html lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
	<title>Tutoriels GraphikArt</title>
	<link href="./css/bootstrap.css" rel="stylesheet">
	<link href="./css/bootstrap-responsive.css" rel="stylesheet">
	<link href="./css/video.css" rel="stylesheet">
    <style type="text/css">
		body { padding-top: 60px; padding-bottom: 40px; }
        ul { list-style:none; }
        span.titre { font-size:17px;font-weight:bold; }
        #player_4752 { width:670px;height:503px; }
    </style>
<!--[if IE]>
<style type="text/css">
 li span  {
    display:inline;
    zoom:1;

    }

</style>
<![endif]-->    
</head>
<body>
	<div class="navbar navbar-fixed-top">
		<div class="navbar-inner">
			<div class="container">
				<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
				</a>
                <div class="navbar-header">
                      <div class="nav-collapse collapse">
                        <ul class="nav">
                          <li class=""><a href="./">Accueil</a></li>
                          <li class=""><a href="./index.php?s=Films">Film</a></li>
                          <li class=""><a href="./index.php?s=Tutoriels">Tutoriels</a></li>
                        </ul>
                      </div>
            </div>
			</div>
		</div>
	</div>

    <div class="container-fluid">
      <div class="row-fluid">
        <div class="span4">
          <div class="well sidebar-nav">
<?php
    if (isset($_GET['s']) && $_GET['s']=='Films'){
        $dossier = 'D:\Videos\Films';
    }
    else if (isset($_GET['s']) && $_GET['s']=='Tutoriels'){
        $dossier = 'D:\Videos\Tutos';
    }
    else {
        $dossier = '';
    }
    mkmap($dossier);
?>
            <?php // mkmap('videos'); ?>
          </div><!--/.well -->
        </div><!--/span-->
        <div class="span8">
          <div class="hero-unit">
<?php
            if (isset($_GET['v'])){
              include ('./video.php');
            }
?>
          </div><!--/span-->
        </div><!--/row-->
      </div><!--/span-->
    </div><!--/row-->
</body>
</html>

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 14:01
par xTG
A mon avis le souci là est dans l'application flash.
Est-elle capable d'ouvrir un fichier via le vhost ?
Quel type de lien accepte-t-elle ?

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 20:22
par Fre3z69
bin le lien c'est une adresse url standard.

Dans le pire des cas, je vais voir un autre lecteur ^^
Sinon comment faire pour faire accepter les url des Vhost au lecteur?
Sachant que mon url est du style video.loc

Merci beaucoup

Cordialement

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 20:53
par Fre3z69
Je viens vers vous encore, je me suis aperçu d'une erreur de ma part.

En fait, je donne le nom de la vidéo comme adresse et uniquement ça.
Hors en fait les tutos sont classés dans des dossiers, et c'est là que je galère.
Il s'agit des expression régulières.

En effet, pour lui donner l'adresse complète de la vidéo, je voudrais lui enlever la partie " D:\Videos\ " pour lui donner les dossiers suivant tel que Tutos\PHP\...
Mais il faut que les " \ " soient remplacer par des " / ".
Alors j'ai fait ceci, mais je galère avec l'expression régulière.
...
                $adresseVideo = preg_replace("`(.+)(\:)(\\)Videos(\\)`isU", "", $pathfile);
                $adresseVideo = preg_replace("`(\\)`isU", "/", $adresseVideo);
...
En testant l'expression régulière ici, il me semble que c'est correcte, mais j'ai cette erreur:

Code : Tout sélectionner

Warning: preg_replace(): Compilation failed: missing ) at offset 20 in C:\wamp\www\Tutoriels\function.php on line 13
Pourriez vous m'aider SVP, à corriger cette expression régulière?

De plus, mon soucis avec le lecteur n'est tjs pas régler ^^, je cherche des lecteur si vous en connaissez ;-)

Merci beaucoup

Très Cordialement

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 21:18
par xTG
Plutôt qu'une expression régulière un simple str_replace ne suffirait pas ?

Re: Lire une video depuis un disque dur

Posté : 27 nov. 2013, 21:27
par Fre3z69
Si j'y avais pas pensé ^^

Mais pour le savoir quand même, et pas mourir bête, comment tu aurais fait cette Regex?

Merci beaucoup

Cordialement

Re: Lire une video depuis un disque dur

Posté : 28 nov. 2013, 11:54
par xTG
Je fais pas. :mrgreen:
D'une part parce que j'ai en horreur les regex, d'autre part par feignantise quand on peut faire la même chose avec des fonctions.
Et si je n'ai pas le choix...
Je me prends un logiciel de test de regex et une bonne doc et je m'y mets.
Mais le lendemain c'est sorti par l'autre oreille. ^^

Re: Lire une video depuis un disque dur

Posté : 28 nov. 2013, 14:50
par Fre3z69
Je fais pas. :mrgreen:
D'une part parce que j'ai en horreur les regex, d'autre part par feignantise quand on peut faire la même chose avec des fonctions.
Et si je n'ai pas le choix...
Je me prends un logiciel de test de regex et une bonne doc et je m'y mets.
Mais le lendemain c'est sorti par l'autre oreille. ^^
Je suis comme toi, entre nous c'est sympa les regex, mais c'est super chiant et c'est jamais pareil d'un langage à l'autre (à quelque variantes près ^^)

Bon en tout cas j'ai réussi à faire ce que je voulais, le seul truc qui serais bien, c'est d'avoir un lecteur universelle mais sans qu'il est besoin de se connecter à un site web (dixWebPlayer) afin de pouvoir utiliser le script même hors ligne.
J'ai un lecteur qui lit très bien les MP4, MOV, mais il ne lit pas les format films (soit les .avi et .mkv, du coup de passe par divxWebPlayer, mais c'est dépendant d'une connexion et d'un plugin.
Si tu en connais un, peux tu me le donner stp?

En tout cas sujet résolut!

Merci à vous tous, et bonne continuation

Cordialement