Как разместить файл с помощью FFmpeg в Google Cloude Storages и получить к нему доступ?
Здравствуйте, я начинающий разработчик и развернул свой первый проект django на Heroku. Я хочу сжать его в ffmpeg и сохранить в Google Cloud Storage, когда пользователь загружает видео файл из uploadForm в Django проекте.И извлекая продолжительность из сохраненного видео с помощью ffprobe и сохраняя его в поле duration объекта.
Save() моего кода forms.py выглядит следующим образом:
def save(self, *args, **kwargs):
def clean_video(self):
raw_video = self.cleaned_data.get("video")
timestamp = int(time())
raw_video_path = raw_video.temporary_file_path()
print(raw_video_path)
video_name = f"{raw_video}".split(".")[0]
subprocess.run(f"ffmpeg -i {raw_video_path} -vcodec libx265 -crf 28 -acodec mp3 -y uploads/videoart_files/{video_name}_{timestamp}.mp4", shell=True)
return f"videoart_files/{video_name}_{timestamp}.mp4"
videoart = super().save(commit=False)
videoart.video = clean_video(self)
video_path = videoart.video.path
get_duration = subprocess.check_output(['ffprobe', '-i', f'{video_path}', '-show_entries', 'format=duration', '-v', 'quiet', '-of', 'csv=%s' % ("p=0")])
duration = int(float(get_duration.decode('utf-8').replace("\n", "")))
videoart.duration = duration
return videoart
После валидации всех остальных полей я поместил код для обработки видео внутри метода сохранения, чтобы сжать видео в конце. В любом случае, этот код не является проблемой на локальном сервере, он работает очень хорошо. Однако на сервере возникает ошибка NotImplementedError ("This backend dogn't support absolute paths.").
Естественно, ffmpeg может получать входное видео из temporary_file_path(), но не находит путь для вывода. Этот абсолютный путь не является путем GCS. Однако ffmpeg не распознает url. Я не уверен, как сохранить файл, созданный в ffmpeg на сервере, в GCS и как получить к нему доступ. Не хотите ли вы дать мне какой-нибудь совет?