У меня есть 1 изображение (jpg) и 1 аудиофайл (MP3), и я хотел бы вывести его в виде видеофайла (например, AVI).
Кто-нибудь знает, как использовать FFMPEG для объединения двух? Я хотел бы показать изображение во время аудио.
Любые идеи кто-нибудь?
У меня есть 1 изображение (jpg) и 1 аудиофайл (MP3), и я хотел бы вывести его в виде видеофайла (например, AVI).
Кто-нибудь знает, как использовать FFMPEG для объединения двух? Я хотел бы показать изображение во время аудио.
Любые идеи кто-нибудь?
Существует гораздо более простой способ, чем предложенный здесь, который не требует вычисления количества кадров или ввода длины отдельных файлов (особенно лучше для пакетной обработки). В последней версии 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 стандартных, если хотите.
у субанки почти все было правильно. Рабочая командная строка выглядит следующим образом;
ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
перезаписать выходные файлы без запроса
Опция -loop_input устарела, используйте -loop 1. Смотрите документацию ffmpeg.
входной файл (ы)
Кадров в секунду
Также может быть выражено как -r 30000/1001, что дает fps 29,97nnn
битрейт видео; Чем выше число, тем лучше качество и больше размер файла.
Как объяснено выше; взять общее время вашего аудиофайла в секундах (например, 00:02:41 (2 минуты 41 секунда) равно 161 общее количество секунд (2 х 60) + 41). Затем умножьте общее количество секунд на количество кадров в секунду, указанное вами с помощью -r (например, 161 x 30 = 4830).
-vframes можно заменить на -t 161 (-t длительность записи или транскодирование «длительности» секунд аудио / видео)
Используйте правильный аудиокодек для типа файла, который вы создаете. Для .mp4 это должен быть формат AAC. Кодек libvo_aacenc был правильным кодеком для моей системы Windows 7.
аудио битрейт
Это имя выходного файла. Это может быть любое допустимое имя файла для вашей системы. Расширение поможет ffmpeg определить правильный видеокодек, если вы не укажете его с помощью -vcodec.
Если вы работаете в 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)
Ресурс отсюда
Этот простой скрипт 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* &
Скачайте VirtualDub и сделайте следующее:
Откройте изображение, как если бы вы открыли обычный видеофайл.
Вычислите продолжительность звука в секундах и округлите ее до ближайшей целой секунды (например, 78,34 секунды становятся 79 секундами). Это значение теперь называется х.
Перейдите в «video> frame rate», выберите «change to frame rate (fps)» и введите «1/x» в качестве значения. Кроме того, если вы хотите, чтобы в результирующем файле была нормальная частота кадров, например, 25 кадров в секунду, выберите "Преобразовать в кадры в секунду" и введите требуемую частоту кадров.
Выберите «видео> сжатие» и выберите свой любимый вкус. Может случиться так, что вам нужно отрегулировать размер изображения с помощью фильтра изменения размера.
Перейдите в «аудио> аудио из другого файла» и выберите там свой звук. При необходимости выберите сжатие для аудио.
Сохраните файл.
Источник: СтефанВ