1

我正在尝试导入视频,添加水印,然后使用 moviepy 在 django 中下载处理后的视频。问题是我可以通过指定计算机驱动器的绝对路径将处理后的视频保存到我的计算机中。但是,我无法下载此处理后的视频。我曾尝试在互联网上进行研究。然而,到目前为止还没有运气。下面是我的代码:

视图.py

from django.shortcuts import render
import numpy as np
from .forms import UploadFileForm
import tempfile
import os
from django.core.files.storage import default_storage
from django.http import HttpResponse
from django.core.files.storage import FileSystemStorage
import sys
import moviepy.editor as mp


from .utils import CFEVideoConf, image_resize

# Create your views here.
def watermark(request):
    if request.method=="GET":
        form = UploadFileForm()
        return render(request, 'video_et.html', {'form':form})
    else:
        if request.method=="POST":
            form = UploadFileForm(request.POST, request.FILES)
            if form.is_valid():
                fs = FileSystemStorage(location='/media')
                x = bytes()
                #arr=cv2.VideoWriter()
                image = request.FILES['Watermark_Image']
                video = request.FILES['Video_File']
                print("Name of the Watermark Image: ", image.temporary_file_path())
                print("Name of the Video: ", video.name)

                file_name1 = default_storage.save(video.name, video)
                file1 = default_storage.open(file_name1)
                file_url1 = default_storage.url(file_name1)
                print("file url= ",file_url1)
                url_now1 = "http://127.0.0.1:8000/"+file_url1

                #image = request.FILES['Watermark_Image'].read()

                file_name2 = default_storage.save(image.name, image)
                file2 = default_storage.open(file_name2)
                file_url2 = default_storage.url(file_name2)
                print("file url= ",file_url2)
                url_now2 = "http://127.0.0.1:8000/"+file_url2


                video = mp.VideoFileClip(url_now1)

                logo = (mp.ImageClip(url_now2)
                          .set_duration(video.duration)
                          .resize(height=50) # if you need to resize...
                          .margin(right=8, top=8, opacity=0) # (optional) logo-border padding
                          .set_pos(("right","top")))

                final = mp.CompositeVideoClip([video, logo])
                final.write_videofile("C:\\Users\\win10\\Desktop\\experiment\\django-poc\\media\\test.mp4")
                response = HttpResponse(video, content_type="video/mp4")
                response['Content-Disposition'] = 'attachment; filename=test.mp4'
                return response

如图所示,视频保存在路径“C:\Users\win10\Desktop\experiment\django-poc\media\test.mp4”中。- 这个我可以玩。

服务器还会生成一个 test.mp4 作为下载文件。不能播放。

请帮助下载处理后的视频文件作为附件。对此的任何帮助深表感谢。

提前致谢!

4

0 回答 0