[Java] Вырезать аудио клипы и скриншоты из MP4 по таймстэмпам
2000 UAHТворческое задание для образовательного проекта (находится в стадии прототипирования).
Необходимо исследовать и предложить оптимальный вариант (реализацию) создания набора аудио фрагментов и скриншотов на основе видео файла.
На входе данная программа получает:
- видео файл с одной или несколькими аудио дорожками
- текстовый файл с субтитрами
- аргументы (номер аудио дорожки, audio fadein/fadeout in milliseconds, см. пример)
audioTrack=1
fadeIn=200
fadeOut=200
На выходе:
- аудио фрагменты, записанные в папку (в формате mp3, битрейт такой же к в видео)
- скриншоты, записанные в другую папку (в формате png, разрешение такое же, как у видео)
Предполагаю, что сделать всё можно с помощью вызовов ffmpeg.
Тогда контролирующая программа на Java, написанная вами, должна распарсить субтитры, сделать все необходимые вызовы ffmpeg с нужными параметрами.
Видео для тестирования (Family Guy s1e1, 20min, 173Mb):
https://drive.google.com/file/d/1tRRU51a9kjHC47wE_Vwnl4_1FxF6Wotd/view?usp=sharing
Субтитры:
https://drive.google.com/file/d/1CflWB9nJ_SZKaUhiWf7an5SN4Tv22CTy/view?usp=sharing
Оцените, сколько будет стоить разработка прототипа данной программы.
(Прототип значит: можно не усердствовать в красоте кода, оптимизации, функциональном разнообразии, тесты писать не надо - только если для себя).
Уточнение #1:
Скриншоты берутся из видео для каждого аудио фрагмента. Таймстэмп скриншота вычисляется как середина аудиофрагмента.
screenshotTimestamp = (audioEndTimestamp - audioStartTimetamp) /2
Конечная цель - создание аудио комикса для веб. Генерация такого комикса - отдельная история.
Уточнение #2:
Можете использовать ffmpeg-cli-wrapper .
Уточнение #3:
Необходимо также добавить fadein/fadeout для аудио фрагментов, чтобы они не звучали рвано. Судя по всему, можно использовать afade фильтр. Пример использования:
ffmpeg -i music.mp3 -af "afade=t=in:st=0:d=0.5" out.mp3
ffmpeg -i music.mp3 -af "afade=t=out:st=5:d=0.5" out.mp3
Т.е., возможно, придётся несколько раз применить ffmpeg для каждого фрагмента:
- вырезать
- fadeIn
- fadeOut
- сжатие в mp3
Результаты работы
Отзыв заказчика о сотрудничестве с Любомиром Б.
[Java] Вырезать аудио клипы и скриншоты из MP4 по таймстэмпамЛюбомир написал отличный исходный код. С использованием Streams, Consumer, Java 17. Красиво используется библиотека net.bramp.ffmpeg. Все операции с помощью параметров сведены к одной, batch processing работает быстро. Это именно то, что я описал в задании. И даже лучше. Спасибо.
Отзыв фрилансера о сотрудничестве с Vitaly Sazanovich
[Java] Вырезать аудио клипы и скриншоты из MP4 по таймстэмпамТехническое задание максимально четкое и понятное, интересный проект и своевременная оплата. Приятно иметь дело!
Актуальные фриланс-проекты в категории Java
Разработка Android-приложения плеера для сервиса онлайн-ТВ
27 000 UAH
Нужен Android-разработчик для создания нативного Android-приложения для сервиса онлайн-ТВ. Планируется две версии: для мобильных устройств: смартфоны и планшеты; для Android TV / Android STB: телевизионные приставки. Ориентировочные сроки: до 3 месяцев. Ориентировочный… Java, Разработка под Android ∙ 1 месяц назад ∙ 32 ставки |