Вы можете сделать before_save для обработки временного файла перед его сохранением, если вы не загружаете прямо на s3. Это, наверное, самый простой способ.
Интересно, вам действительно нужно загрузить весь файл, используя FFMPEG? Все, что вам нужно, это метаданные файла. Я написал приложение для аудио, которое сделало что-то подобное. Вы можете получить размер файла из Paperclip, если вы можете получить битрейт MPEG, вы можете легко рассчитать длину файла, разделив размер файла на битрейт.
Используйте обратный вызов before_save / before_create, чтобы получить битрейт из файла и сохранить его как поле в базе данных. Генерируйте длину динамически из этого значения.