Существует гораздо более простой способ, чем предложенный здесь, который не требует вычисления количества кадров или ввода длины отдельных файлов (особенно лучше для пакетной обработки). В последней версии ffmpeg вы можете использовать -shortestопцию, которая останавливает кодирование, когда заканчивается самый короткий поток - в данном случае, input.mp3 (поскольку изображение будет зацикливаться вечно, его длина будет бесконечной):
Привет Субанки - спасибо за ваш комментарий !! Я не понимаю этого, хотя .. Мне нужно вывести видео файл из аудио и изображения. Как это сделать?
user41559 14 лет назад
0
@nayrsllew Я только что узнал, что код не работает, извините ... Ну, главное - конвертировать его в видео с помощью ffmpeg -f image2 -i image% d.jpg video.mpg, а затем объединять видео и аудио
subanki 14 лет назад
0
обновил мой ответ, это было сложно, но мой 1-часовой поиск в Google нашел его, я счастлив :)
subanki 14 лет назад
0
Ответ правильный, почему внизу проголосуй :(
subanki 14 лет назад
0
Привет не могу, вы можете помочь мне здесь. Полученное видео слишком большое. Мне нужно видео того же размера, mp3-файла. Мой файл изображения очень маленький. Также мне нужно загрузить это видео на Youtube.
Parminder 12 лет назад
0
@Parminder Невозможно получить тот же размер с кодировкой AVI, если вы не сожмете mp3 дальше. Несмотря на небольшой размер, ваше изображение будет многократно увеличено, чтобы соответствовать длине песни.
clabacchio 12 лет назад
0
https://stackoverflow.com/questions/48141471/create-video-from-images-and-audio-with-varying-image-durations-using-ffmpeg
Muhammad Umer 6 лет назад
0
5
Jon Hall
у субанки почти все было правильно. Рабочая командная строка выглядит следующим образом;
Количество кадров в секунду Может также быть выражена как: -r 30000/1001 дает ФПС 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.
1
user113368
Этот простой скрипт bash / cygwin, который АВТОМАГИЧЕСКИ закодирует все файлы с расширением $ AUDIO в каталоге в видеофайл MPF 10FPS в каталоге с вложенным изображением folder.jpg,
Откройте изображение, как если бы вы открыли обычный видеофайл.
Вычислите продолжительность звука в секундах и округлите ее до ближайшей целой секунды (например, 78,34 секунды становятся 79 секундами). Это значение теперь называется х.
Перейдите в «video> frame rate», выберите «change to frame rate (fps)» и введите «1 / x» в качестве значения. Кроме того, если вы хотите, чтобы в результирующем файле была нормальная частота кадров, например, 25 кадров в секунду, выберите «Преобразовать в кадры в секунду» и введите требуемую частоту кадров.
Выберите «видео> сжатие» и выберите свой любимый вкус. Может случиться так, что вам нужно отрегулировать размер изображения с помощью фильтра изменения размера.
Перейдите в «аудио> аудио из другого файла» и выберите там свой звук. При необходимости выберите сжатие для аудио.