websiteWebsite
ekd EKD
Logiciel de post-production pour vidéo, image et audio

 

Browse the code

Revision log Information on the revision
Revision: 273 (differences)
Author: ekd
Log message: utf-8: Correction définitive

Le problème que l'on traine depuis un moment est dû au fait que
lorsqu'on se trouve dans une console, l'encodage se stdout est en
utf-8 alors que lorsqu'on se trouve sous x11 on est en ascii pour stdout.
Pour harmoniser ce comportement, il suffit d'utiliser la variable
d'environnement : PYTHONIOENCODING=utf_8 qui force l'encodage quelque soit
l'environnment.
Je l'ai ajouté au script de démarrage.

détails ici : http://wiki.python.org/moin/PrintFails
Change revision:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import subprocess
 
class FFmpegFormat(object):
        """ Classe pour déterminer les formats chargés dans la config de FFmpeg. Cette
        classe est particulièrement faite pour émettre un boîte de dialogue d'erreur
        (dans le transcodage vidéo) si l'utilisateur essaie de faire le traitement
        vers le WebM (car les anciennes versions de Ffmpeg ne le prennent pas en charge """
        
        def __init__(self, format_entree):
                # Initialisation
                self.format_entree = format_entree
                # Processus avec subprocess
                process = subprocess.Popen(['ffmpeg','-formats'], stdout=subprocess.PIPE)
                # Liste avec itération pour passer en revue la sortie du process
                # A voir ici pour l'itération:
                # http://stackoverflow.com/questions/2804543/read-subprocess-stdout-line-by-line
                liste1 = [ligne1 for ligne1 in iter(process.stdout.readline,'')]
                # Vérification si le format est bien présent dans la config de FFmpeg
                liste2 = [ligne3 for ligne2 in liste1 for ligne3 in ligne2.split(' ') if ligne3 == format_entree]
                # Attribution des drapeaux selon les cas (0: Faux, 1: Vrai).
                # Pour le webm (qui n'est pas pris en charge par la version 
                # de FFmpeg sous (K)ubuntu LTS 10.04) ce sera Faux donc 0.
                if liste2 == []: self.vrai_faux = 0
                elif liste2[0] == format_entree: self.vrai_faux = 1
 
        def __str__(self): 
                """ Attribution/retour de la valeur """
                # Méthode trouvée ici:
                # http://stackoverflow.com/questions/2491819/python-init-how-to-return-a-value
                return str(self.vrai_faux)
 
class FFmpegFilters(object):
        """ Classe pour déterminer si cette version de FFmpeg comporte des filtres (délivrés 
        par la syntaxe ffmpeg -filters) et qui correspond à des versions très récentes (en 
        ce 13/08/11)de FFmpeg. """
        
        def __init__(self): 
                process = subprocess.Popen(['ffmpeg','-filters'], stdout=subprocess.PIPE)
                liste1 = [ligne1 for ligne1 in iter(process.stdout.readline,'')]
                liste2 = [ligne3 for ligne2 in liste1 for ligne3 in ligne2.split(' ') if ligne3 == 'pad']
                if liste2 == []: self.nouveau_ffmpeg = 0
                elif liste2[0] == 'pad': self.nouveau_ffmpeg = 1