2011-05-18 29 views
38
  • Về đơn giản, giá trị pts và dts là gì?
  • Tại sao chúng quan trọng trong khi chuyển mã video [giải mã mã hóa]?

bit mã này làm gì trong ffmpeg.c, mục đích của nó là gì?ffmpeg.c pts và dts là gì? khối mã này làm gì trong 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 } 

Trả lời

69

Đó là dấu thời gian giải mã (DTS) và dấu thời gian trình bày (PTS). Bạn có thể tìm thấy giải thích tại đây inside a tutorial.

Vì vậy, giả sử chúng ta có một bộ phim và khung được hiển thị như: I B B P. Bây giờ, chúng ta cần biết thông tin trong P trước khi chúng tôi có thể hiển thị khung B. Bởi vì điều này, các khung hình có thể được lưu trữ như thế này: Tôi P B B. Đây là lý do tại sao chúng tôi có một dấu thời gian giải mã và một dấu thời gian trình bày trên mỗi khung. Dấu thời gian giải mã cho chúng ta biết khi nào chúng ta cần giải mã một cái gì đó và dấu thời gian trình bày cho chúng ta biết khi nào chúng ta cần hiển thị một cái gì đó. Vì vậy, trong trường hợp này, luồng của chúng tôi có thể trông giống như sau:

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

Thông thường PTS và DTS sẽ chỉ khác khi luồng chúng tôi đang chơi có khung B trong đó.

+0

Bạn có thể vui lòng sử dụng khung B và khung P là gì? – nirvanaswap

+3

@nirvanaswap thực sự được giải thích khá tốt ở đây https://en.wikipedia.org/wiki/Video_compression_picture_types – Bart

+0

Tôi vẫn không hiểu. Luồng phải được hiển thị như I B B P, Nhưng vì P nên đến trước B, chúng ta lưu trữ nó như I P B B. Do đó chúng ta giải mã nó theo thứ tự 1 2 3 4, điều đó có ý nghĩa. Nhưng chúng ta không nên trình bày nó theo thứ tự 1 3 4 2? Tại sao nó lại là 1 4 2 3? Khi chúng tôi có khung B liên tiếp, các khung B này có tận dụng lợi thế của khung I và P hay không hoặc chúng có sử dụng các khung B bên cạnh nhau không? – nirvanaswap