2011-11-02 15 views
5

sto usando il DrawText e drawBox avfilters su FFmpeg, due delle funzioni più scarsamente documentato che l'uomo conosca.DrawText, drawBox o overlay solo su un singolo fotogramma utilizzando FFmpeg

che sto fatica a capire se e come posso utilizzare su un unico telaio, cioè, DrawText sul telaio 22.

comando corrente:

ffmpeg -i test.wmv -y -b 800k -f flv -vcodec libx264 -vpre default -s 768x432 \ 
    -g 250 -vf drawtext="fontfile=/home/Cyberbit.ttf:fontsize=24:text=testical:\ 
    fontcolor=green:x=100:y=200" -qscale 8 -acodec libfaac -sn -vstats out.flv 

Due elementi menzionato in the documentation sono n e t. Tuttavia, mi sembra di essere in grado di usarli solo in xey. Non nel testo o anche come altri parametri.

Qualsiasi aiuto o guida FFmpeg sarà accolto con gratitudine.

+1

possibile duplicato di [drawbox ffmpeg su un dato frame] (http://stackoverflow.com/questions/17339841/ffmpeg-drawbox-on-a-given-frame) – Jannes

risposta

3

In un ottimo esempio di FFmpeg che ti tiene sempre in punta di piedi, questo è banale da fare con drawtext ed estremamente doloroso con drawbox.

La chiave è che drawtext include il parametro draw:

disegnare
Impostare un'espressione che specifica se il testo deve essere disegnato. Se l'espressione è uguale a 0, il testo non viene disegnato. Questo è utile per specificare che il testo dovrebbe essere disegnato solo quando sono soddisfatte condizioni specifiche.

Quindi, per mostrare solo testo sul telaio 22:

ffmpeg -i in.wmv -vf drawtext="fontfile=font.ttf:text='blah':draw='eq(n,22)'" out.flv 

drawbox ha nessun parametro draw, e non c'è modo generale di emulare, in modo che stai a sinistra facendo qualcosa di simile estrazione della porzione di video che si desidera mettere la scatola su e poi sovrapponendo con un offset:

ffmpeg -i in.wmv -t 1 -ss 10 -vf drawbox=10:10:20:20:red boxed.flv 
ffmpeg -i in.wmv -itsoffset 10 -i boxed.flv -filter_complex overlay out.flv 

(anche se questo lascerà l'ultimo fotogramma di boxed.flv visibile per sempre) o la rottura il video in più pezzi, attingendo ai pezzi giusti e quindi ricombinando.

+3

drawbox (e drawtext) hanno funzionalità di editing video giorni che ti permettono di fare la stessa cosa in modo generico. http://stackoverflow.com/questions/17339841/ffmpeg-drawbox-on-a-given-frame – Jannes