在Django中上传和查看不同分辨率的视频

j9per5c4  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(100)

我正在用django开发一个像youtube这样的视频流应用,用于学习。我想实现上传视频的功能,用户和查看它在不同的分辨率,如360 p,480 p等。我不知道如何实现这一点。
我应该保存所有版本的视频吗??那不是多余的吗??
如何将视频转换为不同的分辨率!
我想用AWS S3来做这件事。

slwdgvem

slwdgvem1#

是的,我认为你必须保存你的视频的所有版本。我不认为你可以从Python中调整视频的大小。也许你应该使用一个子进程,比如ffmpeg:
示例(此示例更改大小并删除原始视频,假设视频是models.FileField):

import subprocess

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

相关问题