У меня есть список файлов mp4, которые имеют КБ или максимум 4 МБ (они были на самом деле GIF-файлы, но загружены как MP4).Поэтому, когда я объединяю их, используя список из них, видео не работает, поскольку все они имеют разные размеры (разрешение) и не все в вертикальном порядке.Так что любая помощь в этом вопросе, а также, если я кого-то найду, будет достаточно любезной, чтобы сообщить мне команду FFmpeg для преобразования этого списка mp4 в gif без потери качества.заранее спасибо

1 ответ1

3

Вы можете использовать кадр, масштаб, setsar, setpts, Concat, palettegen и paletteuse фильтры.

1. Сделайте все входные данные единообразными, объедините, затем сгенерируйте палитру

    ffmpeg -i input0 -i input1 -i input2 -filter_complex \
    "[0:v]fps=10,scale=320:240,setsar=1/1,setpts=PTS-STARTPTS[v0]; \
     [1:v]fps=10,scale=320:240,setsar=1/1,setpts=PTS-STARTPTS[v1]; \
     [2:v]fps=10,scale=320:240,setsar=1/1,setpts=PTS-STARTPTS[v2]; \
     [v0][v1][v2]concat=n=3:v=1:a=0,palettegen[out]" \
    -map "[out]" palette.png
  • Возможно, вам не понадобится fps, но вы не показали никакой информации о ваших входных данных, поэтому мне пришлось делать предположения.

2. Кодировать в GIF

    ffmpeg -i input0 -i input1 -i input2 -i palette.png -filter_complex \
    "[0:v]fps=10,scale=320:240,setsar=1/1,setpts=PTS-STARTPTS[v0]; \
     [1:v]fps=10,scale=320:240,setsar=1/1,setpts=PTS-STARTPTS[v1]; \
     [2:v]fps=10,scale=320:240,setsar=1/1,setpts=PTS-STARTPTS[v2]; \
     [v0][v1][v2]concat=n=3:v=1:a=0[vv]; \
     [vv][3:v]paletteuse[out]" \
    -map "[out]" output.gif
  • Вы не можете "конвертировать MP4 в GIF без потери качества", но есть небольшая вероятность, что вы не заметите большой разницы, поскольку вы сказали, что MP4 были созданы из GIF. Все зависит от того, как выглядят ваши входные данные и сколько цветов.

Также см

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