src/pyams_media/process.py
changeset 9 7c73df1106b4
parent 0 fd39db613f8b
child 23 d49c3f386782
equal deleted inserted replaced
8:e42e04460e14 9:7c73df1106b4
    90                     logger.warning("Can't find requested media {0}!".format(media_id))
    90                     logger.warning("Can't find requested media {0}!".format(media_id))
    91                     return
    91                     return
    92                 # extract converter output
    92                 # extract converter output
    93                 logger.debug("Starting conversion process for {0!r} to {1}".format(media, media_format))
    93                 logger.debug("Starting conversion process for {0!r} to {1}".format(media, media_format))
    94                 manager = ITransactionManager(media)
    94                 manager = ITransactionManager(media)
    95                 for loop, conversion in converter.convert(media):
    95                 for width, conversion in converter.convert(media):
    96                     logger.debug("Finished FFmpeg conversion process. {0} bytes output".format(len(conversion)))
    96                     logger.debug("Finished FFmpeg conversion process to {0}, {1} bytes output".format(media_format,
       
    97                                                                                                       len(conversion)))
    97                     # add conversion in a transaction attempts loop
    98                     # add conversion in a transaction attempts loop
    98                     for attempt in manager.attempts():
    99                     if len(conversion) > 0:
    99                         with attempt as t:
   100                         for attempt in manager.attempts():
   100                             IMediaConversions(media).add_conversion(conversion, media_format, converter.format, loop)
   101                             with attempt as t:
   101                         if t.status == 'Committed':
   102                                 IMediaConversions(media).add_conversion(conversion, media_format, converter.format, width)
   102                             break
   103                             if t.status == 'Committed':
       
   104                                 break
       
   105                     else:
       
   106                         logger.warning("Finished FFmpeg conversion process with **NO OUTPUT** !!!")
   103         finally:
   107         finally:
   104             if manager is not None:
   108             if manager is not None:
   105                 manager.abort()
   109                 manager.abort()
   106             connection.close()
   110             connection.close()
   107             storage.close()
   111             storage.close()
   127         ConversionThread(ConversionProcess(settings)).start()
   131         ConversionThread(ConversionProcess(settings)).start()
   128         return [200, 'Conversion process started']
   132         return [200, 'Conversion process started']
   129 
   133 
   130     def test(self, settings):
   134     def test(self, settings):
   131         messages = ['Conversion process ready to handle requests.']
   135         messages = ['Conversion process ready to handle requests.']
   132         ffmpeg = shutil.which('ffmpeg')
   136         for command in ('ffmpeg', 'ffprobe'):
   133         if ffmpeg is None:
   137             whereis = shutil.which(command)
   134             messages.append("WARNING: missing 'ffmpeg' command!")
   138             if whereis is None:
   135         else:
   139                 messages.append("WARNING: missing required command '{0}'!".format(command))
   136             messages.append("'ffmpeg' command is available.")
   140             else:
       
   141                 messages.append("Required command '{0}' is available.".format(command))
   137         return [200, '\n'.join(messages)]
   142         return [200, '\n'.join(messages)]
   138 
   143 
   139 
   144 
   140 class MediaConversionMessageHandler(ZMQMessageHandler):
   145 class MediaConversionMessageHandler(ZMQMessageHandler):
   141     """Media conversion message handler"""
   146     """Media conversion message handler"""