Загрузка и просмотр видео в разных разрешениях в django

Я создаю приложение для потокового видео, как youtube, на django для учебных целей. Я хочу реализовать функциональность загрузки видео пользователем и просмотра его в различных разрешениях, таких как 360p, 480p и т.д. Я не знаю, как этого добиться...

Нужно ли сохранять все версии видео? Не будет ли это лишним???

А также как конвертировать видео в разных разрешениях!

Я хочу использовать aws s3 для этого.

Да, я думаю, вам нужно сохранить все версии вашего видео. Я не думаю, что вы можете изменить размер видео из Python. Возможно, вам следует использовать подпроцесс, например ffmpeg:

Пример (этот пример изменяет размер и удаляет исходное видео, предполагая, что видео является models.FileField):

def do_video_resize(video):
 filename = video.file.path.split('/')[-1]
 if ffmpeg('-v', '-8', '-i', video.file.path, '-vf', 'scale=-2:480', '-preset', 'slow', '-c:v', 'libx264', '-strict', 'experimental', '-c:a', 'aac', '-crf', '20', '-maxrate', '500k', '-bufsize', '500k', '-r', '25', '-f', 'mp4', ('/tmp/'+ filename ), '-y'):
    resized_video = open('/tmp/' + filename)
    video.file.save(filename ,File(resized_video))
    resized_video.close()
    os.remove('/tmp/'+ filename)
    return video

def ffmpeg(*cmd):
  try:
    subprocess.check_output(['ffmpeg'] + list(cmd))
  except subprocess.CalledProcessError:
    return False
  return True
Вернуться на верх