Prevent exception on transcoding failure (bug 460)

Fix an unhandled exception when video fails to transcode for some
reason. Closes bug 460.
This commit is contained in:
Boris Bobrov 2015-03-07 13:30:43 +03:00
parent 714008693e
commit bd50f8bf70
2 changed files with 19 additions and 12 deletions

View File

@ -252,13 +252,15 @@ class CommonVideoProcessor(MediaProcessor):
# metadata itself has container-related data in tags, like video-codec # metadata itself has container-related data in tags, like video-codec
store_metadata(self.entry, metadata) store_metadata(self.entry, metadata)
orig_dst_dimensions = (metadata.get_video_streams()[0].get_width(),
metadata.get_video_streams()[0].get_height())
# Figure out whether or not we need to transcode this video or # Figure out whether or not we need to transcode this video or
# if we can skip it # if we can skip it
if skip_transcode(metadata, medium_size): if skip_transcode(metadata, medium_size):
_log.debug('Skipping transcoding') _log.debug('Skipping transcoding')
dst_dimensions = (metadata.get_video_streams()[0].get_width(), dst_dimensions = orig_dst_dimensions
metadata.get_video_streams()[0].get_height())
# If there is an original and transcoded, delete the transcoded # If there is an original and transcoded, delete the transcoded
# since it must be of lower quality then the original # since it must be of lower quality then the original
@ -273,8 +275,10 @@ class CommonVideoProcessor(MediaProcessor):
vorbis_quality=vorbis_quality, vorbis_quality=vorbis_quality,
progress_callback=progress_callback, progress_callback=progress_callback,
dimensions=tuple(medium_size)) dimensions=tuple(medium_size))
if self.transcoder.dst_data:
video_info = self.transcoder.dst_data.get_video_streams()[0] video_info = self.transcoder.dst_data.get_video_streams()[0]
dst_dimensions = (video_info.get_width(), video_info.get_height()) dst_dimensions = (video_info.get_width(),
video_info.get_height())
self._keep_best() self._keep_best()
# Push transcoded video to public storage # Push transcoded video to public storage
@ -286,6 +290,8 @@ class CommonVideoProcessor(MediaProcessor):
self.entry.set_file_metadata('webm_video', **file_metadata) self.entry.set_file_metadata('webm_video', **file_metadata)
self.did_transcode = True self.did_transcode = True
else:
dst_dimensions = orig_dst_dimensions
# Save the width and height of the transcoded video # Save the width and height of the transcoded video
self.entry.media_data_init( self.entry.media_data_init(

View File

@ -358,6 +358,7 @@ class VideoTranscoder(object):
_log.info('{percent}% done...'.format(percent=percent)) _log.info('{percent}% done...'.format(percent=percent))
elif message.type == Gst.MessageType.ERROR: elif message.type == Gst.MessageType.ERROR:
_log.error('Got error: {0}'.format(message.parse_error())) _log.error('Got error: {0}'.format(message.parse_error()))
self.dst_data = None
self.__stop() self.__stop()
def __stop(self): def __stop(self):