django - 处理子进程文件输出

标签 django ffmpeg django-views subprocess

我正在开发一个项目,在该项目中,用户有时会上传视频,而在后端我必须为该视频生成缩略图。为此,我更喜欢 ffmpeg,并且系统处于 django 环境中。
这是我的 View 功能

def upload(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            newdoc = Document(docfile=request.FILES['docfile'])
            filename = str(request.FILES['docfile'].name)
            newdoc.save()
            op = subprocess.call(['ffmpeg', '-i',"media/private/"+up, '-ss', '00:00:03.000', '-vframes', '1', 'abc.jpg']) // Generates thumbnail
            newdoc.thumbnail = op
            newdoc.save()
            return HttpResponseRedirect(reverse('list'))
    else:
        form = DocumentForm()

文档具有缩略图字段。我知道 subprocess.call() 返回的返回码不是任何对象,所以使用 op 变量是没用的。所以我的查询是如何在模型中保存生成的缩略图。

最佳答案

django documentation 中所述的 FieldFile您可以从保存文件的路径打开文件并将其包装成 File目的。

另一个考虑是不要调用子进程,而是使用 python 库。还有用于 ffmpeg 的 python 绑定(bind),例如ffmpeg-python .

关于django - 处理子进程文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186142/

相关文章:

django - 如何使用 magic 来验证 Django 表单 clean 方法中的文件类型?

ffmpeg - 在构建有关 ffmpeg 的演示时,它发生在 : undefined reference to `av_register_all'

Android 使用 FFmpeg 的位图系列和 mp3 创建 MP4(我需要最小的 ffmpeg 配置来构建)

python - 无法使用 models.Manager 检索 Django 对象列表

python - 我在 django 中的评论表单不起作用?它既不向数据库发送数据也不显示这些数据?

python - 如何在django模板中获取类

django:django.utils.functional.SimpleLazyObject 的用途?

python - Humanize 不适用于模板中的 float

python - OSError : MoviePy error: the file guitar. mp4 找不到

python - 如何在 Django 查询中混合 AND 和 OR 运算符?