2011-05-18 32 views
38
  • En términos simples, ¿qué son los valores de pts y dts?
  • ¿Por qué son importantes al transcodificar [decodificar-codificar] videos?

¿Qué hace este código en el bit ffmpeg.c, cuál es su propósito?ffmpeg.c ¿Qué son los pts y dts? ¿Qué hace este bloque de código en ffmpeg.c?

01562 ist->next_pts = ist->pts = picture.best_effort_timestamp; 
01563 if (ist->st->codec->time_base.num != 0) { 
01564  int ticks= ist->st->parser ? ist->st->parser->repeat_pict+1 : ist->st->codec->ticks_per_frame; 
01565  ist->next_pts += ((int64_t)AV_TIME_BASE * 
01566       ist->st->codec->time_base.num * ticks)/
01567       ist->st->codec->time_base.den; 
01568 } 

Respuesta

69

Esos son el sello de tiempo de decodificación (DTS) y el sello de tiempo de presentación (PTS). Puede encontrar una explicación aquí inside a tutorial.

Digamos que teníamos una película, y los cuadros se mostraban como: I B B P. Ahora, necesitamos saber la información en P antes de que podamos mostrar cualquiera de los cuadros B. Debido a esto, los cuadros pueden almacenarse así: I P B B. Es por eso que tenemos una marca de tiempo de decodificación y una marca de tiempo de presentación en cada cuadro. La marca de tiempo de decodificación nos dice cuándo necesitamos decodificar algo, y el sello de tiempo de la presentación nos dice cuándo necesitamos mostrar algo. Por lo tanto, en este caso, nuestra corriente podría tener este aspecto:

PTS: 1 4 2 3 
    DTS: 1 2 3 4 
Stream: I P B B 

En general, el PTS y el DTS sólo difieren cuando la corriente que está reproduciendo tiene marcos B en ella.

+0

¿Puedes por favor saber qué es un cuadro B, y qué es un cuadro P? – nirvanaswap

+3

@nirvanaswap que en realidad se explica bastante bien aquí https://en.wikipedia.org/wiki/Video_compression_picture_types – Bart

+0

Todavía no entiendo. El flujo debe mostrarse como I B B P, pero como P debe venir antes que B, lo almacenamos como I P B B. Por lo tanto, lo decodificamos en el orden de 1 2 3 4, eso tiene sentido. Pero, ¿no deberíamos presentarlo en el orden de 1 3 4 2? ¿Por qué es 1 4 2 3? Cuando tenemos cuadros B consecutivos, ¿estos fotogramas B se aprovechan de los fotogramas I y P solos, o también usan los fotogramas B uno al lado del otro? – nirvanaswap

Cuestiones relacionadas