8

У меня есть 1 изображение (jpg) и 1 аудиофайл (MP3), и я хотел бы вывести его в виде видеофайла (например, AVI).

Кто-нибудь знает, как использовать FFMPEG для объединения двух? Я хотел бы показать изображение во время аудио.

Любые идеи кто-нибудь?

5 ответов5

7

Существует гораздо более простой способ, чем предложенный здесь, который не требует вычисления количества кадров или ввода длины отдельных файлов (особенно лучше для пакетной обработки). В последней версии ffmpeg вы можете использовать опцию -shortest , которая останавливает кодирование, когда заканчивается самый короткий поток - в этом случае input.mp3 (поскольку изображение будет зациклено навсегда, оно имеет бесконечную длину):

ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4

Это использует 2 кадра в секунду для изображения / видео, что должно быть хорошо, но вы можете установить его на более 25 стандартных, если хотите.

5

у субанки почти все было правильно. Рабочая командная строка выглядит следующим образом;

ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
-y

перезаписать выходные файлы без запроса

петля 1

Опция -loop_input устарела, используйте -loop 1. Смотрите документацию ffmpeg.

входной файл (ы)

Кадров в секунду
Также может быть выражено как -r 30000/1001, что дает fps 29,97nnn

-b:v

битрейт видео; Чем выше число, тем лучше качество и больше размер файла.

-vframes

Как объяснено выше; взять общее время вашего аудиофайла в секундах (например, 00:02:41 (2 минуты 41 секунда) равно 161 общее количество секунд (2 х 60) + 41). Затем умножьте общее количество секунд на количество кадров в секунду, указанное вами с помощью -r (например, 161 x 30 = 4830).

-vframes можно заменить на -t 161 (-t длительность записи или транскодирование «длительности» секунд аудио / видео)

-acodec

Используйте правильный аудиокодек для типа файла, который вы создаете. Для .mp4 это должен быть формат AAC. Кодек libvo_aacenc был правильным кодеком для моей системы Windows 7.

-ab

аудио битрейт

result.mp4

Это имя выходного файла. Это может быть любое допустимое имя файла для вашей системы. Расширение поможет ffmpeg определить правильный видеокодек, если вы не укажете его с помощью -vcodec.

5

Если вы работаете в Windows, вы можете сделать это и в Windows Movie Maker ... если вам нужны инструкции, пожалуйста, оставьте комментарий

Для FFmpeg используйте это

ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30 
    -b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
  • vframes 14490 - это количество кадров, которые должны быть зациклены, чтобы иметь непрерывное изображение для всего файла audio.mp3

    Пример: в течение 8 минут и 3 секунд ((8 м x 60 с + 3 с) x 30 кадр / с = 14490 VF)

Ресурс отсюда

1

Этот простой скрипт bash/cygwin, который АВТОМАГИЧЕСКИ закодирует все файлы с расширением $ AUDIO в каталоге в видеофайл MPF 10FPS в каталоге с вложенным изображением folder.jpg,

полезно для загрузки на YouTube;)

AUDIO=m4a; 
$'\n'; for a in `ls -1 *.$AUDIO `; do ffmpeg -i $a &2> $a.info ; done;
cat '' > do.sh
IFS=$'\n'; 
for a in `ls -1 *.$AUDIO`; do D=`grep Duration $a.info | cut -d',' -f1 | cut -d' ' -f4 | cut -d'.' -f1 | head -n1 `; S=$(( $( echo $D | cut -d':' -f2 ) * 60 + 1 + ` echo $D | cut -d':' -f3  ` )) ; echo ffmpeg -loop_input -vframes $(( $S * 10 )) -i folder.jpg -i \"$a\" -y  -r 10 -b 2500k -ab 384k -vcodec mpeg4 \"$a.mp4\" >> do.sh;  done;
split -l5 do.sh
xa* &
0

Скачайте VirtualDub и сделайте следующее:

  1. Откройте изображение, как если бы вы открыли обычный видеофайл.

  2. Вычислите продолжительность звука в секундах и округлите ее до ближайшей целой секунды (например, 78,34 секунды становятся 79 секундами). Это значение теперь называется х.

  3. Перейдите в «video> frame rate», выберите «change to frame rate (fps)» и введите «1/x» в качестве значения. Кроме того, если вы хотите, чтобы в результирующем файле была нормальная частота кадров, например, 25 кадров в секунду, выберите "Преобразовать в кадры в секунду" и введите требуемую частоту кадров.

  4. Выберите «видео> сжатие» и выберите свой любимый вкус. Может случиться так, что вам нужно отрегулировать размер изображения с помощью фильтра изменения размера.

  5. Перейдите в «аудио> аудио из другого файла» и выберите там свой звук. При необходимости выберите сжатие для аудио.

  6. Сохраните файл.

Источник: СтефанВ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .