From 4b17a8b59291c70231a2ff237ae47d36c12affa0 Mon Sep 17 00:00:00 2001
From: Boris Bobrov <breton@cynicmansion.ru>
Date: Sat, 7 Mar 2015 13:30:43 +0300
Subject: [PATCH] Prevent exception on transcoding failure
Fix an unhandled exception when video fails to transcode for some
reason
---
mediagoblin/media_types/video/processing.py | 22 ++++++++++++----------
mediagoblin/media_types/video/transcoders.py | 1 +
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/mediagoblin/media_types/video/processing.py b/mediagoblin/media_types/video/processing.py
index bf19522..6c50642 100644
|
a
|
b
|
class CommonVideoProcessor(MediaProcessor):
|
| 273 | 273 | vorbis_quality=vorbis_quality, |
| 274 | 274 | progress_callback=progress_callback, |
| 275 | 275 | dimensions=tuple(medium_size)) |
| 276 | | video_info = self.transcoder.dst_data.get_video_streams()[0] |
| 277 | | dst_dimensions = (video_info.get_width(), video_info.get_height()) |
| 278 | | self._keep_best() |
| | 276 | if self.transcoder.dst_data: |
| | 277 | video_info = self.transcoder.dst_data.get_video_streams()[0] |
| | 278 | dst_dimensions = (video_info.get_width(), |
| | 279 | video_info.get_height()) |
| | 280 | self._keep_best() |
| 279 | 281 | |
| 280 | | # Push transcoded video to public storage |
| 281 | | _log.debug('Saving medium...') |
| 282 | | store_public(self.entry, 'webm_video', tmp_dst, |
| 283 | | self.name_builder.fill('{basename}.medium.webm')) |
| 284 | | _log.debug('Saved medium') |
| | 282 | # Push transcoded video to public storage |
| | 283 | _log.debug('Saving medium...') |
| | 284 | store_public(self.entry, 'webm_video', tmp_dst, |
| | 285 | self.name_builder.fill('{basename}.medium.webm')) |
| | 286 | _log.debug('Saved medium') |
| 285 | 287 | |
| 286 | | self.entry.set_file_metadata('webm_video', **file_metadata) |
| | 288 | self.entry.set_file_metadata('webm_video', **file_metadata) |
| 287 | 289 | |
| 288 | | self.did_transcode = True |
| | 290 | self.did_transcode = True |
| 289 | 291 | |
| 290 | 292 | # Save the width and height of the transcoded video |
| 291 | 293 | self.entry.media_data_init( |
diff --git a/mediagoblin/media_types/video/transcoders.py b/mediagoblin/media_types/video/transcoders.py
index 3c060fd..ba469af 100644
|
a
|
b
|
class VideoTranscoder(object):
|
| 358 | 358 | _log.info('{percent}% done...'.format(percent=percent)) |
| 359 | 359 | elif message.type == Gst.MessageType.ERROR: |
| 360 | 360 | _log.error('Got error: {0}'.format(message.parse_error())) |
| | 361 | self.dst_data = None |
| 361 | 362 | self.__stop() |
| 362 | 363 | |
| 363 | 364 | def __stop(self): |