3 poin oleh GN⁺ 2024-08-18 | 1 komentar | Bagikan ke WhatsApp
  • mpv adalah pemutar media bebas dan open-source yang berfokus pada baris perintah, serta mendukung berbagai format file media, codec audio·video, dan format subtitle
  • Berkat kemampuan scripting yang kuat dan kumpulan skrip pengguna, pemutar dasarnya mudah diperluas sesuai kebutuhan
  • Dengan tetap mempertahankan desain minimalis, tidak ada GUI terpisah, tetapi tersedia pengontrol kecil di layar untuk operasi dasar di atas video
  • Dukungan keluaran video berkualitas tinggi berbasis OpenGL, Vulkan, dan D3D11 serta API decoding perangkat keras memungkinkan kualitas pemutaran disesuaikan di berbagai lingkungan
  • Tersedia C API yang sejak awal dirancang untuk integrasi pustaka, sehingga mpv dapat disematkan dan dimanfaatkan di dalam aplikasi lain

Pemutar media yang berfokus pada baris perintah

  • mpv adalah pemutar media bebas yang digunakan dari baris perintah
  • Mendukung berbagai format file media, codec audio·video, dan format subtitle

Scripting dan cara pengoperasian

  • Dengan fitur scripting, perilaku pemutar dapat diperluas secara luas
  • Mengusung minimalisme sehingga tidak menyediakan GUI terpisah
  • Untuk operasi dasar, dapat digunakan pengontrol di layar kecil yang ditampilkan di atas video

Keluaran video dan decoding

  • Menyediakan keluaran video berbasis OpenGL, Vulkan, dan D3D11
  • Juga mencakup fitur pemutaran untuk penggemar video
    • Penskalaan video berbasis algoritme berkualitas tinggi
    • Manajemen warna
    • Pengaturan waktu frame
    • Interpolasi
    • HDR
  • Di sebagian besar platform, berbagai API decoding perangkat keras dapat dimanfaatkan
  • Decoding perangkat keras dapat diaktifkan saat dijalankan ketika diperlukan

Integrasi aplikasi dan status pengembangan

  • mpv merancang C API sejak awal agar mudah diintegrasikan ke aplikasi lain
  • Proyek ini masih dikembangkan secara aktif dan berfokus pada refaktorisasi kode, perapian, dan penambahan fitur
  • Permintaan fitur atau patch dapat dikirim melalui mpv GitHub issues

Sumber daya terkait

