LexxXell
@LexxXell
Программист и немного IT-журналист

Как вывод ffmpeg направить не в файл а в память, а затем сохранить результат в FileField Django?

В проекте над которым сейчас работаю необходимо проводить манипуляции с загруженными файлами используя FFMPEG.

В модели 4 поля FileField (в реальности по-другому, но объяснить можно и на этом примере):
file1 = models.FileField(...)
file2= models.FileField(...)
file3 = models.FileField(...)
out_file = models.FileField(...)

При создании объекта модели загружаются первые 3 файла, а при её сохранении вызывается селери-таск, в котором вызывается баш-скрипт где с помощью ffmpeg эти три файла склеиваются в один.
В текущем варианте результат сохраняется файлом в /tmp/, а дальше подгружается в модель, удаляясь из /tmp/

Мне кажется, это нерационально по наргузке на HDD/SSD, и если направить вывод ffmpeg в память, то работать будет быстрее.

Итоговый вопрос
Имеет ли смысл перенаправлять вывод ffmpeg в память, а затем сохранять в FileField модели?
Если да, то как это сделать?

P.s.
По отдельности я знаю как в FileField грузить из памяти BytesIO, и представляю как отправить вывод ffmpeg в память. Но не могу совместить все вместе.
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev
software engineer
если у вас tmp на ssd, то все нормально, нет смысла заморачиваться.
Если же хотите поэкспериментировать, сделайте рамдрайв:

от рута
# mkdir /mnt/ramdisk
# mount -t tmpfs -o size=512m tmpfs /mnt/ramdisk
# cd /ramdisk
# df -h .
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           512M     0  512M   0% /ramdisk
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы