Farklı çözünürlükteki dosyaların listesini birleştirmek


0

Kb'lerin veya en fazla 4 MB olan mp4 dosyalarının bir listesi var (gerçekte gif, ancak mp4 olarak indirildi) .Onların bir listesini kullanarak birleştirdiğimde videoların hepsi çalışmadığı gibi farklı boyutlarda (çözünürlük bilge) ve hepsi dikey sırada değildir. Bu konuda herhangi bir yardım ve aynı zamanda birisinin bana bu mp4 listesini kaliteyi kaybetmeden gif 'e dönüştürmek için FFmpeg komutunu söyleyecek kadar nazik olacağını düşünüyorum. önceden


Sabit bir çözünürlük ve kare hızı belirlerken bir kez yeniden kodlamanız gerekir. Sonra bir palet oluşturursunuz ve sonra GIF.
Gyan

Yanıtlar:


3

Sen kullanabilirsiniz fps , ölçek , setsar , setpts , concat , palettegen ve paletteuse filtreleri.

1. Tüm girişleri üniform yapın, birleştirin, ardından paleti oluşturun

    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'ye ihtiyacınız olmayabilir, ancak girdileriniz hakkında herhangi bir bilgi göstermediniz, bu yüzden varsayımlarda bulunmak zorunda kaldım.

2. GIF'e kodlayın

    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
  • "Kaliteden ödün vermeden MP4'ü GIF'e dönüştüremezsiniz", ancak MP4'ün GIF'ten oluşturulduğunu söylediğinizden bu yana çok fazla bir fark görmeme ihtimaliniz çok az. Hepsi, girdilerinizin nasıl göründüğüne ve ne kadar renk olduğuna bağlıdır.

Ayrıca bakınız


Kısa ve kısa cevap için teşekkürler ancak 1,2,3'ten itibaren girdiğim için 100'den fazla dosyaya sahip olduğum için çok zor bir iş olacak. Bunun gibi tüm dosyaları içeren mylist.txt dosyasını kullanabilirim örnek FFmpeg -f concat -i mylist.txt -c copy output.mp4
hacker kırmızı

Kısacası, eğer mümkünse bunların hepsini toplu olarak yapmak isterdim
hacker red,

Kullan ffmpeg -f concat -i mylist.txt -vf "fps=10,scale=320:240,setsar=1,palettegen[out]" -map "[out]" palette.pngilk komutu için. Veffmpeg -f concat -i mylist.txt -i palette.png -filter_complex "[0:v]fps=10,scale=320:240,setsar=1[v0];[v0][1:v],palettegen[out]" -map "[out]" -fflags +genpts output.gif
Gyan

senin 1 komut için @mulvya hatasıOutput with label 'out' does not exist in any defined filter graph, or was already used elsewhere.
kırmızı korsan

Üzgünüz, bu bir vf çok kaldırmak [out]ve-map "[out]"
Gyan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.