def handle(self, *args, **options):
        video_id = options['video_id']

        transcoder = VideoTranscoder()
        video = Video.objects.get(pk=video_id)

        transcoder.video = video # hack, sorry
        transcoder.update_jamstarts()
Exemple #2
0
    def setUp(self):
        self.venue = Venue(name="MET Lab", lat=10.0, lng=20.0, website="http://projectjamjar.com", utc_offset=12)
        self.venue.save()

        self.concert = Concert(date="2016-01-01", venue=self.venue)
        self.concert.save()

        self.user = User(username='******', email='*****@*****.**', first_name='Test', last_name='Test', password='******')
        self.user.save()

        self.video1 = Video(name="video1", concert_id=self.concert.id, length=10.0, user=self.user)
        self.video1.save()
        
        self.video_transcoder = VideoTranscoder()
        self.truncateTestDb()
Exemple #3
0
    def handle(self, *args, **options):
        self.s3 = boto3.resource('s3')
        video_id = options['video_id']

        transcoder = VideoTranscoder()
        video = Video.objects.get(pk=video_id)

        transcoder.video = video # hack, sorry

        try:
            self.download_source(video)
        except botocore.exceptions.ClientError as e:
            print "The video with id {} wasn't found in S3!".format(video.id)
            sys.exit(1)

        transcoder.transcode(['mp4', 'hls'])

        print "uploading to S3"
        transcoder.upload_to_s3()

        print "Deleting local files"
        transcoder.delete_source()

        print "Done!"
Exemple #4
0
class LiloTestCase(TestCase):
    def truncateTestDb(self):
        if 'test' in settings.LILO_CONFIG['database']['db']:
            lilo = Lilo(settings.LILO_CONFIG, None, None)
            lilo.djv.db.empty()
        else:
            raise RuntimeError("trying to truncate a non-test table!")

    def tearDown(self):
        os.remove(TEST_HLS_PATH)
        os.remove(TEST_TS_PATH)
        self.truncateTestDb()

    def setUp(self):
        self.venue = Venue(name="MET Lab", lat=10.0, lng=20.0, website="http://projectjamjar.com", utc_offset=12)
        self.venue.save()

        self.concert = Concert(date="2016-01-01", venue=self.venue)
        self.concert.save()

        self.user = User(username='******', email='*****@*****.**', first_name='Test', last_name='Test', password='******')
        self.user.save()

        self.video1 = Video(name="video1", concert_id=self.concert.id, length=10.0, user=self.user)
        self.video1.save()
        
        self.video_transcoder = VideoTranscoder()
        self.truncateTestDb()

    @skip('need to redo this test')
    def test_transcode(self):
        success = self.video_transcoder.transcode_to_hls(TEST_VIDEO_PATH_1, TEST_HLS_PATH)
        self.assertTrue(success, 'Error transcoding video')

        out_dir = os.path.join(os.path.dirname(__file__), 'out')

        uploaded = []
        deleted  = []

        def mocked_upload(s3_path, file_path):
            uploaded.append((s3_path, file_path))

        def mocked_delete(src_dir):
            deleted.append(src_dir)

        self.video_transcoder.do_upload_to_s3 = mocked_upload
        self.video_transcoder.delete_source   = mocked_delete
        self.video_transcoder.upload_to_s3(out_dir)

        self.assertTrue(('test/out/part1.hls', TEST_HLS_PATH) in uploaded)
        self.assertTrue(('test/out/part10.ts', TEST_TS_PATH) in uploaded)
        self.assertTrue(len(uploaded) == 2)

        venue = Venue(name="MET Lab")
        venue.save()

        concert = Concert(date="2016-01-01", venue=venue)
        concert.save()


        v1 = Video(concert_id=concert.id, length=2)
        v1.save()

        v2 = Video(concert_id=concert.id, length=2)
        v2.save()

        length_1 = self.video_transcoder.fingerprint(TEST_VIDEO_PATH_1, v1.id)
        length_2 = self.video_transcoder.fingerprint(TEST_VIDEO_PATH_2, v2.id)

        self.assertTrue(abs(5 - length_1) < .1)
        self.assertTrue(abs(5 - length_2) < .1)
    def handle(self, *args, **options):
        video_id = options['video_id']

        transcoder = VideoTranscoder()
        transcoder.run(video_id)