Commit 4e5144a2 by muhammad-ammar

fix auto generated images ffmpeg command

EDUCATOR-2294
parent 0529c52b
...@@ -40,3 +40,4 @@ celery_deliver_queue: "" ...@@ -40,3 +40,4 @@ celery_deliver_queue: ""
global_timeout: 40 global_timeout: 40
instance_prefix: "" instance_prefix: ""
ffmpeg_compiled: "ffmpeg"
...@@ -39,6 +39,25 @@ class VideoImagesTest(unittest.TestCase): ...@@ -39,6 +39,25 @@ class VideoImagesTest(unittest.TestCase):
with open(TEST_INSTANCE_YAML, 'r') as stream: with open(TEST_INSTANCE_YAML, 'r') as stream:
self.settings = yaml.load(stream) self.settings = yaml.load(stream)
@patch.object(video_images.VideoImages, 'generate', return_value = ['a/1.png'])
@patch.object(video_images.VideoImages, 'upload', return_value = ['s3://images/a/1.png'])
@patch.object(video_images.VideoImages, 'update_val')
def test_create_and_update(self, mock_update_val, mock_upload, mock_generate):
"""
Verify that VideoImages.create_and_update method works as expected.
"""
video_images.VideoImages(
video_object=MockVideo,
work_dir=self.work_dir,
source_file=self.source_file,
jobid=101,
settings=self.settings
).create_and_update()
self.assertTrue(mock_generate.called)
mock_upload.assert_called_with(['a/1.png'])
mock_update_val.assert_called_with(['s3://images/a/1.png'])
@data( @data(
{ {
'duration': 10, 'positions': [1, 4, 7], 'duration': 10, 'positions': [1, 4, 7],
...@@ -57,10 +76,6 @@ class VideoImagesTest(unittest.TestCase): ...@@ -57,10 +76,6 @@ class VideoImagesTest(unittest.TestCase):
""" """
self.assertEqual(video_images.VideoImages.calculate_positions(duration), positions) self.assertEqual(video_images.VideoImages.calculate_positions(duration), positions)
@unittest.skipIf(
'TRAVIS' in os.environ and os.environ['TRAVIS'] == 'true',
'Skipping this test on Travis CI due to unavailability of required ffmpeg version.'
)
def test_generate(self): def test_generate(self):
""" """
Verify that VideoImages.generate method works as expected. Verify that VideoImages.generate method works as expected.
......
...@@ -91,10 +91,8 @@ class VideoImages(object): ...@@ -91,10 +91,8 @@ class VideoImages(object):
generated_images.append( generated_images.append(
os.path.join(self.work_dir, '{}.png'.format(uuid4().hex)) os.path.join(self.work_dir, '{}.png'.format(uuid4().hex))
) )
command = ('{ffmpeg} -ss {position} -i {video_file} -vf ' command = ('{ffmpeg} -ss {position} -i {video_file} -y -vf scale={width}:{height}'
r'select="gt(scene\,0.4)",scale={width}:{height}' ' -vsync 2 -vframes 1 {output_file}'.format(
' -vsync 2 -vframes 1 {output_file}'
' -hide_banner -y'.format(
ffmpeg=self.settings['ffmpeg_compiled'], ffmpeg=self.settings['ffmpeg_compiled'],
position=position, position=position,
video_file=self.source_video_file, video_file=self.source_video_file,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment