MPV, Bukan Pemutar Video Biasa
Prakata
Teman-teman pasti memiliki pemutar video favorit masing-masing. Begitupun saya, MPV adalah pemutar video favorit sepanjang 2016 sampai saat tulisan ini dibuat. (2016 - 2019).
Selama menggunakan MPV tidak habis-habisnya saya menemukan fitur-fitur yang berguna untuk memudahkan urusan-urusan saya dalam hal video. Awalnya saya hanya ingin pemutar video yang memiliki user interface yang minimalis (karena hanya ingin fokus pada video), ringan, dan cepat saat dipanggil.
Namun, seiring berjalannya waktu, ternyata banyak sekali fitur-fitur yang dimiliki oleh MPV, dengan fitur yang hampir menyerupai VLC. Malah beberapa fitur pada MPV, saya belum pernah menggunakannya pada saat menggunakan VLC, karena belum adanya kebutuhan akan hal tersebut saat masih menggunakan VLC.
Sekilas Tentang MPV
MPV adalah fork dari MPlayer dan mplayer2. Memiliki banyak dukungan terhadap hampir semua format file video dan audio codecs dan subtitle.
Kelebihan-kelebihan yang dimiliki oleh MPV:
- Memiliki banyak command option layaknya MPLayer. Namun, sudah lebih diperbaiki dalam hal susunan sintaksis agar lebih mudah digunakan dan diingat
- MPV tidak memiliki official GUI, namun begitu, dapat dengan mudah kita operasikan dengan menggunakan keyboard shortcuts atau gerakan mouse
- MPV memiliki video output berbasis OpenGL yang memiliki banyak sekali fitur-fitur yang digemari oleh penggemar video, seperti video scaling, color correction, frame timing, interpolation, HDR, dan masih banyak lagi
- MPV memanfaatkan API FFmpeg hwaccel untuk mendukung format VDPAU, VAAPI, DXVA2, VDA dan akselerasi decoding video VideoToolbox
- Tentu saja MPV masih aktif dikembangkan, berfokus pada refactoring dan pembersihan kode serta menambahkan fitur
- Free, open source dan multi platform
Instalasi
Untuk distribusi Arch Linux, langsung saja pasang dari repository.
$ sudo pacman -S mpv
Untuk distribusi lain, silahkan menyesuaikan.
Konfigurasi
Secara default, MPV akan membaca file konfigurasi yang terdapat pada direktori /etc/mpv
(untuk system wide) atau ~/.config/mpv/
(untuk user).
Untuk membantu konfigurasi awal, kita dapat mengambil sampel konfigurasi default settings, dengan cara sebagai berikut.
$ cp -r /usr/share/doc/mpv/ ~/.config/
Saat ini saya hanya menggunakan 2 file yang ada pada direktori config ini, yaitu:
input.conf
- Untuk keyboard shortcutsmpv.conf
- Untuk konfigurasi mpv itu sendiri
Saya akan mulai dari file mpv.conf
terlebih dahulu.
Konfigurasi mpv.conf
Buka Terminal dan edit file mpv.conf
.
Saya menambahkan pada baris paling akhir setelah bagian/blok profiles
, option-option di bawah.
1###########2# General #3###########45input-ipc-server=/tmp/mpvsocket # listen for IPC on this socket6save-position-on-quit=no # handled by a script78#no-border # no window title bar9msg-module # prepend module name to log messages10msg-color # color log messages on terminal11term-osd-bar # display a progress bar on the terminal12use-filedir-conf # look for additional config files in the directory of the opened file13#pause # no autoplay14keep-open # keep the player open when a file's end is reached15autofit-larger=90%x90% # resize window in case it's larger than W%xH% of the screen16cursor-autohide-fs-only # don't autohide the cursor in window mode, only fullscreen17input-media-keys=no # enable/disable OSX media keys18cursor-autohide=1000 # autohide the curser after 1s19prefetch-playlist=yes20force-seekable=yes2122screenshot-format=png23screenshot-png-compression=824screenshot-template='~/pix/ScreenShot/%F (%P) %n'2526hls-bitrate=max # use max quality for HLS streams2728[ytdl-desktop]29profile-desc=cond:is_desktop()30ytdl-format=bestvideo[height<=?720]+bestaudio/best3132[ytdl-laptop]33profile-desc=cond:is_laptop()34ytdl-format=bestvideo[height<=?720][fps<=?30][vcodec!=?vp9][protocol!=http_dash_segments]+bestaudio/best3536[default]3738#########39# Cache #40#########4142# Configure the cache to be really big (multiple GBs)43# We have a lot of memory, so why not use it for something4445cache=no46#cache-default=4000000 # size in KB47#cache-backbuffer=250000 # size in KB48#demuxer-max-bytes=1147483647 # ~1 GiB in bytes495051#############52# OSD / OSC #53#############5455osd-level=1 # enable osd and display --osd-status-msg on interaction56osd-duration=2500 # hide the osd after x ms57osd-status-msg='${time-pos} / ${duration}${?percent-pos: (${percent-pos}%)}${?frame-drop-count:${!frame-drop-count==0: Dropped: ${frame-drop-count}}}\n${?chapter:Chapter: ${chapter}}'5859osd-font='Source Sans Pro'60osd-font-size=3261osd-color='#CCFFFFFF' # ARGB format62osd-border-color='#DD322640' # ARGB format63#osd-shadow-offset=1 # pixel width for osd text and progress bar64osd-bar-align-y=0 # progress bar y alignment (-1 top, 0 centered, 1 bottom)65osd-border-size=2 # size for osd text and progress bar66osd-bar-h=2 # height of osd bar as a fractional percentage of your screen height67osd-bar-w=60 # width of " " "686970#############71# Subtitles #72#############7374sub-auto=all # membuat mpv tetap mendeteksi file subtitle75no-sub-visibility # namun dalam keadaan terhidden76#sub-auto=fuzzy # external subs don't have to match the file name exactly to autoload77sub-file-paths-append=ass # search for external subs in these relative subdirectories78sub-file-paths-append=srt79sub-file-paths-append=sub80sub-file-paths-append=subs81sub-file-paths-append=subtitles8283demuxer-mkv-subtitle-preroll # try to correctly show embedded subs when seeking84embeddedfonts=yes # use embedded fonts for SSA/ASS subs85sub-fix-timing=no # do not try to fix gaps (which might make it worse in some cases)86sub-ass-force-style=Kerning=yes # allows you to override style parameters of ASS scripts87sub-use-margins88sub-ass-force-margins8990# the following options only apply to subtitles without own styling (i.e. not ASS but e.g. SRT)91sub-font="Source Sans Pro Semibold"92sub-font-size=3693sub-color="#FFFFFFFF"94sub-border-color="#FF262626"95sub-border-size=3.296sub-shadow-offset=197sub-shadow-color="#33000000"98sub-spacing=0.599100101#############102# Languages #103#############104105slang=enm,en,eng,de,deu,ger # automatically select these subtitles (decreasing priority)106alang=ja,jp,jpn,en,eng,de,deu,ger # automatically select these audio tracks (decreasing priority)107108109#########110# Audio #111#########112113audio-file-auto=fuzzy # external audio doesn't has to match the file name exactly to autoload114audio-pitch-correction=yes # automatically insert scaletempo when playing with higher speed115volume-max=200 # maximum volume in %, everything above 100 results in amplification116volume=100 # default volume, 100 = unchanged
Berikut ini adalah penjelasan dari beberapa option yang saya gunakan. Saya tidak dapat menjelaskan semuanya secara detail.
Save Position on Quit
save-position-on-quit=no
Option di atas digunakan untuk menyimpan posisi terakhir dari seek bar. Sehingga memungkinkan kita saat membuka file video yang sama, akan kembali dimulai pada menit sebelum mpv di-quit.
Display Progress Bar on Terminal
term-osd-bar
Karena terkadang saya menjalankan mpv juga dari Terminal, misalkan menonton video melalui url youtube, saya membutuhkan progress bar untuk memberikan saya referensi di mana posisi saya saat ini (sudah berapa menit).
Keep Open After Video End
keep-open
Option ini digunakan agar mpv tidak otomatis keluar saat selesai menjalankan video/audio.
Default Window Size
autofit-larger=90%x90%
Option ini saya pergunakan agar saat membuka mpv, video tidak lebih besar dari resolusi layar yang saya gunakan.
ScreenShot Format
screenshot-format=png
screenshot-png-compression=8
screenshot-template='~/pix/ScreenShot/%F (%P) %n'
Option ini saya pergunakan untuk mengatur screenshot file type dan lokasi dimana hasil screenshot disimpan beserta format namanya.
youtube-dl Format
[ytdl-desktop]
profile-desc=cond:is_desktop()
ytdl-format=bestvideo[height<=?720]+bestaudio/best
[ytdl-laptop]
profile-desc=cond:is_laptop()
ytdl-format=bestvideo[height<=?720][fps<=?30][vcodec!=?vp9][protocol!=http_dash_segments]+bestaudio/best
Option di atas saya pergunakan untuk mengatur format video yang akan dipilih pada saat menonton streaming YouTube. Saya menggunakan fiber optik internet, sehingga tidak ada masalah untuk mengeset pada resoulsi 720.
Konfigurasi input.conf
Untuk file konfigurasi input.conf
saya tidak menambahkan banyak pengaturan keyboard shortcuts.
Saya hanya menambahkan untuk pengaturan horizontal flip dan rotate video.
Edit file input.conf
dan tambahkan di paling bawah.
1- cycle-values video-rotate "90" "180" "270" "0"2= vf toggle hflip # toggle for flip video horizontal3\ vf toggle negate # toggle for invert video color
Option di atas bertujuan untuk:
- Tombol - untuk melakukan rotate ke kanan
- Tombol = untuk membuat video menjadi horizontal flip
- Tombol \ untuk membuat color dari video menjadi negatif (inverted/reversed)
Contoh Pemanfaatan MPV
Menonton YouTube
Sangat praktis sekali untuk dapat menonton video YouTube di MPV.
Caranya pun sangat mudah. Hanya perlu mengcopy paste url video YouTube setelah perintah mpv.
$ mpv https://www.youtube.com/watch?v=Jju_lt5f0Zo
PERTANYAAN?
Mengapa Menonton YouTube Menggunakan MPV?
Berikut ini adalah beberapa alasan saya:
- Praktis dan simpel
- Minim distraksi dari user interface YouTube
- Bebas dari iklan
- Volume dapat kita push hingga lebih dari 100% untuk video yang memiliki suara yang kecil
- Brightness, Contrast serta Saturation yang dapat kita atur sendiri. Karena terkadang ada video yang terlalu gelap
- Video dapat dikontrol, seperti: fast, slow, maju satu frame, maju 10 frame, dll
- dll.
WebCam Viewer
Selain dapat memutar video, MPV juga saya pergunakan untuk menampilkan output dari kamera WebCam.
Tidak seperti aplikasi WebCam pada umumnya yang harus bergantian dalam menampilkan output dari kamera. MPV dapat melakukannya secara bersamaan. Yaa jelas, karena mpv memanggil alamat dari masing-masing WebCam.
Sepertinya untuk menggunakan fitur ini, kita memerlukan paket v4l-utils
.
$ sudo pacman -S v4l-utils
Namun, saya belum yakin apakah fitur ini membutuhkan paket v4l-utils
atau tidak.
Sebelumnya cek dulu apakah terdapat webcam yang aktif.
$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 Jan 11 21:39 /dev/video0
crw-rw----+ 1 root video 81, 1 Jan 11 21:39 /dev/video1
Setelah itu baru kita panggil WebCam yang aktif.
Dalam kasus ini hanya /dev/video0/
saja yang saya gunakan.
$ mpv av://v4l2:/dev/video0
Apabila ingin menambahkan propertis lain seperti hitam putih dan horizontal flip, kira-kira seperti ini contohnya.
Horizontal flip.
$ mpv av://v4l2:/dev/video0 --vf=hflip
Atau hitam putih.
$ mpv av://v4l2:/dev/video0 --saturation=-100
Hasilnya,
PERTANYAAN?
Mengapa Mengunakan MPV sebagai WebCam viewer?
Berikut ini adalah beberapa alasan saya:
- Praktis dan simpel
- Minim distraksi dari user interface YouTube
- Brightness, Contrast serta Saturation yang dapat kita atur sendiri.
- Dapat Multi Cam
- Cenderung ringan dan tidak membuat laptop menjadi panas
Gambar 1. MPV menampilkan output dari banyak WebCam
Gambar 2. Demonstrasi Horizontal Flip dan Rotate menggunakan keyboard Shortcut
Subtitle
Pada konfigurasi yang saya buat, saya menghidden visibility dari subtitle.
1# ...2# ...34#############5# Subtitles #6#############78no-sub-visibility # namun dalam keadaan terhidden9# ...10# ...
Tujuannya, agar subtitle tidak langsung ditampilkan pada semua video.
Cara menggunakannya,
- Tekan V untuk meng-enable dan disable visibility dari subtitle.
- Apabila terdapat lebih dari 1 subtitle, kita dapat berpindah antar subtitle menggunakan J untuk Next Subtitle dan SHIFT + J untuk Previous Subtitle.
Dual Subtitle
MPV juga dapat menampilkan dual subtitle.
$ mpv video.mp4 --sub-file=subtitle1.srt --sub-file=subtitle2.srt --secondary-sid=2
Keyboard Shortcuts
Default Keyboard Shortcuts berdasarkan file input.conf
.
Play/Pause
SPACE | toggle play/pause |
p | toggle play/pause |
Show Progress
o | show progress |
P | show progress |
Skip 5 atau 60 detik
→ | seek 5 |
← | seek -5 |
↑ | seek 60 |
↓ | seek -60 |
Kecepatan Play Video
[ | multiply speed 0.9091 |
] | multiply speed 1.1 |
{ | multiply speed 0.5 |
} | multiply speed 2.0 |
Keluar
q | quit |
Q | quit-watch-later |
Subtitle
v | toggle subtitle visibility |
j | toggle next subtitle |
J | toggle previous subtitle |
z | add sub-delay -0.1 |
x | add sub-delay +0.1 |
Volume
0 | add volume +2 |
9 | add volume -2 |
m | toggle mute |
Color Correction
1 | add contrast -1 |
2 | add contrast +1 |
3 | add brightness -1 |
4 | add brightness +1 |
5 | add gamma -1 |
6 | add gamma +1 |
7 | add saturation -1 |
8 | add saturation +1 |
Fullscreen
f | fullscreen |
Looping
l | A-B loop |
Keyboard Shortcuts yang saya tambahkan.
- | rotate left 90 180 270 0 |
= | horizontal flip |
Pesan Penulis
Masih banyak fitur-fitur keren dari MPV yang mungkin belum tercover oleh tulisan ini. Mudah-mudahan dapat saya tambahkan lagi dilain waktu apabila menemukan penerapan lain dari penggunaan MPV.
Referensi
-
mpv.io
Diakses tanggal: 2019/01/11 -
github.com/mpv-player/mpv
Diakses tanggal: 2019/01/11 -
wiki.archlinux.org/index.php/mpv
Diakses tanggal: 2019/01/11