Exemplo n.º 1
0
 def __init__(self):
     MetaGen.__init__(self)
     self.path = None
     self.container = None
     self.duration = None
     self.start = None
     self.bitrate = None
     self.size = None
     # Streams
     self._items = list()
     self._ignore = ["path"]
     self._rich_meta_deep = True
     self._mapper = settings.MEDIA_RM_MAP
     self._ident = settings.IDENTIFY_COMMAND
     if self._ident == None:
         com = command("which " + settings.IDENTIFY_PROGRAM)[0]
         if com != "":
             settings.IDENTIFY_COMMAND = com + settings.IDENTIFY_PARAM
             self._ident = settings.IDENTIFY_COMMAND
             version = com + " -version"
             v = command(version)[0].split("\n")
             ffv = "".join((l for l in v if l.startswith("FFmpeg")))
             _log.debug("Good, ffmpeg version '%s' found in path '%s', settings.IDENTIFY_COMMAND set. Please note that identified media parameters output differs between ffmpeg versions, original version used was 'SVN-r25529'", ffv, com)
         else:
             _log.error("Unable to find suitable program '%s' for identification in system path. Either install program as specified in settings.IDENTIFY_PROGRAM or specify settings.IDENTIFY_COMMAND directly.", settings.IDENTIFY_PROGRAM)
Exemplo n.º 2
0
         # For VoD items get size, fails for live
         if f != None:
             try:
                 media.size = f.info().getfirstmatchingheader('Content-Length')[0].split(":")[1].strip()
                 f.close()
             except Exception, e:
                 f.close()
     else:
         _log.error("Path specified '%s' is neither a file or reference that could be handled. Quit.", path)
         return None
 else:
     media.size = str(os.path.getsize(path))
 media.path = path
 if media._ident != None:
     # ffmpeg fails, look for std error
     ident = command(media._ident + media.path)[1].split("\n")
     inp = "".join(l for l in ident if l.find("Input") != -1) 
     dur = "".join(l for l in ident if l.find("Duration") != -1)
     stream = "\n".join(l for l in ident if l.find("Stream") != -1)
     # ffmpeg always fails, see if an error has occured
     error = "".join(l for l in ident if l.find("error occurred") != -1 or l.find("Input/output error") != -1)
     if error != "":
         _log.error("Getting media metadata has failed with an ffmpeg error: %s", error)
         return None
     if inp.find(",") != -1:
         media.container = inp.split(",")[1].strip()
     else:
         _log.warn("Getting media metadata has failed with since bad Input line was provided: '%s'", inp) 
         return None
     if dur.find(",") != -1:
         ds = dur.split(",")