Monday, October 2, 2017

Benarkah Ukuran File Size Hasil Encoding MP4 H.265 HEVC jauh lebih kecil dari H.264 AVC?

Kira-kira 10 tahun kebelakang video H.264 atau MPEG-4 AVC merupakan format video MP4 paling populer, bahkan Youtube pun menggunakan H.264 format ini sebagai standar. Namun sejak beberapa tahun terakhir ini, mungkin sejak tahun 2013-an hingga kini sedang dikembangkan format baru yang merupakan suksesor dari H.264 yang bernama H.265. Katanya sih format ini bisa mengkompresi dua kali lipat lebih baik dari pendahulunya. Misalnya suatu video MP4 kalo pake H.264 itu file size-nya sebesar 100 MB maka secara teori kalo dikompres pake encoder x265 itu file size-nya akan menjadi cuma 50 MB. Itulah kira-kira yang ane tangkap dari pemberitaan sensasional H.265 yang juga dikenal sebagai HEVC (High Efficiency Video Coding) itu.

Namun beberapa waktu yang lalu saya pernah mencoba melakukan encoding menggunakan HEVC x265 ini namun hasilnya tidak se-WOW yang seperti saya baca dalam artikel pemberitaan. Yang saya rasakan hasil encoding HEVC ini paling hanya lebih kecil sekitar 10% saja dari hasil kompresi x264 AVC (Advanced Video Coding) yang merupakan pendahulunya.

Setelah beberapa bulan, mungkin tahun, hahaha. Saya ingin mencoba kembali atau sekedar melakukan tes uji praktek. Untuk membuktikan kembali pandangan saya terhadap teknologi HEVC H.264 ini. Mungkin saja dulu ketika saya mencoba pertama kali encoder atau converter-nya ini masih kurang bagus. Kali ini saya akan menggunakan salah satu software converter video freeware alias gratisan yang populer, yaitu HandBrake versi 1.0.7 (2017040900) - 64bit. yang bisa diunduh dari https://handbrake.fr/

Sebagai sample saya mendownload video berdurasi pendek sekitar 18 detik dari channel Youtube saya: https://www.youtube.com/channel/UCCzeTS50sKB88VXOzKCazEQ

Video tersebut saya rename menjadi "Youtube H.264 Original.mp4"
Detail informasi video tersebut sebagai berikut:
VIDEO:
Codec 4CC: H264
Image Size: 540 x 360
Aspect Ratio: 1:1 (1:1)
Frame Rate: 16.120 fps
Total Duration: 00:00:18.548
AUDIO:
Codec: AAC
Channels: Mono
Bitrate: 16000 Bps / 128 kbps
Frequency: 44100 Hz
Total Duration: 00:00:18.529
File ini berukuran 1.433 KB atau 1,39 MB (1.467.216 bytes)
Saya akan melakukan konversi video ini menggunakan software HandBrake menggunakan encoder x264 dan x265 untuk mengetahui membandingkan file-size yang dihasilkan dari kedua proses tersebut.

Pertama-tama saya melakukan encode menggunakan Video Codec H.264 (x264) dulu:

HandBrake - Video Output Settings
Output Settings yang saya gunakan adalah sebagai berikut:
Video:
 - Video Codec: H.264 (x264)
 - Framerate (FPS): 30 (Peak Framerate)

Optimise Video:
 - Encoder Preset: Ultrafast
 - Encoder Level: 4.0

Quality:
 - Constant Quality: 22

Audio
 - Codec: AAC (avcodec)
 - bitrate: 128
 - mixdown: mono
Hasilnya adalah:


Ternyata file-size hasil konversi Handbrake lebih besar sekitar 3x lipat dari file H.264 standar Youtube. Karena kurang puas dengan hasil konversi tersebut, kali ini saya akan bermain dengan Optimasi Video: Secara teori, semakin lama suatu video di optimasi maka akan semakin kecil ukuran file size-nya. Karena saya menggunakan setelan paling cepet sehingga file-size MP4 H.264 tadi ukurannya lebih besar daripada file originalnya yang diunduh langsung dari Youtube.

Pada software HandBrake ini total ada 10 tingkat optimasi, jika diurutkan dari yang paling cepat (file size paling besar) ke yang paling lambat (file size paling kecil) adalah sebagai berikut:
01. Ultrafast
02. Superfast
03. Veryfast
04. Faster
05. Fast
06. Medium
07. Slow
08. Slower
09. VerySlow
10. Placebo
Secara teori seharusnya file-size terkecil adalah yang proses optimize-nya paling lambat, yaitu Placebo. Namun ini juga harus dipraktekan atau dibuktikan karena sepengalaman saya, beberapa waktu yang lalu saya pernah coba encoding menggunakan optimasi Faster ternyata file size-nya malah lebih kecil daripada file size yang di-encode menggunakan optimasi Placebo. Kali ini akan saya tes dan buktikan lagi, berikut file size hasil encoding menggunakan berbagai tingkat optimasi:


