HN Açıklandı: Web Components ile web için yeniden oluşturulan Winamp ve diğer medya oynatıcıları
(player.style)- player.style, Media Chrome tabanlı bir video ve ses oynatıcı tema koleksiyonu; farklı web oynatıcılarına ve uygulama çatılarında aynı şekilde uygulanabiliyor
- İstediğiniz oynatıcı temasını seçip oynatıcıyı ve çatıyı belirlediğinizde, kopyalayıp yapıştırabileceğiniz bir kod akışına yönlendiriyor
- Video/Audio, HTML, React, Next.js, Vue, Svelte ile birlikte timeline thumbnails, AirPlay, Google Cast, chapters, tooltips gibi ölçütlerle temalar daraltılabiliyor
- Oynatıcı arayüzü yalnızca HTML ve CSS ile ayarlanabiliyor; ayrıca Primary, Secondary, Accent gibi tema renk ayarları da sunuluyor
- Sutro, Instaplay, Notflix, YT, Minimal, Winamp gibi mevcut medya oynatıcı deneyimleri web temaları olarak yeniden kurgulanıp hızla uygulanabiliyor
player.style kullanım şekli ve özelleştirme
- player.style, Media Chrome ile yapılmış video ve ses oynatıcı temaları sunuyor
- Hedef kapsamı “every web player” ve “every web app framework”
- Uygulama akışı basit 3 adımdan oluşuyor
- Beğendiğiniz oynatıcı temasını seçin
- Kullanacağınız oynatıcıyı ve uygulama çatısını seçin
- Oluşturulan kodu kopyalayıp yapıştırın
- Oynatıcı arayüzü yalnızca HTML ve CSS ile ayrıntılı olarak ayarlanabiliyor
- Filtreler ve ayar seçenekleri şunları içeriyor
- Medya: Video, Audio
- Çatılar: HTML, React, Next.js, Vue, Svelte
- Özellikler: timeline thumbnails, AirPlay, Google Cast, chapters, tooltips
- Renkler: Primary, Secondary, Accent
Web oynatıcı tema galerisi
- Sutro: SF TV anteninin adından esinlenen şık ve modern bir tema
- X-mas: kırmızı-yeşil tonları, parıldayan ışıklar ve yıl sonu havası taşıyan bir Noel teması
- Halloween: video oynatıcıya Cadılar Bayramı havası katan bir tema
- Instaplay: popüler bir sosyal medya uygulamasının oynatma deneyiminden ilham alan mobil öncelikli bir tema
- Sutro Audio: Sutro ile aynı açıklamaya sahip ses teması
- Notflix: “büyük kırmızı N” ve Los Gatos’a giden uzun otobüs dışında o deneyimi ima eden bir tema
- Reelplay: geçmiş medya oynatıcılarından ilham alan retro medya oynatıcı teması
- Vimeonova: klasik Vimeo oynatıcı tasarımını yeniden yorumlayan bir tema
- YT: modern ve yaygın kullanılan YouTube oynatıcısına bir saygı duruşu; Web Components ile olabildiğince yakın biçimde yeniden oluşturulmuş
- Tailwind Audio: Tailwind CSS ile yapılmış minimalist bir ses oynatıcı teması
- Demuxed 2022: Demuxed 2022 için yapılmış medya oynatıcı teması
- Microvideo: uzun içeriklerde gereken güçlü oynatma kontrollerine ihtiyaç duymayan kısa içerikler için tasarlanmış bir tema
- Minimal: Mux Player deneyimini izleyicinin ihtiyaç duyduğu temel kontrollere indirgeyen sade bir tema
- Winamp: klasik Winamp medya oynatıcısından ilham alan retro bir tema
1 yorum
Hacker News yorumları
Yalnızca müzik gerekiyorsa ve video gerekmiyorsa https://webamp.org/ de bakmaya değer.
“Derlemeye” ya da gösterişli biçimde “entegre etmeye” gerek yok; doğrudan ekleyebiliyorsunuz, çalma listesini de uygulama içinde oluşturabiliyorsunuz. Örnek: Music
Bu fikri sevdim ve bunu MIT lisansı ile yayımladığınız için teşekkürler.
Ben de tam bu sırada bir medya uygulaması, daha doğrusu bir video editörü geliştiriyorum; geçmişte de Flash ve HTML/JS ile birkaç video oynatıcı yapmıştım. 2015 civarında bir oynatıcıda web component'leri denemiştim ama süreç sürekli sancılı olduğu için sonunda düz JavaScript'e geri dönmüştüm. İlginç biçimde, şu anki medya uygulamamda video editörü zaman çizelgesi gibi web component'leri kullanıyorum ve şimdiye kadar oldukça iyi gidiyor. Neyin değiştiğini ya da web'in yavaş evrimi sayesinde uyumluluğun yeterince artıp artmadığını tam bilmiyorum.
Media Chrome belgelerine göz attım ve GitHub deposuna da hızlıca baktım; tasarım ilkeleriyle mimari notları hoşuma gitti. Böyle bir şeyi benimserken, özellikle de buna benzer şeyleri birkaç kez kendim yazmış biri olarak, en büyük kaygım genişletilebilirlik ve dosya boyutu oluyor. Örneğin kendi zaman çizelgesi bileşenimi MediaController paradigmasına uydurmanın ne kadar zor olacağını merak ediyorum. Her şeyi kendiniz yaptığınızda sadece ihtiyaç duyduğunuz şeyler olur, fazlası olmaz. Media Chrome'da ise benim asla kullanmayacağım pek çok özellik var gibi görünüyor; soru şu, bunun yüzünden ne kadar gereksiz yük taşımış olacağım. Bu yalnızca kullanmadığım bileşenler için değil, kullandığım bileşenlerin içindeki kullanmadığım özellikler için de geçerli. Bazen mevcut gereksiz özellikler, daha alt seviyedeki genişletilebilirliğin önünü de kesebiliyor.
Ayrıca
media-elementsdeposunda [1] bir lisans dosyası yok. package.json içinde öğelerin de MIT olduğu yazıyor ama açık bir LICENSE dosyası olması her zaman iyi olur.Yine de oldukça cazip bir kütüphane. En azından şimdiye kadar bu öğeleri birbirine bağlama işini sayfayı oluşturan kod yapıyordu; ben de daha iyi bir soyutlama arıyordum, bu yüzden bileşenlerimi media-controller benzeri bir öğeyle sarmalama fikrini muhtemelen ödünç alacağım.
Arada web component spesifikasyonunun v2 sürümü geldi ama tam olarak neyin değiştiği konusunda uzman değilim. Artık web component'leri her yerde görmeye başladık; özellikle de medya oynatıcılarda. Örneğin Apple'ın web oynatıcısı buna bir örnek.
Denetleyici mimarisini beğenmenize sevindim. İlk sürümlerde tüm öğeler medya öğesini doğrudan işaret ediyordu; denetleyici gelince işler çok daha derli toplu hale geldi. En azından benim önceki yöntemlerimle kıyaslayınca bunu güçlü biçimde tavsiye ederim.
Video editörü arayüzünü Media Chrome ürün ailesinin doğal bir uzantısı olarak görüyorum. Bu tarafta neyin daha faydalı olacağını depoda issue açarak paylaşırsanız harika olur.
Gelecekteki esneklik ve boyut kaygıları yüzünden Media Chrome gibi bir şeyi benimsemekte tereddüt etmenizi çok iyi anlıyorum. Beni ikna edebilecek 3 nokta olurdu: 1) Yalnızca ihtiyaç duyduğunuz UI bileşenlerini dahil edebiliyorsunuz; bu da boyut açısından diğer web video oynatıcılarına göre büyük bir fark yaratıyor. 2) Erişilebilirlik ve ilerideki uluslararasılaştırma gibi konular dahil, üzerinde en deneyimli oynatıcı geliştiricileri çalışıyor. 3) slot'lar, CSS parts ve CSS değişkenleri sayesinde çok yüksek düzeyde yapılandırılabilir olmasına özellikle çabalıyoruz.
Elbette tamamen özel yazılmış bir yazılımın dosya boyutunu geçemez ama tüm temel işlevler oturduğunda ona oldukça yaklaşabileceğini düşünüyorum. elements lisansını haber verdiğiniz için teşekkürler.
Mux pazarlama stratejisi akıllıca.
Video paketleri arayan geliştiricilerin eninde sonunda şirketin adıyla karşılaşması için açık kaynak projeleri ya devralıyorlar ya da yenilerini oluşturuyorlar.
Yakın zamanda gördüğüm başka bir örnek de https://github.com/cookpete/react-player.
Açık kaynak oynatıcı tarafında gördüğümüz şeylerden bir kısmı da, zaten bu tür projeleri desteklemek zorunda olmamızdan kaynaklanıyor. Biz oynatıcıdan bağımsızız; bu yüzden müşterilerimiz, bakımı çok aktif olmayan projeler de dahil, çeşitli açık kaynak çözümleri kullanıyor.
Şu anda geliştirici odaklı video şirketleri arasında açık kaynağa ciddi katkı veren çok az şirket var; bu yüzden burada avantaj elde ettiğimizi düşünüyorum.
Mux iyi görünüyor, ancak şirketin ücretsiz video kodlama katmanını sürdürmeye devam edeceğine güvenmediğim için onun üstüne bir şey inşa edeceğimi sanmıyorum
Kullanıcıya yönelik isteğe bağlı kodlama da kaynak açısından pek mantıklı gelmiyor. Starter modelinde 10 dolara 100 dolarlık kredi alıyorsunuz. Hepsi büyük bir yem ürün gibi görünüyor ve her gün para yakan bir şirkete artık güvenmek zor. Keşke en azından bir şekilde ücret alsalardı. Kodlamanın bedava olmadığını biliyorum. Ya da sitede, sektördeki herkesden daha düşük fiyat alıp yine de işi nasıl sürdürebildiklerini açıklayan bir bölüm olsa, şüphemi epey azaltabilirdi. SaaS yüzünden fazlasıyla yandım
“Sektördeki herkesden daha düşük fiyat alıp yine de işi nasıl sürdürebildiklerini açıklayan bir bölüm” gerçekten çok iyi bir geri bildirim; yapılacaklar listesine ekleyeceğim. Kesinlikle orada olmalı
Taşıyamayacağımız birim ekonomisine göre fiyat vermeyeceğiz; en azından bunu taşıyabileceğimize dair net bir yol olmalı. Tüm hacim bazlı fiyatlandırmalar açık olduğu için, kredi gibi kavramları anlıyorsanız yemin arkasından gelen bir fiyat değişikliğiyle karşılaşmamanız gerekir. Ölçek büyüdüğünde kullanıcıyı yeni fiyatlarla şaşırtan bazı rakiplerin tersini yapıyoruz. Bu yaklaşımı gerçekten sevmiyorum
İçeride tam zamanında kodlama ve başka gelişmiş optimizasyonlar kullandığımız için bir avantajımız var. Ölçek ekonomisi de var; bununla ilgili bir yazı yazmayı planlıyorum
Ama müşteri algısı zor. Bazı müşteriler kodlamayı, maliyetini ve uyarlanabilir streaming ya da kullanıcı üretimli yüklemeleri işlemek gibi avantajlarını anlıyor. Birçok geliştirici video konusunda yeni ve bunun MP4’ü S3’e yükleme maliyetiyle aynı olmasını bekliyor. Kimi insanlar kodlama maliyeti olmayan rakipleri örnek gösteriyor, kimileri de YouTube yüzünden daha ucuz olması gerektiğini söylüyor. Geçmişte Mux kodlama için ücret aldığı için “pahalı seçenek” diye sınıflandırılıyordu; bu yüzden, ekonomik olarak sürdürülebilir daha düşük bir kodlama düzeyinden başlayıp, değerli olduğuna karar verilirse daha yüksek kodlama maliyeti/değer düzeyini seçebileceğiniz yeni bir fiyat yapısı oluşturuyoruz. Bunun bir kısmı zaten yayında, bir kısmı da yolda
Videonun bugün olduğundan daha fazla yerde olması gerektiğini düşünüyoruz, ama video; uygulama geliştirirken ortaya çıkan diğer birçok maliyetle kıyaslandığında doğası gereği pahalı. Bu yüzden maliyeti düşürmeye ve fiyat yapısını inceltmeye devam ederek daha fazla kullanım senaryosunda videoyu mümkün kılmanın bizim işimiz olduğunu düşünüyoruz
Ücretsiz kodlama kullanırken verilen ödünler burada özetlenmiş: https://docs.mux.com/guides/use-video-quality-levels. Ücretsiz basic kodlamada bile depolama ve aktarım maliyetleri yine ücretlendiriliyor. Başlangıçta maliyeti azaltmanıza yardımcı olabilirsek birlikte büyüyebileceğimizi umuyoruz
İsteğe bağlı, yani JIT kodlama; gerçekte ne kadar tutarlı ve iyi çalıştığını görünce adeta sihir gibi geliyor
Mux’ta çalışıyorum
Burada odak işleme konusunda biraz gariplik var. Umarım yapıcı eleştiri olarak alınır; hepsinde aynı sorun var
Videonun kendisine tıklarsanız sol/sağ ok tuşları videoda ileri geri arama yapabiliyor. Yukarı/aşağı ise hiçbir şey yapmıyor
Arama çubuğuna tıklarsanız sol/sağ ok tuşları çalışmayı bırakıyor. Bunun yerine yukarı/aşağı ok tuşları farklı zaman aralıklarıyla geri sarma/ileri alma yapmaya başlıyor
Winamp örneğinde ya da Reelplay örneğindeki Windows 98 gibi görünen mavi çubuk gibi boş bir alana tıklarsanız, bu kontrollerin hepsi çalışmayı bırakıyor ve boşluk tuşuyla oynat/duraklat da olmuyor
Bunu macOS’te güncel Chrome’da doğruladım
Genel olarak videoyu kontrol eden “kısayollar”, her bileşenin erişilebilirlik kontrolleri ve tüm sayfaya yönelik genel erişilebilirlik beklentileri üst üste bindiği için durum biraz karmaşık. Örneğin oynatıcı odaktayken yukarı/aşağı oklarını her zaman ses kontrolüne mi ayırmalıyız, yoksa insanlar bunları sayfayı kaydırmak için kullanmayı beklediğinden bunu yapmamalı mıyız gibi sorular var
Her hâlükârda bu, zamanla yinelemeli olarak iyileştirmemiz gereken bir alan; dolayısıyla geri bildirim yardımcı oluyor
Player.style harika
Son girişimimde video.js için özel bir tema yapmaya başlamıştım, ama birkaç saat sonra bunun zamanımı harcamaya değmeyeceğine karar verip varsayılanı kullandım. İleriye dönük olarak, böyle temalar daha özelleştirilmiş bir şey inşa ederken çok daha iyi bir başlangıç noktası gibi görünüyor
Bu başlıkta video uzmanları varken şunu merak ediyorum: ses içeren hızlı ve akıcı aramayı mümkün kılan bir oynatıcı uygulaması var mı?
Adobe Premiere’de zaman çizelgesini 16x hızla taramak ya da göz gezdirmek gibi bir şeyden bahsediyorum. Muhtemelen 16kHz mono bir ses parçası ve 1fps sprite ya da yalnızca I-frame içeren 240p bir video formatı gibi bir şeyi önceden agresif biçimde yükleyip, arama sırasında ona geçmek gerekir
Kesin bir cevap yok, ama daha düşük seviyede yüksek performanslı örneklerin yapıldığı WebCodecs tarafına bakmak faydalı olabilir: https://developer.mozilla.org/en-US/docs/Web/API/WebCodecs_A...
Web Components harika ve Mux bununla çok güzel işler yapıyor
Kodun YouTube gömmesi ile çalışacak şekilde uyarlanması mümkün
Bunun için YouTube gömme
srcdeğerinde aşağıdakileri ayarlamak yeterlicontrols=0– oynatma, duraklatma, ses gibi oynatıcı kontrollerini kaldırırmodestbranding=1– oynatıcının içindeki YouTube logosunu en aza indirirrel=0– sonda ilgili videoları göstermeyi engeller. Yalnızca aynı kanaldaki videoları gösterme şeklinde çalışırshowinfo=0– video başlığını ve yükleyici bilgisini kaldırır. Bu parametre kullanımdan kaldırıldı amamodestbrandingyardımcı olurfs=0– tam ekran düğmesini devre dışı bırakıriv_load_policy=3– açılır bildirimler gibi video ek açıklamalarını gizlerArdından kodda YouTube gömme URL'si algılanıp,
videoetiketi yerineiframeile oynatıcı oluşturulabilir. Son olarak oynatıcı kontrolleri YouTube Embed API'ye eşlenebilir. Plyr.io da benzer bir şey yapmıştıWinamp'a belli ölçüde benzeyen bir şey yapmak, onu Winamp yapmaz