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): |