Как сжать видео с помощью FFmpeg в Django Rest Framework?

Я хочу изменить размер video и picture файлов. поэтому я искал это и нашел FFmpeg и теперь я получаю ошибки при сжатии. TemporaryUploadedFile у нас нет пути при загрузке. как мне это сделать.

FileNotFoundError: [WinError 2] The system cannot find the file specified
  • Код
import os
import subprocess
import ffmpeg

MEDIA_MAX_UPLOAD_SIZE = 5242880 

def check_media_size(media):
    media_size = media.size
    if media_size < MEDIA_MAX_UPLOAD_SIZE:
        return media_size

@api_view(["POST"])
def medias_upload(request):

    if request.method == 'POST':
        received_media=request.FILES.getlist('media')  
        allowed_mime_types = ['image/jpeg','image/png','image/gif','image/jpg','video/mp4','video/mkv','video/mov','video/avi']
        
        upload_data = []
        if received_media:
            for media in received_media:
                received_media_mime_type = mime_type_check(media)
                received_media_size = check_media_size(media)

                if received_media_mime_type in allowed_mime_types and received_media_size:
                    new_uuid = uuid.uuid4()
                    if str(received_media_mime_type).split('/',1)[0] == "image":
                       file_type = str(received_media_mime_type).split('/',1)[1]
                       converted_uuid = subprocess.run(f'ffmpeg -i {media} -acodec {file_type} temp_location/{new_uuid}')
                       upload_data.append(converted_uuid)

                    if str(received_media_mime_type).split('/',1)[0] == "video":
                        file_type = str(received_media_mime_type).split('/',1)[1]
                        converted_uuid = subprocess.run(f'ffmpeg -i {media} -acodec {file_type} temp_location/{new_uuid}')
                        upload_data.append(converted_uuid)

                else:
                    return Response({"response": False, "return_code":"Failed", "result": {}, "message": "Wrong MIME-TYPE or MAXIMUM file size allowed 5MB"},  status=status.HTTP_404_NOT_FOUND)
            return Response({"response": True, "return_code": "success", "result": {"media_uploaded_uuid":upload_data}, "message": success["success"]},  status=status.HTTP_200_OK)
        return Response({"response": False, "return_code":"Failed", "result": {}, "message": "No Data Found"},  status=status.HTTP_404_NOT_FOUND)
  • Q . Есть ли лучший способ сжать размер файла видео и изображения?
Вернуться на верх