Объединение аудиофайлов в видео, которое показывает исходное имя файла при их воспроизведении.

У меня есть список коротких аудиофайлов в формате mp3. Есть ли какое-либо программное обеспечение, которое может автоматически объединять их в видео, которое показывает название исходных аудиофайлов при их воспроизведении?

Например, предположим, что у меня есть три аудиофайла human.mp3и файлы animal.mp3. plant.mp3Я хочу создать видео, в котором воспроизводятся все три звука, и во время воспроизведения human.mp3отображается текст human, во время воспроизведения во время воспроизведения animal.mp3отображается текст , animalа во время воспроизведения plant.mp3отображается текст plant. Таким образом, видео не показывает ничего, кроме текста и воспроизводит аудио.

Я использую Ubuntu, и я собираюсь использовать такое программное обеспечение в Ubuntu.

Бесплатно или платно? Какая ОС? В каком формате должно быть конечное видео?
Ну, я предпочитаю бесплатный. И я предпочитаю основанный на linux.
формат видео не важен.

Ответы (2)

Вы можете использовать ImageMagick (бесплатный, с открытым исходным кодом, кросс-платформенный, CLI) для создания изображения из некоторого текста :

convert \
    -size 165x70 \
    xc:lightblue \
    -font Bookman-DemiItalic \
    -pointsize 12 \
    -fill blue \
    -gravity center \
    -draw "text 0,0 'It is 28 degrees today'" \
    image.png

Затем вы можете использовать FFmpeg (бесплатный и с открытым исходным кодом, Windows /Linux/ Mac , CLI), чтобы взять одно изображение и аудиофайл в качестве входных данных и создать видеофайл той же продолжительности, что и аудиофайл , например:

ffmpeg -loop 1 -i image.jpg -i audio.wav -c:v libx264 -tune stillimage \
-c:a aac -strict experimental -b:a 192k -pix_fmt yuv420p -shortest out.mp4

Наконец, вы можете использовать FFmpeg для объединения полученных видеофайлов .

Проблема в том, что очень много коротких мп3 файлов. И мне может понадобиться сделать это много раз для различных наборов аудиофайлов. Я надеюсь, что есть автоматический способ создания изображений с использованием имен файлов и извлечения из них фильма.
Все вышеупомянутые инструменты являются CLI, поэтому вы всегда можете использовать сценарии (я знаю, что это не лучшее решение, но в этом случае я был бы удивлен, если бы существовало какое-то предварительно упакованное решение).
Можно ли это сделать с помощью сценария оболочки для цикла для файлов в папке?
@MinimusHeximus да.
у моего ffmpeg проблема с опцией-tune
Извините, я не очень хорошо знаю ffmpeg, вы можете попробовать спросить на superuser.com!

Чтобы завершить ответ Франка Дернонкура: создайте сценарий bash с именем 0moviemakingscript.shв папке, содержащей аудиофайлы с содержимым:

#!/bin/bash

for f in *; do
    if [ "$f" != "0moviemakingscript.sh" ]
    then
        mv "$f" "${f%.*}";
        convert -size 450x280 xc:lightblue -font Bookman-DemiItalic -pointsize 40 -fill blue -gravity center -draw "text 0,0 '$f'" "$f.png";
        ffmpeg -i "$f.png" -i "$f" "$f.avi";
    fi
done

for f in *.avi; do
    echo "file '$f' ";
done > 0.txt

ffmpeg -f concat -i 0.txt -c copy 0merged.avi

Откройте терминал и перейдите в папку, а затем запустите скрипт:

sh 0moviemakingscript.sh

и подождите, пока не будет создано окончательное названное видео 0merged.avi.

Этот скрипт удаляет расширение с оригинальных аудиофайлов и предполагается, что папка не содержит ничего, кроме аудиофайлов и 0moviemakingscript.sh. Поэтому вам может потребоваться скопировать папку во временную папку, чтобы создать видео. Также обратите внимание, что вы можете использовать avconvвместо ffmpeg. Поскольку avconvкажется, что это производное от ffmpeg, я думаю, что аргументы не должны меняться.