Celery处理任务并修改模型字段

时间:2015-07-14 17:12:19

标签: python django ffmpeg celery

我想使用ffmpegcelery将视频转换为mp4用于异步任务。当用户上传视频时,它将用于original_video并保存。之后,我希望芹菜将其转换为mp4_720字段的不同版本。但是我对如何使用芹菜应用该逻辑感到困惑。

app.models.py:

class Video(models.Model):
    title = models.CharField(max_length=75)
    pubdate = models.DateTimeField(default=timezone.now)
    original_video = models.FileField(upload_to=get_upload_file_name)
    mp4_720 = models.FileField(upload_to=get_upload_file_name, blank=True, null=True)
    converted = models.BooleanField(default=False)

app.views.py:

def upload_video(request):
    if request.POST:
        form = VideoForm(request.POST, request.FILES)
        if form.is_valid():
            video = form.save(commit=False)
            video.save()

            // Celery to convert the video
            convert_video.delay(video)

            return HttpResponseRedirect('/')
    else:
        form = VideoForm()
    return render(request, 'upload_video.html', {
        'form':form
    })

app.tasks.py:

@app.task
def convert_video(video):

    // Convert the original video into required format and save it in the mp4_720 field using the following command:
    //subprocess.call('ffmpeg -i (path of the original_video) (video for mp4_720)')

    // Change the converted boolean field to True

    // Save

基本上我的问题是如何在mp4_720中保存转换后的视频。非常感谢您的帮助和指导。谢谢。

**更新**

我想要的方法是首先转换video.original_video,然后将转换后的视频保存在video.mp4_720字段中。如果所有操作都已正确完成,请将video.converted更改为True。如何定义这样做的方法?

0 个答案:

没有答案