Luthfi Idris Cerita Linux, Jerman Wirausaha dan Hidup Sederhana

DASH 105 - Segment

Sebelumnya

Setelah kita membahas parameter-parameter apa saja yang ada pada skema DASH. Untuk lebih lengkap lagi skema-skema DASH ada pada DASH Guidelines yang diterbitkan oleh DASH Industry Forum (DASHIF). DASHIF adalah kumpulan perusahaan yang mensupport perkembangan DASH agar bisa diterima oleh semua pihak. Oleh karena itu banyak perusahaan besar yang juga ikut dalam mengembangkan DASH ini seperti Adobe, Microsoft, Google, Apple dan lain-lain.

Segment Addressing

Media Presentation Description (MPD) yang berbentuk manifest file merupakan file dimana informasi tentang Segment seperti resolusi, bit rate dan URL video. Nah, URL ini bisa sangat fleksibel dalam penulisannya. Ada 4 variasi dalam penulisan yaitu: Segment List, Segment Template, Segment Base, Segment Timeline. Dalam contoh manifest file kemarin, kita menggunakan Segment List yang merupakan tipe paling umum dan mudah pada DASH. Sekarang kita akan membahas, mengupas, menguliti satu persatu tentang Segment Addressing ini:

  1. Segment List
    Segment List merupakan Segment format yang paling mudah dan jelas. Di dalamnya terdapat SegmentURLs yang merupakan URL langsung terhadap Segment yang akan didownload / akses. Initialization Segment tetap dibutuhkan pada Segment format ini. Walaupun ini sangat simpel, tetapi format ini sangat tidak efisien. Bayangkan anda punya 1 jam file video yang dibagi perSegment 2 detik. Akan ada 1800 baris SegmentURLs dan itu membuat ukuran manifest file menjadi lebih besar dan Startup Time video menjadi lebih lama karena harus mendownload dan parsing manifest file yang panjang. Segment List cocok untuk video berdurasi yang tidak terlalu lama.

     <Representation codecs="avc1.4d401f" mimeType="video/mp4" width="1280" height="720" 
     frameRate="30" id="720p_2400kbps" bandwidth="2400000">
     <SegmentList duration="10">
     <Initialization sourceURL="http://example.com/video-2400/init.mp4"/>
     <SegmentURL media="http://example.com/video-2400/segment-0.m4s"/>
     <SegmentURL media="http://example.com/video-2400/segment-1.m4s"/>
     <SegmentURL media="http://example.com/video-2400/segment-2.m4s"/>
     <SegmentURL media="http://example.com/video-2400/segment-3.m4s"/>
     <SegmentURL media="http://example.com/video-2400/segment-4.m4s"/>
     </SegmentList>
     </Representation>
    
  2. Segment Template
    Segment Template menggunakan template untuk membuat Segment List. Di dalamnya terdapat variabel dinamis yang bisa dirubah untuk membuat Segment List. Contoh potongan kode di bawah adalah contoh dari Segment Template. Di dalam skema Segment Template terdapat parameter media yang merupakan URL dari video Segment. Di dalamnya ada variabel $Number$ yang merupakan variabel dinamis untuk Segment Template. Variabel tersebut akan menggantikan parameter startNumber yang merupakan detik memulai Segment ini. Parameter duration adalah lamanya durasi tiap Segment. Jadi misal video ini dengan total durasi 1 menit dan tiap 10 detik akan mengambil potongan-potongan atau Segment-Segment dari video ini. Misal kita ingin merubah video ini dimulai pada detik ke 30, tinggal merubah startNumber menjadi 30 dan Segment ini akan dimulai dari detik ke 30 dan tiap 10 detik akan mendownload Segment ini. Seperti yang kita bisa lihat, tipe Segment Format ini sangatlah efisien sehingga membuat ukuran manifest file menjadi lebih kecil. Ini sangat fleksibel dibandingkan dengan Segment List dan cocok untuk video dengan durasi yang panjang.

     <Representation codecs="avc1.4d401f" mimeType="video/mp4" width="1280" height="720" 
     frameRate="30" id="720p_2400kbps" bandwidth="2400000">  
     <SegmentTemplate media="http://example.com/video-2400/segment-$Number$.m4s"  
     Initialization="http://example.com/video-2400/init.mp4"   
     startNumber="0" timescale="24" duration="10"/>
     </Representation>
    
  3. Segment Base
    Segment Base digunakan dimana hanya ada satu media Segment atau video file yang akan digunakan dalam tiap Representation. Dimana file tersebut terdapat Initialization Segment dan Content Segment. Jika terdapat lebih dari satu media Segment maka lebih baik menggunakan Segment List atau Segment Template. Kita akan membahas contoh di bawah. Terlihat pada BaseURL skema ada hanya satu buat URL dan ini akan dijadikan basis referensi untuk Initialization dan Content Segment. Parameter indexRange pada skema Segment Base menunjukkan bahwa pada byte ke 834 sampai 1800 adalah Content Segment yang berisi video file atau data. Sedangkan pada Initialization Segment ada parameter range yang bernilai dari 0 sampai 833. Ini merupakan panjang byte untuk inisialisasi pada Representation ini. Format Segment ini adalah yang digunakan YouTube karena mereka punya koneksi dan data center yang baik sehingga tidak masalah apabila selalu terjadi request terus menerus pada satu buah file.

     <Representation codecs="avc1.4d401f" mimeType="video/mp4" width="1280" height="720" 
     frameRate="30" id="720p_2400kbps" bandwidth="2400000">
     <BaseURL>http://example.com/video-2400k.mp4</BaseURL>
     <SegmentBase indexRange="834-1800"/>
     <Initialization range="0-833">
     </Representation>
    
  4. Segment Timeline
    Segment Timeline merupakan lanjutan daripada Segment Template. Apabila pada Segment Template kita bisa merubah variabel startNumber dengan dinamis, maka pada tambahan Segment Timeline kita bisa merubah variabel duration dengan dinamis. Ini berguna apabila pada detik tertentu kita akan mengulang atau merubah panjang durasi. Contohnya seperti potongan kode di bawah ini. Ada variabel t, d, r yang meruapakan t = waktu, r = repeat, d = durasi. Maksud dari tambahan Segment Timeline di bawah adalah dimulai dari detik ke 0 akan mengulang 5 kali panjang durasi selama 48 detik. Selanjutnya durasinya akan normal menjadi 10 detik.

     <Representation codecs="avc1.4d401f" mimeType="video/mp4" width="1280" height="720" 
     frameRate="30" id="720p_2400kbps" bandwidth="2400000">
     <SegmentTemplate media="http://example.com/video-2400/segment-$Time$.m4s" 
     initialization="http://example.com/video-2400/init.mp4" timescale="24">
     <SegmentTimeline>
     <S t="0" d="48" r="5"/>
     <S d="10">
     </SegmentTimeline>
     </SegmentTemplate>
     </Representation>
    

13 Februari 2016

Satu hari sebelum hari Valentine kita akan membahas Segment Indexing. Bagaimana sebuah Segment membuat index sehingga lebih cepat dan mudah mengakses detik tertentu. Ada juga box format yaitu bagian kecil lagi dari sebuah Segment. 2 minggu lagi kita akan membahas DASH client. Perangkat apa saja yang dibutuhkan untuk menonton atau mendengarkan DASH streaming. Udah gak sabar lagi nih buat nyobain aslinya kayak gimana. Selamat berakhir pekan, daaaa.

« Pos Sebelumnya Pos Sesudahnya »