source: spip-zone/_plugins_/spipmotion/inc/spipmotion_recuperer_logo.php @ 50673

Last change on this file since 50673 was 50673, checked in by kent1@…, 8 years ago

On est en 2011

On utilise flvtool++ si disponible sinon flvtool2

On ne met les métadonnées qu'une seule fois... à la récupération des infos de fichiers.

Incrément de version en 0.8.0 pour marquer le coup

File size: 3.1 KB
Line 
1<?php
2/**
3 * SPIPmotion
4 * Gestion de l'encodage et des métadonnées de vidéos directement dans spip
5 *
6 * Auteurs :
7 * Quentin Drouet (kent1)
8 * 2008-2011 - Distribué sous licence GNU/GPL
9 *
10 */
11
12
13/**
14 * Fonction de récupération de vignette depuis un document video
15 * @param int $id_document L'id numérique du document
16 * @param int $frame la frame à capturer
17 */
18function inc_spipmotion_recuperer_logo($id_document,$frame=50){
19        spip_log("SPIPMOTION : recuperation d un logo du document $id_document","spipmotion");
20        if(!intval($id_document) OR !class_exists('ffmpeg_movie')){
21                return;
22        }
23
24        include_spip('inc/documents');
25        include_spip('inc/filtres_images_mini');
26        $retour = 0;
27        $document = sql_fetsel("docs.id_orig,docs.id_document,docs.fichier,docs.framecount", "spip_documents AS docs INNER JOIN spip_documents_liens AS L ON L.id_document=docs.id_document","L.id_document=".sql_quote($id_document));
28        $chemin_court = $document['fichier'];
29        $chemin = get_spip_doc($chemin_court);
30        $movie = new ffmpeg_movie($chemin,0);
31        if($movie->hasVideo()){
32                $vignette = false;
33                while(!$vignette && ($frame < $document['framecount'])){
34                        $frame1 = $movie->getFrame($frame);
35                        if($frame1){
36                                $string_temp = "$id-$type-$id_document";
37                                $query = md5($string_temp);
38                                $dossier_temp = _DIR_VAR;
39                                $fichier_temp = "$dossier_temp$query.jpg";
40       
41                                $img_temp = $frame1->toGDImage();
42                                imagejpeg($img_temp, $fichier_temp);
43                                $img_finale = $fichier_temp;
44                                $mode = 'vignette';
45                                $ajouter_documents = charger_fonction('ajouter_documents', 'inc');
46                                if(defined('_DIR_PLUGIN_FONCTIONS_IMAGES')){
47                                        include_spip('fonctions_images_fonctions');
48                                        if($retour>10){
49                                                if($document['id_orig'] == '0'){
50                                                        $versions = sql_select('id_document,id_vignette','spip_documents','id_orig='.intval($document['id_document']),'','taille DESC');
51                                                }
52                                                else{
53                                                        $versions = sql_select('id_document,id_vignette','spip_documents','id_orig='.intval($document['id_orig']));
54                                                }
55                                                while($version = sql_fetch($versions)){
56                                                        spip_log($version,'spipmotion');
57                                                        if(intval($version['id_vignette']) > 0){
58                                                                $vignette = sql_getfetsel('fichier','spip_documents','id_document='.intval($version['id_vignette']));
59                                                                $vignette = get_spip_doc($vignette);
60                                                                $x = $ajouter_documents($vignette, $vignette,
61                                                                $type, $id, $mode, $id_document, $actifs);
62                                                            return $x;
63                                                        }
64                                                }
65                                                return false;
66                                        }else if(!filtrer('image_monochrome',$fichier_temp)){
67                                                imagedestroy($img_temp);
68                                                unlink($img_finale);
69                                                $frame = $frame+50;
70                                                $retour++;
71                                        }else if(file_exists($img_finale)){
72                                                $x = $ajouter_documents($img_finale, $img_finale,
73                                                            $type, $id, $mode, $id_document, $actifs);
74                                                imagedestroy($img_temp);
75                                                unlink($img_finale);
76                                                $vignette = true;
77                                        }else{
78                                                return false;
79                                        }
80                                }else{
81                                        if(file_exists($img_finale)){
82                                                $x = $ajouter_documents($img_finale, $img_finale,
83                                                            $type, $id, $mode, $id_document, $actifs);
84                                                imagedestroy($img_temp);
85                                                unlink($img_finale);
86                                                $vignette = true;
87                                        }
88                                }
89                        }
90                        else{
91                                return false;
92                        }
93                }
94        }
95        return $x;
96}
97?>
Note: See TracBrowser for help on using the repository browser.