2013-05-01 19 views
21

Sto cercando di fare un po 'di PNG in un video utilizzando avconv, i PNG sono numerati come filename_<number> così io di solito basta usare il comando:avconv: fare un video da un sottoinsieme sulle immagini

avconv -r 10 -i filename_%d.png -b:v 1000k test.mp4

ora voglio fare un video da un sottoinsieme dei file filename_8 - filename_50 consente di dire, così ho copiato questi file in una nuova directory e provato lo stesso comando, ma ora ottengo l'errore:

filename_%d.png: No such file or directory 

Suppongo e questo perché la numerazione non parte da 1?

Come posso ottenere questo risultato?

+0

http://superuser.com/questions/624567/ffmpeg-create-a-video-from-images –

risposta

28
avconv -r 10 -start_number 8 -i filename_%d.png -b:v 1000k test.mp4 

Avrete bisogno di una versione recente del 9.x avconv per l'opzione -start_number; non è nella versione 0.8.x. In alternativa è possibile utilizzare una versione recente di ffmpeg. O rinominare i file per iniziare con un numero compreso tra 0 e 4, in quanto controllerà tali nomi per impostazione predefinita.

+1

Si noti che in alcune versioni (9.16 per me) questa opzione è ignorata. 'avconv' non segnala necessariamente un errore in questo caso, poiché l'opzione può essere interpretata come parte di altri modificatori della riga di comando. – anol

+0

'avconv -r 10 -start_number 5 -i tt_img_0% 04d.jpg -b: v 1000k out.mp4' non funziona nel mio caso:" Nessun file o directory ", nonostante il fatto che i file siano presenti a partire da 'tt_img_00005.jpg'. –

+0

'mencoder" mf: //*.jpg "-mf fps = 10 -o test.avi -ovc lavc -lavcopts vcodec = msmpeg4v2: vbitrate = 800' fa il trucco perfettamente. –

6

È possibile concatenare i file con cat e quindi utilizzare il demuxer image2pipe per leggerli in avconv. Come cat filename* | avconv -f image2pipe -i - ...

5

Controllare questo; secondo ffmpeg questo è come lo fanno e funziona

  1. Innanzitutto, rinominare le immagini per seguire una sequenza numerica. Ad esempio, : img1.jpg, img2.jpg, img3.jpg, ...
  2. allora si può eseguire:

    ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg 
    

    noti che %d è sostituito dal numero dell'immagine.

    img%03d.jpg intende la sequenza img001.jpg, img002.jpg, ecc

  3. Utilizzare l'opzione ‘-start_number’ dichiarare un numero iniziale per la sequenza . Ciò è utile se la sequenza non inizia con img001.jpg ma è ancora in ordine numerico. Il esempio seguente inizierà con img100.jpg:

    ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg 
    
  4. Se avete un grande numero di immagini da rinominare, è possibile utilizzare il seguente comando per alleviare l'onere. Il comando, utilizzando la sintassi shell bourne , collega simbolicamente tutti i file nella directory corrente che corrispondono * jpg alla directory /tmp nella sequenza di img001.jpg, img002.jpg e così via.

    x=1; 
    for i in *jpg; 
    do counter=$(printf %03d $x); 
    ln -s "$i" /tmp/img"$counter".jpg; 
    x=$(($x+1)); 
    
+0

Manca "completato" alla fine dell'esempio 4, giusto? – znt

Problemi correlati