Saturday, October 13, 2018

DVB Inspector + FFPROBE Analisis GOP (3)

Kali ini kita akan analisis sebuah file TS menggunakan DVB Inspector. Dan kita akan lihat jarak antar dua I frame (frame utuh) yang disebut GOP (Group of Pictures). Dimana GOP ini bisa diset statis bisa dinamis. Jika GOP terlalu jauh (misal 10 detik) maka jika ada lost transmision harus menunggu 10 detik, ini akan menimbulkan masalah. Pembahasan lebih lanjut silahkan disimak.

Lanjut...

File yang digunakan adalah file tswift.mp4 yang di chunk pakai HLS, dan di ambil chunk pertama yaitu file stream0.ts dengan durasi 5 detik. File stream0.ts ini yang akan di analisis oleh DVB Inspector dan FFPROBE.

Akan terlihat bahwa urutan antara I frame, P dan B frame berbeda saat transmisi dan saat di displaykan.



Dari gambar diatas terlihat bahwa GOP adalah 7 frame.

Frame ke 0 adalah I frame
Frame ke 1 adalah P frame
Frame ke 2 adalah B frame
Frame ke 3 adalah B frame

Jadi urutan transmisi adalah:
I P B B

Sedangkan secara time kemunculan di layar:
I B B P

Akan tetapi frame tsb dalam PES header di berikan nomer urut sesuai dengan urutan proses di encoder (bisa di lihat dari ffprobe).

Frame ke 0 I coded number 0
Frame ke 1 P coded number 3
Frame ke 2 B coded number 2
Frame ke 3 B coded number 1

Dengan demikian urutan transmisi:
0 3 2 1

Urutan menampilkan di display:
0 1 2 3

Terlihat pada gambar bahwa I frame mulai diangkut pada TS paket ke 3 (188 bytes). Karena I frame maka ini frame JPEG utuh, sampai paket ke 209 (artinya diangkut pakai 207 paket). Cukup besar juga ya, yaitu 207 x 188 bytes = 38,9 KB.

Selanjutnya paket 210 berisi frame P, sampai paket 228 (19 paket), artinya 19 x 188 = 3,6 KB (artinya hanya 10% dari I frame)

Selanjutnya paket 229 berisi frame B, sampai paket 232 (4 paket), artinya  0,75 KB (artinya 20% dari P frame).

Ingat kembali:
PCR: Program Clock Refference (clock dari system)
DTS: Decoding Time Stamp (waktu dimulainya proses decoding)
PTS: Presentation Time Stamt (waktu dimunculkan nya gambar di display)

Jadi dalam setiap file TS, ada informasi: PCR (sebagai referensi waktu), DTS kapan decoder mulai proses menjadi frame utuh, PTS kapan decoder harus tampilin frame tsb di layar.


Dimana mendapatkan info PCR?

Dalam paket 3, ada informasi PCR di dalam TS Header bagian Adaptation Field

Dimana mendapatkan info PTS?

Dalam paket 3, ada informasi PTS di dalam PES Header.



Dari mana mendapatkan keterangan Jenis Frame?

Dari DVB Inspector kita sudah tahu bundaran biru menandakan dimulainya frame Video. Maka bundaran biru paling kiri adalah frame yang ke 0.

Kita bisa mendapatkan informasi detil frame ke 0 ini dari ffprobe.

ffprobe -select_streams v -show_frames -count_packets -show_streams stream0.ts > stream0_f.txt


Terlihat di informasi diatas ffprobe bisa mengeluarkan informasi frame by frame beserta tipe nya dan PTS nya.

Bisa juga dilihat dari diagram lain


Static GOP atau Variable GOP?

Secara standard FFMPEG akan mencreate I frame jika terjadi perubahan gambar yang radikal. Apabila perubahan hanya sedikit maka FFMPEG akan menjadikannya P atau B frame saja. Dengan demikian GOP akan variable. GOP maksimal adalah 250 frame. Jika frame rate 25 fps, maka panjang GOP ini maksimal 10 detik. Ini bisa menyebabkan masalah pada decoder. Dimana kalau ada packet lost decoder akan menunggu maksimal sampai 10 detik, baru bisa memunculkan video.

Adapun kita bisa mengeset GOP secara statik. Sebagai misal GOP di set 25 frame. Jika frame rate 25 fps, maka panjang satu GOP adalah 1 detik. Ini masih bisa diterima untuk penyiaran TV Digital, dimana perpindahan antar channel diharapkan kurang dari 2 detik.

GOP bisa saja dikecilkan sedemikian sehingga semua frame adalah I frame. Namun bandwidth yang diperlukan naik 10x lipat untuk mendapatkan kualitas yang sama. Dengan demikian, mengubah nilai GOP ini harus berhati-hati. Karena jika bandwidth tetap tapi GOP di kecilkan maka kualitas gambar akan menjadi buruk.

I Frame Berikutnya

Dari analisis FFPROBE I frame pertama ada di frame 0, sedangkan I frame berikutnya ada di frame 73. Artinya GOP 73.




Perhatikan setelah I frame untuk mencapai P frame berikutnya (frame 74, paket 1620) jarak nya cukup jauh dari I frame (frame 73, paket 1321), artinya ada 299 TS paket, atau 299 x 188 bytes = 56 KB. Artinya besar I frame yang kedua adalah 56 KB (bandingkan dengan I frame yang pertama 38,9 KB.


No comments: