2013-05-20 16 views
5

Fino ad ora stavo facendo tutta la mia codifica usando il frame fisso (programmaticamente) usando ffmpeg. Ora ho bisogno di supportare una frequenza fotogrammi variabile. Ho iniziato semplicemente commentando la parte del mio codice che stava impostando la frequenza dei fotogrammi. Tuttavia non funziona. La mia funzione non funziona in avcodec_open2. Per favore qualcuno mi suggerisce come fare per supportare il frame rate variabile. Inoltre, sono venuto a sapere che non tutti i codec supportano la frequenza fotogrammi variabile. Quindi, quali codec vengono normalmente utilizzati durante la codifica con frame rate variabile. Si prega di suggerire.Codifica con frame rate variabile in ffmpeg

Grazie Pradeep

+0

Hai capito come fare? Anche a me interessa questo. @ praks411 – GangstaGraham

risposta

4

Mi rendo conto che il post è piuttosto vecchio, ma spero di essere in grado di aiutare alcune persone che hanno lo stesso problema (ho appena fatto) ...

Usare il fps filter o framerate filter . Essendo un ffpmeg n00b pure, non c'è garanzia di correttezza al 100%, ma almeno ha funzionato per me:

Ho creato un filtro grafico proprio come nell'esempio filtering_video.c. Per l'argomento filters di avfilter_graph_parse_ptr, ho specificato, ad esempio, fps=fps=30:round=near. Poi ho alimentato fotogrammi nella filtergraph ogniqualvolta Ho alcuni, calcolando i punti come

float fps = (float)(codecContext->time_base.num)/codecContext->time_base.den; 
this->frame->pts = (__int64)((timestamp - timestamp0)/fps); 

dove timestamp è il tempo del frame in pochi secondi e timestamp0 è il tempo del primo telaio essendo registrata. Entrambi sono valori in virgola mobile e derivano dal mio timer personalizzato. Quando utilizzi una libreria che fornisce timestamp per i tuoi fotogrammi catturati (come DirectShow), dovresti ovviamente usarli.

Problemi correlati