4 पॉइंट द्वारा GN⁺ 2024-04-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Kyoo फिल्मों, सीरीज़ और anime जैसे वीडियो कंटेंट पर केंद्रित एक सेल्फ-होस्टेड मीडिया सर्वर है, और Jellyfin या Plex का विकल्प है
  • इसका लक्ष्य folder structure लागू किए बिना या manual metadata editing के बिना काम करना है; अगर अजीब file names की वजह से media ठीक से scan नहीं होता, तो इसे bug माना जाता है
  • features को plugin system से expand करने के बजाय built-in features के रूप में देने की दिशा है; इसमें dynamic transcoding, preview thumbnails, intro/credits detection और advanced subtitle support शामिल हैं
  • फिलहाल client Web को support करता है; Android v5 में अभी उपलब्ध नहीं है, और iOS व tvOS support की फिलहाल कोई योजना नहीं है क्योंकि hardware खरीद और सालाना developer cost लगभग $100 है
  • server administrator download directory की files को अलग से organize किए बिना इस्तेमाल कर सकते हैं, और Kyoo अपना scope music, e-books या games के बजाय video streaming तक सीमित रखता है

Kyoo जिस समस्या को हल करना चाहता है

  • Kyoo वीडियो कंटेंट के लिए specialized सेल्फ-होस्टेड मीडिया सर्वर है
    • target content Movies, Series, Anime है
    • इसे Jellyfin या Plex के alternative के रूप में पेश किया गया है
  • इसका लक्ष्य maintenance burden कम करना है
    • किसी खास folder structure की जरूरत नहीं है
    • manual metadata editing की जरूरत नहीं है
    • अजीब file names में भी media ठीक से scan होना चाहिए; failure को bug माना जाता है
  • plugin system उपलब्ध नहीं कराया जाता
    • features को जहां तक संभव हो built-in रखने की दिशा है

मुख्य features

  • Dynamic Transcoding

    • media को इच्छित quality में transcode किया जा सकता है
    • automatic quality switching से playback के दौरान quality बदली जा सकती है
    • transcoder का इंतजार किए बिना तुरंत seek किया जा सकता है
  • Video Preview Thumbnails

    • video progress bar पर mouse hover करने पर video preview देखा जा सकता है
  • Intro/Credit detection

    • audio fingerprinting से intro और credits को automatically detect किया जाता है
    • chapter title matching भी इस्तेमाल की जा सकती है
  • Enhanced Subtitle Support

    • PGS/VODSUB और SSA/ASS subtitles को support करता है
    • संभव होने पर video में embedded fonts का इस्तेमाल करता है
  • Anime Name Parsing

    • [Some-Stuffs] Jojo's Bizarre Adventure Stone Ocean 24 (1920x1080 Blu-Ray Opus) [2750810F].mkv जैसे जटिल anime file names भी match कर सकता है
  • Helm Chart

    • Kubernetes cluster पर deploy करने के लिए official Helm chart है
    • multiple replicas पर काम चल रहा है
  • OIDC Connection

    • Google, Discord, Authelia जैसे OIDC-compatible services से login किया जा सकता है

v5 में अभी दोबारा implement नहीं हुए features

  • Watch List Scrubbing Support

    • connected services के साथ watch list को automatically sync करने वाला feature v5 में अभी दोबारा implement नहीं हुआ है
    • SIMKL और भविष्य की अन्य services target हैं
  • Download and Offline Support

    • internet के बिना देखने के लिए download और offline support भी v5 में अभी दोबारा implement नहीं हुआ है
    • इसे device के फिर से online होने पर progress sync करने वाले feature के रूप में पेश किया गया है

Clients और platforms

  • फिलहाल supported client Web है
  • Android client v5 में अभी उपलब्ध नहीं है और “soon” status में है
  • additional platforms पर विचार किया जा रहा है
  • frontend React-Native और Expo से बनाया गया है
  • Apple devices support की फिलहाल योजना नहीं है
    • target iOS और tvOS हैं
    • कारण hardware खरीद और सालाना developer cost लगभग $100 है

