- mpv, komut satırı odaklı, özgür ve açık kaynaklı bir medya oynatıcıdır; çeşitli medya dosyası biçimlerini, ses ve video codec'lerini ve altyazı biçimlerini destekler
- Güçlü scripting özellikleri ve kullanıcı script koleksiyonları sayesinde varsayılan oynatıcıyı istediğiniz şekilde genişletmek kolaydır
- Minimal tasarımını koruduğu için ayrı bir GUI yoktur, ancak videonun üzerinde temel işlemleri yapmayı sağlayan küçük bir ekran üstü denetleyici sunar
- OpenGL, Vulkan ve D3D11 tabanlı yüksek kaliteli video çıkışı ile donanım kod çözme API desteği sayesinde farklı ortamlarda oynatma kalitesi ayarlanabilir
- En baştan kütüphane entegrasyonu düşünülerek tasarlanmış bir C API'si vardır; bu sayede mpv başka uygulamaların içine yerleştirilerek kullanılabilir
Komut satırı odaklı medya oynatıcı
- mpv, komut satırından kullanılan özgür bir medya oynatıcıdır
- Çeşitli medya dosyası biçimlerini, ses ve video codec'lerini ve altyazı biçimlerini destekler
Scripting ve kontrol yöntemleri
- Scripting özelliğiyle oynatıcının davranışı geniş ölçüde genişletilebilir
- Kullanıcı script'leri wiki'deki User Scripts sayfasında toplanmıştır
- Minimalizmi hedeflediği için ayrı bir GUI sunmaz
- Temel kontroller için videonun üzerinde gösterilen küçük bir ekran üstü denetleyici kullanılabilir
Video çıkışı ve kod çözme
- OpenGL, Vulkan ve D3D11 tabanlı video çıkışı sunar
- Video meraklıları için oynatma özellikleri de içerir
- Yüksek kaliteli algoritmalara dayalı video ölçekleme
- Renk yönetimi
- Kare zamanlaması
- Enterpolasyon
- HDR
- Çoğu platformda birden fazla donanım kod çözme API'sinden yararlanılabilir
- Donanım kod çözme, çalışma sırasında gerektiğinde etkinleştirilebilir
Uygulama entegrasyonu ve geliştirme durumu
- mpv, başka uygulamalara kolayca entegre edilebilmesi için en baştan bir C API tasarlamıştır
- API client.h içinde yer alır
- Proje aktif olarak geliştirilmektedir; odak noktası kod refactoring ve düzenleme ile özellik eklemedir
- Özellik istekleri veya yamalar mpv GitHub issues üzerinden gönderilebilir
İlgili kaynaklar
- Installation: Kurulum rehberi
- Source Code Repository: Kaynak kod deposu
1 yorum
Hacker News görüşleri
mpv harika bir medya oynatıcı. Oldukça minimal, performansı iyi ve yapması gereken işi doğru yapıyor.
Yazarın locale konusunda öfkesini döktüğü harika bir commit de var: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... Gülerek okunmaya değer.
Zig, Go, Rust vb. birçok dilin standart kütüphaneleri, C standart kütüphanesinin ya da POSIX API'lerinin çok ilerisinde. Tek başına bu bile onları kullanmak için yeterli sebep.
Spolsky 25 yıl önce “everything you wanted to know about Unicode and character sets” başlıklı bir yazı yazmıştı; Unicode/UTF sonrası dünyadan başka bir şey görmemiş kişiler için bile faydalı olabilir.
errnoiçin de böyle yapıldığını hayal edin denmesine ilişkin olarak, bunun gerçekten böyle olduğu bir örnek var:localtime,localtime_r,tzsetgibi zaman fonksiyonları.Locale'e bağımlı olduğu için locale'e komşu bir alan sayılır; ancak saat dilimi de global state olduğundan, POSIX'e taşınabilir çok iş parçacıklı C kodunda yalnızca standart API'lerle başka bir saat dilimindeki zamanı elde etmek imkânsızdır.
wchar_tikisi de bozuk, miras kalmış beyin ölümü durumlarıdır. C/POSIX standart komitesinde yetkin biri olsaydı çoktan terk edilmiş ya da kaldırılmış olurlardı.gets()kaldırılmadı mı? Bilmeyenlere hakaret gibi gelebilecek bu duygusal patlamayı gerekçelendirmek için uzun bir yazı yazacağım. Sert ifadelerden rahatsız olanlar bunu dini bir metin gibi düşünsün.”Gerçekten efsanevi.
Birkaç yıl önce Linux'ta kullanmaya başladım; artık Android tabletim dahil tüm cihazlarımda yüklü. Kusursuz. Minimal varsayılanlar, makul ayarlar, yüksek hız; sadece düzgün çalışıyor.
Hatta SSH üzerinden yerel oynatma bile yapabiliyor, bu harika:
mpv sftp://mit@nyx/home/mit/Work/merged.mp4Yakın zamanda videoyu döndürmek için bir kısayola ihtiyacım oldu; diğer oynatıcılarda kolay görünmüyordu, mpv'de ise
input.confdosyasınar cycle_values video-rotate "90" "180" "270" "0"eklemek yeterli oldu.mpvLinux kullanıyorsanız donanım hızlandırmayı açmak için
mpv.confdosyasınahwdec=autoeklemeyi unutmayın. AMD/Intel/NVIDIA üzerinde çalışıyor.https://interfacinglinux.com/2024/01/10/hardware-acceleratio...
vo=gpu-next,gpu-api=vulkan,hwdec=vulkan,gpu-context=waylandvkVulkan video çalışmazsa
hwdec=vulkanyerinehwdec=vaapikullanılabilir.pacmanile mpv kurup 4K bir video açtım; CPU fanı hemen dönmeye başladı vetopiçinde birden çok çekirdeğin kullanıldığını gördüm. Bu HN yazısında aşağı inmeye devam ederkenhwdec=autoyu öğrendim.mplayer ve VLC kullanmış biri olarak aklıma hemen gelen soru şu: “Bakımcılar bunu varsayılan yapmayarak hangi trade-off'u göze almaya çalışıyor?”
Bu proje çok eski bir soyağacına sahip; eskiden mplayer olarak biliniyordu. 2001'e kadar uzanan 500 bin commit'i var; üstelik bu, CVS deposunun Subversion'a dönüştürülmesinden sonraki dönem için geçerli.
Ubuntu çalıştıran fansız Minix z100 üzerinde streamlink ile mpv'yi birlikte kullanmak, Olimpiyat izleme deneyimi için neredeyse mükemmeldi.
https://streamlink.github.io/
https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...
Aptalca gelebilir ama kişisel olarak temel özellik, birden fazla altyazıyı aynı anda gösterebilmesi. Parça, ofset, konum, boyut vb. birkaç kısayolla kolayca ayarlanabiliyor
Hiçbir yayın servisi bunu sunmuyor ve kullanıcının konumuyla “ilgili olmadığını” düşündükleri altyazı dillerini aktif olarak gizliyorlar. Böyle bir hizmete saygı duymak zor
--sid1=ve--sid2=ile başlamak yeterince iyi çalışıyorEşim de ben de ana dili İngilizce olan kişiler değiliz ve ana dillerimiz de farklı. Ben İngilizce konusunda oldukça rahatım ama bazı lehçeler zor geliyor; ses gürültülü olduğunda da kelimeleri kaçırabiliyorum, bu yüzden İngilizce altyazıyı tercih ediyorum. Eşim ise kendi ana dilindeki altyazıyı seviyor
Birden fazla altyazı gösterebilmek, ekranda biraz yer harcama pahasına ikimize de istediğimiz izleme deneyimini sağlıyor; buna fazlasıyla değiyor
Bunun hakkında yazmıştım: https://www.baeldung.com/linux/mpv-subtitles-automatic. Ancak desteklenen altyazı biçimleriyle ilgili belgelerin yetersiz olması üzücüydü; gerçekten hangi biçimlerin desteklendiğini görmek için ffmpeg koduna bakmam gerekti
Ayrıca https://subdl.com/ ve https://github.com/alexanderwink/subdl komut satırından altyazı bulmak ve indirmek için iyi kaynaklar
mpv her zaman iyi çalıştı ve önüne atılan neredeyse her şeyi kolayca halletti
Şimdi değişmiş olabilir ama birkaç yıl önce ilk karşılaştığımda bu projeyi diğer oynatıcılardan ayıran şey, doğruluğa ve doğru oynatmaya çok önem verdiği izlenimiydi. Örneğin VLC’de renk üretiminin biraz tuhaf olması gibi garip sorunlar gösteren dosyalar mpv’de kusursuz oynatılmıştı
Gerçi nedenini pek bilmiyorum. Çünkü ikisinin de birçok codec için genel olarak aynı kütüphanelere dayandığını düşünüyorum
mpv harika. Sırasından bağımsız olarak tavsiye edilebilecekler: Seeds of Might/JySzE’nin temel
mpv.confdosyası, özellik açısından zengin ama hâlâ minimalist bir UI olan uosc, uosc veya başka özel UI’larla birlikte kullanılan hızlı küçük resim oluşturucu thumbfast, ses tabanlı olarak açılışları vb. atlayan Eisa01’in SmartSkip’i[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
Açılışları veya kapanış jeneriklerini güvenilir biçimde bulmak için yerel olmayan analiz gerekiyor. Temelde bir sezon ya da tüm yapımın bölümleri arasında ortak olarak görünen ses bölümlerini bulmak gerekiyor
Bunu yapabilen bir CLI aracı yaptım ama aslında “tamamlanmış” durumda değil ve muhtemelen hiçbir zaman da olmayacak. İlk hedefim bir Jellyfin eklentisi geliştirmekti; sonra zaten böyle bir eklenti olduğunu öğrendim
https://github.com/aksiksi/needle
Mevcut en iyi medya oynatıcı. Harika minimalist UI, donanım hızlandırmadan yararlanması ve sadece videoyu oynatması hoşuma gidiyor
Sürekli bu kadar iyi olduğu için muhtemelen hayatım boyunca korsan içeriğe yönelmemin nedenlerinden biri olacak. Yayın servisleri oynatıcılarına milyonlarca dolar harcıyor ama yine de bu seviyeye yaklaşamıyor
MPV’nin çok yönlü betikleri var. Örneğin izlediğiniz videoyu kesebilir veya kırpabilirsiniz[1]
Diğer oynatıcılarda görmediğim işlevleri kısayol olarak da ekleyebilirsiniz. Bazen izlediğim sahnenin parlaklığını ve rengini normalize etmek için
input.confiçinen vf toggle normalize=smoothing=100yazıyorum; ancak donanım kod çözme kullanıyorsanız çalışmayabilirVideo döndürme ise
Ctrl+r no-osd cycle-values video-rotate "90" "180" "270" "0"şeklinde ayarlanıyor[1] <https://github.com/occivink/mpv-scripts>
[1]: https://gist.github.com/madeindjs/f33225cf4d8fdc9f61e0fe3ebe...
Pek bilinmeyen bir nokta: mpv yalnızca YouTube videolarını stream etmekle kalmıyor, CLI’da
mpv ytdl://ytsearch:queryile YouTube araması da yapabiliyorAyrıca ASCII, sixel ve kitty görüntü protokolünü kullanarak videoları terminalin içinde doğrudan oynatmak da mümkün; bunlar arasında kitty görüntü protokolü kalite açısından açık ara en iyisi
Şimdiye kadar mpv’de en sevdiğim özellik, içeriklere gerçek zamanlı olarak CRT shader uygulanabilmesi. Bu yöntem HD videoyu gerçekten 240p’lik bir arabelleğe doğru şekilde downscale ediyor, ardından shader’ın ekran çözünürlüğüne göre upscale işlemini yapmasını da sağlıyor
https://i.imgur.com/akmgzxX.png
https://github.com/hhirtz/mpv-retro-shaders