Seperti perkiraan saya, teori adakalanya meleset karena berbagai macam faktor yang kurang diperhitungkan. Setelah Ultrafast memiliki ukuran / file size paling besar, setelah itu tingkat 2 adalah Superfast yang hasilnya bisa menghemat separuh atau 50% dari file size Ultrafast. Sedangkan tingkat 3: Veryfast hanya menghemat 10% saja dari Superfast. Sedangkan level 4: Faster hampir sama dengan Superfast, penghematan file size-nya ada tapi tidak signifikan. Yang bikin heran adalah pada preset level 5: Fast, ukuran file malah membengkak lagi jadi sama/melebihi file size pada tingkat 3 (Veryfast), level 6,7,8 (Medium, Slow, Slower) tidak memberikan perubahan berarti. File size paling kecil di dapat dari preset tingkat 9: VerySlow sebesar 1.732 KB atau 1,69 MB. Seangkan pada preset level 10: Placebo file-size-nya malah lebih besar dari preset level 9: VerySlow.
4.340 KB HandBrake_x264_Preset_01_Ultrafast.mp4
2.157 KB HandBrake_x264_Preset_02_Superfast.mp4
1.820 KB HandBrake_x264_Preset_03_Veryfast.mp4
1.803 KB HandBrake_x264_Preset_04_Faster.mp4
1.825 KB HandBrake_x264_Preset_05_Fast.mp4
1.818 KB HandBrake_x264_Preset_06_Medium.mp4
1.819 KB HandBrake_x264_Preset_07_Slow.mp4
1.820 KB HandBrake_x264_Preset_08_Slower.mp4
1.732 KB HandBrake_x264_Preset_09_VerySlow.mp4
1.754 KB HandBrake_x264_Preset_10_Placebo.mp4
1.433 KB Youtube H.264 Original.mp4
Setelah melihat hasil ini saya merasa kagum dengan Youtube karena dapat melakukan optimasi file video hingga ukuran file size-nya menjadi sangat kecil secara otomatis. Sehingga memuculkan pertanyaan: Bagaimana caranya melakukan optimasi video sehingga file sizenya sekecil atau lebih kecil dari Youtube? Ini penting untuk menghemat storage dan bandwidth internet, walaupun makin sini internet semakin cepat dan storage semakin besar. Karena storage dan internet itu kan harus bayar, enggak gratis. Jadi kita harus berfikir bagaimana caranya berhemat.

Setelah cukup puas bereksperimen melakukan encoding menggunakan Codec H.264 (x264), kini saatnya berekperimen dengan Codec H.265 (x265), hasilnya adalah sebagai berikut:


Saya cukup kecewa dengan hasilnya, karena dengan settingan yang sama ternyata file size H.265 terkecil yang dihasilkan dari preset tingkat 4: Faster yaitu sebesar 1.462 KB saja. Jika dibandingkan dengan hasil coding dari H.264 sebelumnya dimana file-size terkecil yang dihasilkan adalah sebesar 1.732 KB, maka selisihnya sangat tipis yaitu sebesar 270 KB saja, atau cuma sekitar 15%-nya saja.Sehingga kesimpulan sementara yang dapat saya simpulkan adalah bahwa: Codec H.265 HEVC hanya bisa menghemat sekitar 15% saja dari pendahulunya H.264 AVC.

Ada satu lagi yang membuat saya kepikitan terus, kok bisa yah format H.264 standar Youtube mengalahkan H.265 Handbrake dalam hal ukuran file size. Padahal seharusnya H.265 yang lebih canggih ini mestinya dengan mudah mengalahkan teknologi pendahulunya? Mungkin jawabannya ada disini:

Codec Audio yang saya setel sepertinya terlalu tinggi
Sepertinya saya kurang memperhitungkan Audio Codec yang juga mempengaruhi ukuran/file size. Sepertinya saya terlalu tinggi menyetel settingan bit rate-nya.

 

File "HandBrake_x265_Preset_04_Faster.mp4" memiliki Audio Bit rate 129 kbps
Sedangkan file "Youtube H.264 Original.mp4" memiliki Audio Bit rate 74 kbps saja.


Saya mencoba melakukan encoding lagi agar bitrate audio-nya setara dengan file original hasil encoding Youtube. Pada bagian Audio Codec, saya pilih opsi Auto Passthru, agar audio source atau input sama dengan output. Dan hasilnya adalah sebagai berikut:



Akhirnya H.265 HandBrake dapat mengalahkan H.264 versi Youtube walaupun sangat tipis. File Size-nya jadi cuma 1.342 KB. Selisihnya cuma 91 KB atau cuma 6% saja. Pantes saja Youtube belum mau pake format H.265. Pengaruhnya gak terlalu signifikan.

HandBrake vs Avidemux Encoding MP4 HEVC x265 File Size Kecil Mana?

No comments:

Post a Comment