Jellyfin/Plex से अंतर

  • Jellyfin और Plex को technically SQLite पर निर्भर और एक single container के अंदर सब कुछ रखने वाले तरीके के रूप में बताया गया है
  • Kyoo जरूरत पड़ने पर additional containers इस्तेमाल करने वाला approach अपनाता है
    • example के तौर पर transcoder दिया गया है
  • operating philosophy “एक बार setup करो और भूल जाओ” वाली है
    • manual file name changes की मांग नहीं करता
    • किसी खास folder structure की मांग नहीं करता
    • download directory की files को जस का तस इस्तेमाल करना लक्ष्य है
  • scope films, TV shows और anime streaming तक सीमित है
    • music, e-books और games को cover नहीं करता

शुरू करने और integration resources

  • API Documentation: Kyoo को दूसरी services के साथ integrate करने के लिए API documentation
  • Join the discord: सवालों, development discussions, feature requests और bugs share करने के लिए Discord
  • weblate: Kyoo द्वारा support न की जाने वाली भाषाओं के translations जोड़े जा सकते हैं
  • kyoo.zoriya.dev: copyright-free films से बना live demo उपलब्ध है

1 टिप्पणियां

 
GN⁺ 2024-04-07
Hacker News की राय
  • डेमो सुंदर और अच्छी तरह बनाया गया है। मैं Plex का संतुष्ट यूज़र हूं—ऑडियो के लिए Plexamp और वीडियो के लिए Apple TV वाला Plex ऐप इस्तेमाल करता हूं—इसलिए स्विच करने का इरादा नहीं है, लेकिन जिस तकनीक में दिलचस्पी थी उसे सीखने के लिए शुरू हुए sandbox project का धीरे-धीरे बड़ा हो जाना, कुछ बनाने के लिए वाकई बहुत अच्छी प्रेरणा लगता है

    • अगर आप audiobooks भी सुनते हैं, तो Bookcamp भी देखने लायक है। Plexamp से भी शायद हो जाए, लेकिन Bookcamp का अनुभव Audible जैसा ज्यादा लगता है
    • जानना चाहूंगा कि आप Plexamp कैसे इस्तेमाल करते हैं। क्या आप albums डाउनलोड करके वहीं से stream करते हुए इसे Spotify जैसे विकल्प की तरह इस्तेमाल करते हैं?
    • Plexamp ही एकमात्र वजह है कि मैं अभी भी Plex पर बना हुआ हूं
      Plex के कभी enshittification चरण में जाने की स्थिति के लिए मैंने Jellyfin भी साथ-साथ सेट कर रखा है, लेकिन 2012 में खरीदी गई lifetime membership अब तक पूरी तरह पैसे वसूल रही है
  • मैंने Plex से Jellyfin पर जाने की कोशिश की थी, लेकिन Jellyfin में library management को लेकर खास रुचि नहीं दिखी और file structure को लेकर इसके बहुत कड़े अनुमान इसकी सबसे बड़ी सीमा लगे
    wiki में files के नाम सही तरह से रखने का अलग section है, जबकि Plex में इसकी चिंता नहीं करनी पड़ती। सोच रहा हूं कि Kyoo भी ऐसा ही approach अपनाता है या ज्यादा user-friendly है। Plex की monetization पद्धति बेतुकी है, लेकिन Jellyfin अभी गंभीरता से इस्तेमाल करने के लिए पूरी तरह तैयार नहीं लगता

    • वह हिस्सा वाकई अजीब लगता है। Kyoo का लक्ष्य आपकी library को आपकी जगह organize करना है, और download folder को सीधे library folder की तरह इस्तेमाल करने पर भी, बिना नाम बदले, इसे तुरंत काम करना चाहिए
      अभी भी edge cases हैं, खासकर extra videos जैसी चीजें कभी-कभी ठीक से handle नहीं होतीं। फिर भी "[SomeGroup] Jojo's bizzare adventure - golden wings 12.mkv" जैसे अजीब anime file names भी handle हो जाते हैं
    • मुझे समझ नहीं आता कि media server को structure को लेकर कम जिद्दी क्यों होना चाहिए। Jellyfin में कुछ buttons दबाने पर यह खुद संभाल लेता है, यह अच्छा है, और खुद structure के बारे में सोचने की जरूरत नहीं पड़ती, इसलिए सुविधा रहती है
    • मैं Jellyfin इस्तेमाल करता हूं, लेकिन file management TMM(tiny media manager) से करता हूं। Jellyfin, TMM के बनाए output को अच्छी तरह स्वीकार करता है
      सच कहूं तो मैं ऐसा हल्का Jellyfin भी देखना चाहूंगा जिसमें media management code बिल्कुल न हो और सिर्फ streaming हो
    • बेशक माहौल के हिसाब से फर्क पड़ेगा, लेकिन Jellyfin manual tagging इस्तेमाल करने लायक अच्छी support देता है। file browser में देखने के लिए सुविधाजनक बनाए गए folder structure को तोड़े या file names बदले बिना, file या folder पर "Identify" दबाकर title या IMDB number से enabled databases में search किया जा सकता है
      एक बार folder को किस TV show का है यह specify कर दें, तो episodes अपने-आप पहचान लिए जाते हैं, ऐसा लगता है। folder name "सही" न होने पर बस पहला step automatic नहीं होता, और Tiny Media Manager से bulk में NFO files बनाकर शायद इसे bypass भी किया जा सकता है
    • मुझे समझ नहीं आता कि Plex की monetization बेतुकी क्यों है। open source की तुलना में premium freemium model कम आदर्श जरूर है, लेकिन 4 साल पहले मैंने खुशी से Plex Pass lifetime subscription खरीदा था और अब तक बिल्कुल पछतावा नहीं हुआ
  • अच्छा लग रहा है। दिलचस्प है कि media server projects खासकर C# को पसंद करते दिखते हैं। सोचता हूं कि इसके पीछे कोई technical वजह है, या यह बड़े projects द्वारा standard set कर देने का नतीजा ज्यादा है

    • संबंधित software में से ज्यादातर, खासकर *arr family, भी .NET में लिखे गए हैं। यह ऐसी platform है जिसमें developer experience की बलि दिए बिना performance ठीक-ठाक रहती है
    • C# web server side पर चमकता है, इसलिए अजीब नहीं है। हालांकि निजी तौर पर मुझे यह धीरे-धीरे कम पसंद आने लगा है
      Kyoo भी कुछ components में Python और Go इस्तेमाल करता है, और frontend के लिए TypeScript इस्तेमाल करता है
    • यह project कई भाषाओं में लिखा हुआ लगता है। C#, Go, Python दिखते हैं, और frontend code भी हो सकता है, लेकिन उस तरफ मुझे allergy है
  • Postgres और RabbitMQ दोनों इस्तेमाल करना कुछ ज्यादा लगता है। operational burden कम करने के लिए अगर सब कुछ Postgres पर लाने वाला PR आए तो क्या उसे स्वीकार करेंगे, यह जानना चाहूंगा
    desktop पर लौटकर देखना पड़ेगा कि media server में RabbitMQ ठीक-ठीक क्या करता है

    • RabbitMQ services के बीच communication के लिए इस्तेमाल होता है। अभी-अभी जोड़ा है, लेकिन आगे client के साथ websocket communication, नए items बनाने और rescan requests के लिए job queue, external services के साथ watchlist sync, और Kubernetes deployment में कई replicas के बीच sync के लिए इस्तेमाल करने की योजना है
      हालांकि Kubernetes वाला sync अभी और काम मांगता है
    • RabbitMQ शानदार है। जब program का कोई हिस्सा दूसरे हिस्सों की तुलना में स्वाभाविक रूप से धीमा हो, तब यह खासकर उपयोगी रहा
      यह बहुत मजबूत और proven queue system देता है, फिर भी इसे चलाने का burden छोटा है। इससे structure simple रखा जा सकता है
  • दिलचस्प project है। हालांकि "transcoder का इंतजार किए बिना आसानी से seek करना" वाला हिस्सा समझना चाहूंगा
    container और codec के हिसाब से यह हमेशा समस्या रही है। इसे कैसे हल किया गया, और क्या libav इस्तेमाल नहीं कर रहे हैं, यह जानना चाहूंगा

    • छोटे-छोटे video segments के लिए ffmpeg चलाते हैं, और अगर current transcoding position से बहुत दूर seek किया जाए तो नया ffmpeg process बनाते हैं
      मुश्किल हिस्सा यह है कि वे segments बिना रुकावट या समस्या के देखे जा सकें, और audio या video segments repeat न हों यह सुनिश्चित किया जाए। अगर पर्याप्त रुचि हो, तो मैं इसे विस्तार से समझाने वाला blog post लिख सकता हूं
  • यह अफसोस की बात है कि music handle नहीं करता। Plex इस्तेमाल करने की मुख्य वजह मेरी music library management है, और Plex में भी music secondary focus जैसा लगता है, फिर भी यह पर्याप्त रूप से usable है

  • कुछ दिन पहले n100 पर Jellyfin और tailscale सेट किया था
    लोकल में तो ठीक चल रहा था, लेकिन जब धरती के दूसरे छोर पर मौजूद परिवार के साथ tailscale के जरिए शेयर किया, तो कुछ गड़बड़ हो गई। अपलोड स्पीड काफी तेज होने के बावजूद stream शुरू होने में करीब 1 मिनट लग रहा था, शायद इसका latency से कोई संबंध हो। इसे एक बार आजमाने वाला हूं

    • मुझे भी ऐसा ही issue था। WireGuard के ऊपर reverse proxy के पीछे Jellyfin रखा था, और जब latency ज्यादा होती थी, जैसे दूसरे महाद्वीप से आने वाले visitors के लिए, तो शुरुआत में transfer speed ठीक-ठाक spike करती थी लेकिन कुछ ही सेकंड में इतनी धीमी हो जाती थी कि इस्तेमाल लायक नहीं रहती थी। समस्या को packet congestion से जुड़ा साबित करने में काफी समय लगा
      Jellyfin और reverse proxy server पर Linux का default congestion control (net.ipv4.tcp_congestion_control) bbr में बदलकर देखने की सलाह दूंगा। मुझे details अच्छी तरह नहीं पता और side effects भी हो सकते हैं [1], और संभव है कि बेहतर congestion control algorithms भी हों, लेकिन मेरे मामले में इससे समस्या पूरी तरह हल हो गई। इससे पहले शांत और optimal network conditions में भी connection line speed के 10% से कम, कभी-कभी 1% तक अटक जाता था
      साथ ही Caddy default रूप से HTTP/3 enable करता है, इसलिए मैंने उसे HTTP/2 पर force किया। बाद में bbr के और नए versions भी देखना चाहिए लगता है
      [1] https://news.ycombinator.com/item?id=37408406
  • सचमुच अच्छा लग रहा है। जानना चाहूंगा कि क्या TV पर cast किया जा सकता है। यही एकमात्र वजह है जिससे मैं Plex से बंधा हुआ हूं, वरना Plex मुझे पसंद नहीं है

    • अभी नहीं। यह काफी महत्वपूर्ण feature है, इसलिए इसे आगे 6 महीनों के भीतर देने की योजना है, लेकिन उससे पहले ज्यादातर client features को पहले पूरा करना चाहता हूं
    • Jellyfin की casting पहले काफी खराब थी, लेकिन आजकल काफी बेहतर हो गई है। याद भी नहीं कि आखिरी बार कब इससे परेशानी हुई थी
    • Mac browser में खोलकर AirPlay से Apple TV पर भेज सकते हैं। Windows पर भी cast वाली चीजों से कुछ ऐसा ही संभव है
  • Plex जिस दिशा में जा रहा है, उसे देखते हुए और विकल्प मिलना अच्छा है। अच्छा होगा अगर SONARR/RADARR से सीधे जुड़ने वाले hooks बनाए जाएं, ताकि calendar item पर क्लिक करने से सीधे player पर जाया जा सके
    कानूनी मुद्दों की वजह से हो सकता है वे इसे खुद बनाने से कतराएं, लेकिन self-hosted media और pirated content management features को एक interface में मिलाना सुविधाजनक लगेगा

  • अच्छा लग रहा है। demo page पर कुछ films पर क्लिक किया और random browse करके देखा, सब कुछ perfect काम कर रहा था
    scalability को लेकर जिज्ञासा है। एक server कितने users संभाल सकता है, किस तरह का server चाहिए, यह जानना चाहूंगा। demo page किस पर चल रहा है, और users कितने बढ़ने पर overload होगा, यह भी जानना चाहता हूं

    • demo README के docker-compose को Oracle VPS Always Free tier पर चलाने वाला setup है
      server benchmark कभी नहीं किया, लेकिन limiting factor लगभग निश्चित रूप से machine की encoding speed होगी। अगर सभी clients को अलग-अलग h265 8K films एक साथ transcode करनी हों, तो उतने ही users के direct playback की तुलना में पूरी तरह अलग स्तर की GPU/CPU performance चाहिए होगी