1 komentar

 
GN⁺ 2024-08-18
Komentar Hacker News
  • mpv adalah pemutar media yang luar biasa. Cukup minimalis, performanya bagus, dan melakukan tugasnya dengan benar
    Ada juga commit keren ketika penulisnya meluapkan kemarahan soal locale: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... layak dibaca sambil tersenyum

    • Mungkin terdengar aneh, tetapi kemampuan menghindari masalah seperti ini bisa jadi salah satu peningkatan produktivitas terbesar dari bahasa-bahasa baru seperti Go, Rust, Swift. Ekosistem baru mendapat kesempatan untuk membuat ulang standard library, dan membuang pilihan warisan buruk dari masa sebelum orang tahu lebih baik, seperti locale atau UTF-16
      Standard library dari berbagai bahasa seperti Zig, Go, Rust, dan lainnya jauh lebih maju daripada standard library C atau API POSIX. Itu saja sudah cukup menjadi alasan untuk menggunakannya
    • Tulisannya panjang dan informatif, juga ada sedikit kata-kata kasar. Sangat direkomendasikan
      25 tahun lalu Spolsky menulis artikel “everything you wanted to know about Unicode and character sets”, dan itu masih bisa bermanfaat bahkan bagi orang-orang yang hanya hidup di dunia setelah Unicode/UTF
    • Terkait pernyataan yang meminta kita membayangkan jika errno diperlakukan seperti rusaknya API locale C, sebenarnya ada contoh yang memang seperti itu. Yaitu fungsi waktu seperti localtime, localtime_r, dan tzset
      Karena bergantung pada locale, ini memang area yang berdekatan dengan locale, tetapi zona waktu juga merupakan state global, sehingga dalam kode C multithread yang portabel POSIX, tidak mungkin mendapatkan waktu di zona waktu lain hanya dengan API standar
    • “Locale C dan wchar_t sama-sama warisan rusak yang mati otak. Jika komite standar C/POSIX punya orang yang kompeten, keduanya sudah lama dideprekasi atau dihapus. gets() saja dihapus, bukan? Untuk membenarkan ledakan emosi ini, yang mungkin terasa menghina bagi yang belum tahu, saya akan menulis penjelasan panjang. Jika bahasa keras membuat Anda tidak nyaman, anggap saja ini sebagai teks religius.”
      Benar-benar legendaris
    • Perlu diketahui bahwa penulis commit itu sudah beberapa tahun tidak terkait dengan pengembangan mpv
  • Saya mulai memakainya di Linux beberapa tahun lalu, dan sekarang terpasang di semua perangkat saya sampai tablet Android. Sempurna. Default yang minimalis, konfigurasi yang masuk akal, cepat, dan memang berfungsi dengan baik
    Bahkan bisa memutar secara native lewat SSH, ini luar biasa: mpv sftp://mit@nyx/home/mit/Work/merged.mp4
    Baru-baru ini saya butuh shortcut untuk memutar orientasi video, dan sepertinya tidak mudah dilakukan di pemutar lain; di mpv cukup menambahkan r cycle_values video-rotate "90" "180" "270" "0" ke input.conf

    • Video juga bisa diputar lewat HTTP, dan mendukung banyak situs web termasuk YouTube: mpv
  • Kalau di Linux, jangan lupa mengaktifkan akselerasi hardware dengan menambahkan hwdec=auto ke mpv.conf. Ini bekerja di AMD/Intel/NVIDIA
    https://interfacinglinux.com/2024/01/10/hardware-acceleratio...

    • Ternyata selama bertahun-tahun saya menonton video dengan mpv tanpa akselerasi hardware. Untung membaca ini
    • Saya memakainya dengan konfigurasi seperti ini: vo=gpu-next, gpu-api=vulkan, hwdec=vulkan, gpu-context=waylandvk
      Jika video Vulkan tidak berjalan, hwdec=vulkan bisa diganti menjadi hwdec=vaapi
    • Saya penasaran kenapa ini dimatikan secara default
    • Entah kenapa, di Fedora, mungkin kombinasi kernel 6.10 dan Vega 64, saya sering mengalami performa yang lebih buruk serta lag dan stutter. Setahun sekali saya mencobanya lagi, tetapi tidak berhasil dan akhirnya menyerah lagi
    • Saya baru saja menginstal mpv dengan pacman dan mencoba memutar video 4K; kipas CPU langsung berputar, dan di top terlihat beberapa core digunakan. Saat terus menggulir thread HN ini, saya baru tahu tentang hwdec=auto
      Sebagai pengguna mplayer dan VLC, pertanyaan yang langsung muncul adalah, “trade-off apa yang ingin diterima para maintainer dengan tidak menjadikannya default?”
  • Proyek ini punya silsilah yang sangat panjang; dulu dikenal sebagai mplayer. Ada 500 ribu commit yang mundur sampai tahun 2001, itu pun dihitung sejak repository CVS dikonversi ke Subversion
    Menggunakan streamlink bersama mpv di Minix z100 fanless yang menjalankan Ubuntu memberikan pengalaman menonton Olimpiade yang hampir sempurna
    https://streamlink.github.io/
    https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...

    • Sulit mengatakan bahwa mplayer dan mpv itu sama. Memang benar mpv di-fork dari mplayer dan lainnya, tetapi mplayer masih merupakan proyek terpisah
  • Mungkin terdengar konyol, tetapi bagi saya pribadi fitur intinya adalah kemampuan untuk menampilkan beberapa subtitle sekaligus. Track, offset, posisi, ukuran, dan sebagainya bisa diatur dengan mudah lewat beberapa pintasan keyboard
    Tidak ada layanan streaming yang menyediakan ini, dan mereka secara aktif menyembunyikan bahasa subtitle yang dianggap “tidak relevan” dengan lokasi pengguna. Sulit untuk menghormati layanan seperti itu

    • Ini benar-benar fitur yang hebat. Saya bahkan belum benar-benar menghafal pintasannya dan mungkin memang harus, tetapi memulai dengan --sid1= dan --sid2= sudah bekerja dengan cukup baik
      Saya dan pasangan sama-sama bukan penutur asli bahasa Inggris, dan bahasa ibu kami juga berbeda. Saya cukup nyaman dengan bahasa Inggris, tetapi beberapa dialek terasa sulit dan kalau audionya berisik kadang saya melewatkan kata, jadi saya lebih suka subtitle bahasa Inggris. Pasangan saya suka subtitle dalam bahasa ibunya
      Dengan menampilkan beberapa subtitle, kami berdua bisa mendapatkan pengalaman menonton yang kami inginkan dengan imbalan sedikit ruang layar, dan itu sangat sepadan
    • mpv kuat dalam penanganan subtitle. Selain bisa mengganti track subtitle dan mengatur posisinya, saat memutar video ia juga bisa otomatis mencari dan memutar file subtitle eksternal
      Saya menulis tentang ini: https://www.baeldung.com/linux/mpv-subtitles-automatic. Namun sayangnya dokumentasi format subtitle yang didukung kurang memadai, dan untuk memastikan format yang benar-benar didukung saya harus melihat kode ffmpeg
      Selain itu, https://subdl.com/ dan https://github.com/alexanderwink/subdl adalah sumber yang bagus untuk mencari dan mengunduh subtitle dari command line
    • Fitur seperti ini sangat bagus terutama untuk belajar bahasa. Namun layanan seperti Amazon, misalnya, sebenarnya punya sekitar 30 subtitle tetapi hanya menampilkan kira-kira dua, bahasa Inggris dan bahasa lokal. Saya bahkan tidak akan mulai membahas perbedaan antara subtitle dan dubbing
    • Menyembunyikan bahasa subtitle yang “tidak relevan” dengan lokasi bisa jadi karena masalah hukum atau pembatasan kontrak dengan pemegang hak konten atau penyedia subtitle terkait
  • mpv selalu bekerja dengan baik, dan dengan mudah menangani hampir apa pun yang dilemparkan kepadanya
    Mungkin sekarang sudah berbeda, tetapi ketika pertama kali saya menemukannya beberapa tahun lalu, yang membedakan proyek ini dari player lain adalah kesan bahwa mereka sangat menekankan akurasi dan pemutaran yang tepat. Misalnya, ada file yang di VLC menunjukkan masalah aneh seperti reproduksi warna yang agak ganjil, tetapi di mpv pernah diputar dengan sempurna

    • Hal-hal yang bermasalah secara aneh di VLC tetapi diputar sempurna di mpv sudah terjadi sejak lama. Bahkan pada era MPlayer awal 2000-an pun begitu
      Namun saya tidak begitu tahu alasannya, karena menurut saya keduanya pada dasarnya bergantung pada library yang sama untuk banyak codec
    • Mengingat VLC pada dasarnya cenderung tahan banting dan bisa memutar hampir file apa pun, menyenangkan melihat mpv juga sudah mencapai level itu
    • Saat memutar media “HDR” di mpv, pernah ada masalah yang cukup besar pada representasi warna
  • mpv luar biasa. Beberapa hal yang layak direkomendasikan, tanpa urutan tertentu: mpv.conf dasar dari Seeds of Might/JySzE, uosc sebagai UI yang kaya fitur tetapi tetap minimal, thumbfast sebagai thumbnailer cepat untuk dipakai bersama uosc atau UI kustom lain, dan SmartSkip dari Eisa01 yang melewati opening dan sejenisnya berbasis audio
    [1] Windows: https://gist.github.com/JySzE/db4149cad726b3b6955dca8d47a197..., macOS: https://gist.github.com/JySzE/34ee131da3974811a9469e1e3b7d4d...
    [2] https://github.com/tomasklaen/uosc
    [3] https://github.com/po5/thumbfast
    [4] https://github.com/Eisa01/mpv-scripts#smartskip

    • Bukan bermaksud meremehkan pekerjaan pada plugin itu, tetapi itu adalah implementasi skip opening yang “dasar”
      Untuk menemukan opening atau kredit penutup secara andal, diperlukan analisis non-lokal. Pada dasarnya, perlu menemukan segmen audio yang umum muncul di antara episode-episode dalam satu season atau seluruh karya
      Saya membuat tool CLI yang bisa melakukan ini, tetapi sebenarnya belum dalam keadaan “selesai” dan mungkin akan tetap begitu. Tujuan awalnya adalah mengembangkan plugin Jellyfin, tetapi belakangan saya tahu bahwa plugin seperti itu sudah ada
      https://github.com/aksiksi/needle
  • Ini media player terbaik yang ada saat ini. Saya suka UI minimal-nya yang bagus, pemanfaatan akselerasi hardware, dan fakta bahwa ia sekadar memutar video
    Karena terus sebagus ini, mungkin ini menjadi salah satu alasan saya akan terus membajak seumur hidup. Layanan streaming menghabiskan jutaan dolar untuk player mereka, tetapi tetap tidak mendekati level ini

    • YouTube tampaknya sengaja melemahkan web player untuk mendorong orang mengunduh aplikasi dan upgrade ke Premium
  • MPV memiliki skrip yang serbaguna. Misalnya, Anda bisa memotong atau melakukan crop pada video yang sedang ditonton[1]
    Anda juga bisa menambahkan fitur sebagai pintasan keyboard yang belum pernah saya lihat di pemutar lain. Kadang saya menulis n vf toggle normalize=smoothing=100 di input.conf untuk menormalkan kecerahan dan warna adegan yang sedang ditonton, tetapi ini mungkin tidak berfungsi jika memakai hardware decoding
    Rotasi video diatur seperti Ctrl+r no-osd cycle-values video-rotate "90" "180" "270" "0"
    [1] <https://github.com/occivink/mpv-scripts>

    • Secara pribadi, saya terutama memakai MPV untuk memutar pustaka musik yang berisi file FLAC, lalu membuat plugin[1] dengan JS untuk mengirim riwayat pemutaran ke listenbrainz.org. Sangat sederhana, tetapi bekerja dengan baik selama beberapa bulan terakhir
      [1]: https://gist.github.com/madeindjs/f33225cf4d8fdc9f61e0fe3ebe...
    • mpv juga memiliki antarmuka scripting Lua yang solid. Saya membuat alat dengan Golang dan Lua agar mpv memperlakukan file torrent dan tautan magnet seperti tautan HTTP, sehingga torrent bisa langsung di-streaming
      Hal yang kurang diketahui orang, mpv tidak hanya bisa men-streaming video YouTube, tetapi juga bisa melakukan pencarian YouTube dari CLI dengan mpv ytdl://ytsearch:query
      Selain itu, video juga bisa diputar langsung di dalam terminal menggunakan protokol gambar ASCII, sixel, dan kitty; di antara ini, protokol gambar kitty memiliki kualitas yang jauh lebih baik
  • Sejauh ini fitur favorit saya di mpv adalah kemampuan menerapkan shader CRT ke konten secara real-time. Dengan cara ini, video HD benar-benar di-downscale dengan benar ke buffer 240p, lalu shader juga menangani proses upscale agar sesuai dengan resolusi layar
    https://i.imgur.com/akmgzxX.png
    https://github.com/hhirtz/mpv-retro-shaders