Sunday, September 30, 2018

DVB Inspector PCR/DTS/PTS (2)

Pada Contoh ini akan digunakan file 5 detik tswift.mp4. Kemudian video tsb kita percepat 2x. Dimana kesimpulannya jika video dipercepat 2x maka ada 50% frame yang dibuang.

Selanjutnya kita akan memotong file jadi 5 detik dan convert dari mp4 ke ts, dan kita lihat apakah ada penambahan jumlah frame.

Lanjut...

tswift5s.ts : file tswift.mp4 yang di potong jd 5 detik dalam format TS.
c2xtswift4s.ts : file tswift.mp4 yang di potong jd 5 detik dan dipercepat 2x dalam format TS.

Langkah-langkah sbb:

1. Memotong jadi 5 detik (tswift5s.mp4)

ffmpeg -i tswift.mp4 -ss 00:00:00 -t 00:00:05 tswift5s.mp4

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (libvo_aacenc))

Terlihat terjadi transcoding karena codec di transcode ulang.

2. Convert jadi TS file (tswift5s.ts)

ffmpeg -i tswift5s.mp4 tswift5s.ts

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
  Stream #0:1 -> #0:1 (aac (native) -> mp2 (native))

Terlihat juga terjadi transcoding, karena codec di transcode ulang.

3. Percepat video jadi 2x (c2xtswift.mp4)

ffmpeg -i tswift5s.mp4 -filter:v "setpts=0.5*PTS" c2xtswift5s.mp4

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (libvo_aacenc))

Terlihat terjadi transcoding, karena codec di transcode ulang.

4. Convert jadi TS file (c2xtswift.ts)

ffmpeg -i c2xtswift5s.mp4 c2xtswift5s.ts

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
  Stream #0:1 -> #0:1 (aac (native) -> mp2 (native))

Terlihat terjadi transcoding, karena codec di transcode ulang.

Sekarang kita punya 4 file:
o tswift5s.mp4
o c2xtswift5s.mp4
o tswift5s.ts
o c2xtswift5s.ts

Mari kita lihat gambar PCR/DTS/PTS nya.

tswift5s.ts


Terlihat bahwa jumlah frame (lingkaran biru) jika di hitung adalah 121. Hal ini bisa di crosscheck dengan menggunakan ffmpeg atau ffprobe.

ffmpeg -i twsift5s.ts -c copy temp.ts


ffprobe -count_frames -select_streams v -show_frames -show_streams tswift5s.ts > tswift5s_frame_ts.txt


Kenapa tidak 120 frame? Bukankah tswift5s.mp4 ada 120 frame (24 fps x 5s = 120 frame)?

Sepertinya file .mp4 diconvert ke .ts akan bertambah 1 frame. Jadi jika file mp4 nya terdiri dari 120 frame maka file ts nya terdiri dari 121 frame.

Bagaimana jika mp4 nya dipercepat video nya jadi 2x. Ternyata jumlah frame di kurangi jadi separohnya.

c2xtswift5s.ts


Terlihat bahwa 2.5 detik awal ada frame video yang dimunculkan pada PTS nya. Jika di hitung jumlah lingkaran biru sekitar 60an frame. Berapa tepatnya?

Jika di hitung oleh ffmpeg, dan ffprobe didapat hasilnya:

ffmpeg -i c2xtswift5s.ts  -c copy temp.ts

frame=64


Jika pakai ffprobe pada section [STREAM]

ffprobe -select_streams v -show_frames -count_packets -show_streams c2xtswift5s.ts > probe.txt

nb_read_frames=64

Sedangkan file mp4 nya terdiri dari 63 frame.

ffmpeg -i c2xtswift5s.mp4 -c copy temp.mp4

frame=63

Artinya konversi dari MP4 ke TS menambah 1 frame.

No comments: