From fcabf013e081cd745439c2d87b975e92cdc755e4 Mon Sep 17 00:00:00 2001 From: Bastiaan Welmers Date: Mon, 4 May 2020 22:12:13 +0200 Subject: [PATCH] Added transcoding types --- videodinges/admin.py | 2 +- videodinges/models.py | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/videodinges/admin.py b/videodinges/admin.py index 21431d5..ad40a16 100644 --- a/videodinges/admin.py +++ b/videodinges/admin.py @@ -20,7 +20,7 @@ class TranscodingsForm(forms.ModelForm): class TranscodingsInline(admin.StackedInline): model = models.Transcoding form = TranscodingsForm - fields = ['quality', 'url', 'upload'] + fields = ['quality', 'type', 'url', 'upload'] extra = 0 class VideoAdmin(admin.ModelAdmin): diff --git a/videodinges/models.py b/videodinges/models.py index 4bd2779..461aea6 100644 --- a/videodinges/models.py +++ b/videodinges/models.py @@ -12,6 +12,13 @@ class Quality(NamedTuple): height: int priority: int +class TranscodingType(NamedTuple): + name: str + short_name: str + + def __str__(self): + return self.name + qualities = ( Quality(name='360p', width=640, height=360, priority=1), Quality(name='480p', width=853, height=480, priority=2), @@ -19,6 +26,13 @@ qualities = ( Quality(name='1080p', width=1920, height=1080, priority=1), ) +transcoding_types = ( + TranscodingType(name='video/webm', short_name='vp8'), + TranscodingType(name='video/webm; codecs="vp8, vorbis"', short_name='vp8'), + TranscodingType(name='video/webm; codecs="vp9, opus"', short_name='vp9'), + TranscodingType(name='video/mp4', short_name='h.264'), + TranscodingType(name='video/mp4; codecs="avc1.64001f,mp4a.40.2"', short_name='h.264'), +) class Video(models.Model): id = models.AutoField(primary_key=True) @@ -46,6 +60,7 @@ class Transcoding(models.Model): id = models.AutoField(primary_key=True) video = models.ForeignKey(Video, on_delete=models.CASCADE, related_name='transcodings') quality = models.CharField(choices=((quality.name, quality.name) for quality in qualities), max_length=128) + type = models.CharField(choices=((str(type_), str(type_)) for type_ in transcoding_types), max_length=128) upload = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True) url = models.CharField(max_length=256, null=True, blank=True, unique=True) @@ -57,7 +72,7 @@ class Transcoding(models.Model): return get_quality_by_name(self.quality) class Meta: - unique_together = ('video', 'quality') + unique_together = ('video', 'quality', 'type') constraints = [constraints.CheckConstraint(check=Q(upload__isnull=False) | Q(url__isnull=False), name='upload_or_url_is_filled'), constraints.CheckConstraint(check=~(Q(upload__isnull=False) & Q(url__isnull=False)),