Conception d'un clone youtube


datch
WRInaute impliqué
WRInaute impliqué
 
Messages: 987
Inscription: 16 Juin 2006

Message le Sam Nov 25, 2006 0:42

petite question au niveau du compteur et des commentaires.
comment les faire ?

merci d'avance.

Mitirapa
WRInaute passionné
WRInaute passionné
 
Messages: 1657
Inscription: 10 Juil 2002

Message le Lun Nov 27, 2006 10:30

ben php/mysql... faut savoir un peu coder, c'est pas si dur a faire

objectifweb
WRInaute discret
WRInaute discret
 
Messages: 130
Inscription: 6 Oct 2004

Message le Lun Nov 27, 2006 13:28

Bonjour,
J'ai trouvé un script flash à $5 intéressant pour imiter justement la partie player de youtube, ha oui, les sources sont incluses :)

Toutes les données sont envoyées en écrivant un fichier xml simple, possibilité de donner un avis de 1 à 5, un lien pour partager la vidéo, une petite visu des films ... pour le moment les votes se placent dans un fichier texte mais une version mysql est en cours...

http://www.pvh.be/youtube.asp

catégorie 'flashvideo"...

Patrick


keroin
WRInaute passionné
WRInaute passionné
 
Messages: 2308
Inscription: 29 Avr 2006

Message le Lun Nov 27, 2006 13:37

Hum...il en existe des gratuits....
=> http://www.*******/scripts.php

Edit : lien édité car le tld est devenu une farmlink :roll:
Dernière édition par keroin le Mar Jan 02, 2007 17:03, édité 1 fois.

guiguibcn
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Inscription: 30 Nov 2006

creation flv directement a la fin del upload

Message le Jeu Nov 30, 2006 15:56

Salut,
je viens devoir le post avec creation des fichiers par un cron ttes les 20 minutes.
Voici comment je fais pour ma part: je lance en "tache de fond" des la fin de l upload (utilisatio d un cgi pour la barre de progression) la commande:
Code: Tout sélectionner
exec("/usr/bin/php ".$pathToFile."/exec_process.php ".$param1." ".$param2." ".$param3." > /dev/null &");


Dans le fichier exec_process.php je recup les 3 param passes dans la ligne de commande
Code: Tout sélectionner
   $param1 = $argv[1];
   $param2 = $argv[2];
   $param3 = $argv[3];

   ini_set( "max_execution_time", "3600" );

   $path_ffmpeg = "ffmpeg -y -i ".$pathInputFile." -s 320x240 -acodec mp3 -ab 96 -ar 22050 -f flv ".$pathOutputFile;
   $tof_ffmpeg = "ffmpeg -an -y -ss 00:00:01 -i ".$pathOutputFile." -f image2 ".$pathImgVideo;
   $inject_meta = "flvtool2 -U ".$pathOutputFile;

   exec($path_ffmpeg);
   exec($tof_ffmpeg);
   exec($inject_meta);

   unlink($pathInputFile);

Ce code lance donc en tache de fond la convertion de la video et supprime le fichier uploade tmp_file.
Des la fin de l upload vous pouvez donc naviguer sur le site. A vous ensuite de mettre une image intermediaire le temps que le process se termine et un check qd il est termine pour afficher la video et creer le lien pour la visualiser.
J espere que ca aidera des personnes...
Vous pouvez aller voir sur le site http://home.mixupmusic.com et faire des tests d upload.
Toute suggestion pour ameliorer le site est plus que bienvenue (tjs en phase de dev)


datch
WRInaute impliqué
WRInaute impliqué
 
Messages: 987
Inscription: 16 Juin 2006

Message le Mer Déc 06, 2006 23:03

bonjour,

voila j'ai installer ffmpeg et ffmpeg-php sur mon serveur.


j'essaye de faire un test pour encoder une video, mais je me retrouve avec cette erreur :


Nom du média : video-mov.mov (medias/video-mov.mov)
# Le fichier est un fichier vidéo
# Codec Video : svq3
# Codec Audio : mp2
# Duree : 65.724082
# Taille : 240x320
# BitRate : 460066
# commande : ffmpeg -i medias/video-mov.mov -acodec mp3 -b 256 -er 4 -ar 22050 -f flv -y flv/1165441979-video-mov.mov.flv
# Erreur lors de l'encodage flv/1165441979-video-mov.mov.flv



voila le script que j'utilise :

Code: Tout sélectionner
<?php
/**
* Fichier demo FFMPEG/PHP
* montre le principe d'utilisation de FFMPEG/PHP pour :
* - créer un objet ffmpeg-php,
* - accèder à une vidéo,
* - faire la différence entre un fichier audio et un fichier vidéo
* - extraire des informations des médias.
* - encoder en flv si le fichier est une video

* @author Nicolas Cerisier <nicolas.cerisier@gmail.com>
*/

/**
* Init: 
* - définition d'un emplacement pour les médias
* - présence de ffmpeg
*/

// définition de la collection de medias
$media_path = 'medias';

// Confirme que l'extension est presente
$extension = "ffmpeg";
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;
if (!extension_loaded('ffmpeg')) {
    dl($extension_soname) or die("Impossible de trouver l'extension: $extension_fullname\n");
}

/**
* Traitements
* - on parcourt le repertoire,
* - on ouvre le média,
* - on test le média (type)
* - on extrait des informations
*/

if(is_dir($media_path) && $dir = opendir($media_path)) {
    while (($media = readdir($dir)) !== false) {
        if($media != '.' && $media != '..'){
            $fullpath = $media_path.'/'.$media;
            $HTML .= "<b> Nom du média : $media ($fullpath) </b>\n";
             
            // Instanciation de ffmpeg_movie
            if(is_object($mediaObj = new ffmpeg_movie($fullpath) )){
                 
                /**
                 * FFMPEG-PHP est normalement destiné à trater des vidéos.
                 * Mais les méthodes fournies permettent d'élargir aux fichiers audios si on considere qu'un fichier audio
                 * est une vidéo sans codec video mais avec codec audio ;)
                 */
                if($videoCodec = $mediaObj->getVideoCodec()) {
                    $HTML .= "<li> Le fichier est un fichier vidéo \n";
                    $HTML .= "<li> Codec Video : ".$videoCodec;
                    $HTML .= "<li> Codec Audio : ".$mediaObj->getAudioCodec();
                    $HTML .= "<li> Duree : ".$mediaObj->getDuration();
                    $HTML .= "<li> Taille : ".$mediaObj->getFrameHeight()."x".$mediaObj->getFrameWidth();
                    $HTML .= "<li> BitRate : ".$mediaObj->getBitRate();
                     
                    /**
                     * ------------------------------------------------------------------------------------------------- 
                     * ENCODAGE 
                     * Si le fichier est une vidéo valide, 
                     * - nous allons lancer l'encodage via ffmpeg (en ligne de commande)
                     * - l'encodage se fera en FLV, 
                     * ------------------------------------------------------------------------------------------------- 
                     */
                     
                    // Construction de la ligne de commande
                    $flv_path = "flv";
                    $target_name = preg_replace('/ /','_',$flv_path.'/'.time().'-'.$media.'.flv');
             
                    $ffmpeg_cli = "ffmpeg -i $fullpath -acodec mp3 -b 256 -er 4  -ar 22050 -f flv -y $target_name";
                     
                    //print `$ffmpeg_cli`;
                    $HTML .= "<li> commande : $ffmpeg_cli \n"; 
                    passthru($ffmpeg_cli,$res);
                    if(!$res){
                        $HTML .= "<li> fichier flv disponible <a href=\"$target_name\"> ici </a>\n";
                    } else {
                         $HTML .= "<li> Erreur lors de l'encodage \n";
                    }
                    // ------------------------------------------------------------------------------------------------- 
                     
                } elseif($audioCodec = $mediaObj->getAudioCodec()) {
                    $HTML .= "<li> Le fichier semble etre un fichier audio: pas de frames, mais une piste audio\n";
                    $HTML .= "<li> Codec Audio : ".$audioCodec;
                    $HTML .= "<li> Artist (iD3) : ".$mediaObj->getArtist();
                    $HTML .= "<li> Album (iD3) : ".$mediaObj->getAlbum();
                    $HTML .= "<li> Artist (iD3) : ".$mediaObj->getArtist();
                    $HTML .= "<li> Genre (iD3) : ".$mediaObj->getGenre();
                    $HTML .= "<li> BitRate : ".$mediaObj->getBitRate();
                     
                     
                } else {
                    $HTML .= "<b> PROBLEME </b> : le fichier n'a ni audio ni frames valides";
                }
                 
                $HTML .= "\n\n";
            } else {
                $HTML .= "<b> ERREUR </b> : impossible d'instancier FFMPEG / Media invalide \n";
            }
             
        }
    }
}

print nl2br($HTML);
?>


HELP,HELP,HELP,HELP,HELP,HELP
merci d'avance

Mitirapa
WRInaute passionné
WRInaute passionné
 
Messages: 1657
Inscription: 10 Juil 2002

Message le Jeu Déc 07, 2006 9:34

[--Eric--] a écrit:
Mitirapa a écrit:as tu essayé en utilisant plus d'option pour convertir, par exemple j'ai trouvé sur le net cet exemple:

ffmpeg -i DSCN2114.MOV -acodec mp3 -ab 32 -f flv -s 320x240 -ar 22050 -aspect 4:3 -pass 1 -b 256 -r 15 -y jules.flv


Merci ça va bcp mieux !! :-)


as tu testé cet exemple dans ton script avec ces options ?

[--Eric--]
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 415
Inscription: 6 Jan 2004

Message le Mer Déc 13, 2006 20:42

Bonsoir.

Petite question à propos de la génération de la vignette. Parfois certaines vidéos commencent par une image noire (j'ai l'impression que c'est quasi systématique avec ceux qui utilisent windows movie maker) et c'est donc une image noire qui ressort en vignette.

Bref dans :

Code: Tout sélectionner
/usr/local/bin/ffmpeg -i "$fichier2" -vcodec mjpeg -vframes 1 -an -f rawvideo -s 160x120 "$fichier2.jpg"


comment modifier ou ajouter une otion qui ne prend pas la première image du film?

Merci.

@+

Eric

Mitirapa
WRInaute passionné
WRInaute passionné
 
Messages: 1657
Inscription: 10 Juil 2002

Message le Jeu Déc 14, 2006 11:25

Code: Tout sélectionner
/usr/local/bin/ffmpeg -i "$fichier2" -y -ss 16 -s 160x120 -vframes 1 -an -sameq
-f mjpeg "$fichier2.jpg"

-ss 16 va chercher plus loin dans le tps

mais le mieux serait en fait d'utiliser le mod php ffmpeg pour recuperer la longueur de la video, et aller chercher au milieu l'image

Mitirapa
WRInaute passionné
WRInaute passionné
 
Messages: 1657
Inscription: 10 Juil 2002

Message le Mer Déc 20, 2006 12:42

Discussion dédiée à la qualité d'encodage:
http://www.webrankinfo.com/forums/viewtopic_64654.htm

[--Eric--]
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 415
Inscription: 6 Jan 2004

Message le Mer Déc 20, 2006 16:12

Mitirapa a écrit:
Code: Tout sélectionner
/usr/local/bin/ffmpeg -i "$fichier2" -y -ss 16 -s 160x120 -vframes 1 -an -sameq
-f mjpeg "$fichier2.jpg"

-ss 16 va chercher plus loin dans le tps

mais le mieux serait en fait d'utiliser le mod php ffmpeg pour recuperer la longueur de la video, et aller chercher au milieu l'image


Merci c'est impec !

romulus
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 2 Jan 2007

Message le Mar Jan 02, 2007 16:45

Salut,

J'utilise la methode avec "exec(..." et le flv créé est vide (0 Ko). Pourtant la même commande fonctionne très bien en ssh.

Quelqu'un a un idée? je suis à cour..

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Mar Jan 02, 2007 17:24

Voici qqs pistes à régarder :

problème de timing peut etre ton script se termine trop tot ?
quel est son max_execution_time ?

Tu travailles avec le php en mod apache ou en cgi ?

As tu mis les bonnes permissions sur les répertoires ? ton user qui execute le script php a-t-il le droit d'écrire dans ce répertoire ?

Quel est la taille limite de mémoire utilisable par ton script ?

--
David

romulus
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 2 Jan 2007

Message le Mar Jan 02, 2007 17:49

j'utilise php5.
le mod php? je ne connais pas cette expression... j'ai un serveur apache2...
Je trouve où cette info? et quel mod dois-je-utiliser?

max_execution_time = 30 seconde
memory_limit = 16Mo

Je fais des test sur des vidéos de quelques Ko, pas de quoi saturer le serveur

Les repertoires sont en chmod 775. Mais les vidéos uploadé sont en 644 ainsi que les .flv vide. c'est pas le top je pense!
T'as une idée pour qu'elles adoptent automatiquement le chmod du répertoire?

Merci d'avance!

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Mar Jan 02, 2007 18:14

bon ok vu ce que tu dis tu dois être en mod apache :)

Bon déjà tu peux mettre le max_execution_time à infini
Code: Tout sélectionner
set_time_limit(0)

ca fonctionnera si ton serveur n'a pas le safe mode d'activé.

ensuite ajoute à la suite de ta commande ceci ">/dev/null 2>&1"
exemple, tu faisais
Code: Tout sélectionner
exec("tatatotototoato");

tu le rajoutes comme ceci :
Code: Tout sélectionner
exec("tatatotototoato >/dev/null 2>&1");

Ca aura pour conséquence de rédiriger les eventuelles sorties de l'execution de la commande à la poubelle mais tu en as pas besoin.

Voila test c'est 2 solutions de manieres indépendantes et aussi jumelés

--
David

Conception d'un clone youtube Conception d'un clone youtube

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités