4 poin oleh GN⁺ 2024-04-07 | 1 komentar | Bagikan ke WhatsApp
  • Kyoo adalah server media self-hosted yang berfokus pada konten video seperti film, serial, dan anime, serta menjadi alternatif untuk Jellyfin atau Plex
  • Kyoo bertujuan untuk berjalan tanpa memaksakan struktur folder atau pengeditan metadata manual; jika media tidak terpindai dengan benar karena nama file yang aneh, itu dianggap sebagai bug
  • Fiturnya tidak diperluas lewat sistem plugin, melainkan disediakan sebagai fitur bawaan, termasuk dynamic transcoding, thumbnail pratinjau, deteksi intro/kredit, dan dukungan subtitle tingkat lanjut
  • Saat ini klien mendukung Web; Android belum tersedia di v5, dan dukungan iOS serta tvOS saat ini tidak direncanakan karena pembelian perangkat keras dan biaya developer tahunan sekitar $100
  • Administrator server dapat memakai file di direktori unduhan tanpa perlu merapikannya secara terpisah, dan Kyoo mempersempit cakupannya pada streaming video, bukan musik, e-book, atau game

Masalah yang ingin diselesaikan Kyoo

  • Kyoo adalah server media self-hosted yang dikhususkan untuk konten video
    • Konten sasarannya adalah Movies, Series, Anime
    • Diposisikan sebagai alternatif untuk Jellyfin atau Plex
  • Bertujuan menurunkan beban pemeliharaan
    • Tidak membutuhkan struktur folder tertentu
    • Tidak membutuhkan pengeditan metadata manual
    • Media harus terpindai dengan benar meskipun nama filenya aneh; jika gagal, itu diperlakukan sebagai bug
  • Tidak menyediakan sistem plugin
    • Arah pengembangannya adalah membuat fitur sebisa mungkin menjadi bawaan

Fitur utama

  • Dynamic Transcoding

    • Dapat mentranskode media ke kualitas yang diinginkan
    • Perubahan kualitas saat pemutaran dimungkinkan melalui perpindahan kualitas otomatis
    • Dapat langsung melakukan seek tanpa menunggu transcoder
  • Video Preview Thumbnails

    • Saat mengarahkan mouse ke progress bar video, pratinjau video dapat dilihat
  • Intro/Credit detection

    • Mendeteksi intro dan kredit secara otomatis dengan audio fingerprinting
    • Pencocokan judul chapter juga dapat digunakan
  • Enhanced Subtitle Support

    • Mendukung subtitle PGS/VODSUB dan SSA/ASS
    • Menggunakan font yang disertakan dalam video jika memungkinkan
  • Anime Name Parsing

    • Dapat mencocokkan nama file anime yang kompleks seperti [Some-Stuffs] Jojo's Bizarre Adventure Stone Ocean 24 (1920x1080 Blu-Ray Opus) [2750810F].mkv
  • Helm Chart

    • Tersedia Helm chart resmi untuk deployment ke cluster Kubernetes
    • Dukungan multi-replica sedang dikerjakan
  • OIDC Connection

    • Dapat login melalui layanan kompatibel OIDC seperti Google, Discord, dan Authelia

Fitur yang belum diimplementasikan ulang di v5

  • Watch List Scrubbing Support

    • Fitur untuk menyinkronkan watch list secara otomatis ke layanan yang terhubung belum diimplementasikan ulang di v5
    • Targetnya adalah SIMKL dan layanan lain di masa mendatang
  • Download and Offline Support

    • Dukungan download untuk menonton tanpa internet dan mode offline juga belum diimplementasikan ulang di v5
    • Diperkenalkan sebagai fitur yang menyinkronkan progres ketika perangkat kembali online

Klien dan platform

  • Klien yang saat ini didukung adalah Web
  • Klien Android belum tersedia di v5 dan berstatus “soon”
  • Platform tambahan sedang dipertimbangkan
  • Frontend dibuat dengan React-Native dan Expo
  • Dukungan perangkat Apple saat ini tidak direncanakan
    • Targetnya adalah iOS dan tvOS
    • Alasannya adalah pembelian perangkat keras dan biaya developer tahunan sekitar $100

Perbedaan dengan Jellyfin/Plex

  • Jellyfin dan Plex dijelaskan secara teknis sebagai bergantung pada SQLite dan menempatkan semuanya dalam satu container
  • Kyoo mengambil pendekatan menggunakan container tambahan bila diperlukan
    • transcoder diberikan sebagai contoh
  • Filosofi operasionalnya adalah “sekali setup lalu lupakan”
    • Tidak meminta perubahan nama file secara manual
    • Tidak mensyaratkan struktur folder tertentu
    • Bertujuan menggunakan file di direktori unduhan apa adanya
  • Cakupannya dibatasi pada streaming film, acara TV, dan anime
    • Tidak mencakup musik, e-book, atau game

Materi untuk memulai dan integrasi

  • API Documentation: Dokumentasi API untuk mengintegrasikan Kyoo dengan layanan lain
  • Join the discord: Discord untuk pertanyaan, diskusi pengembangan, permintaan fitur, dan berbagi bug
  • weblate: Dapat menambahkan terjemahan untuk bahasa yang belum didukung Kyoo
  • kyoo.zoriya.dev: Menyediakan demo live berisi film bebas hak cipta

1 komentar

 
GN⁺ 2024-04-07
Komentar Hacker News
  • Demonya cantik dan dibuat dengan baik. Saya pengguna Plex yang puas—memakai Plexamp untuk audio dan aplikasi Plex untuk Apple TV untuk video—jadi tidak berniat pindah, tetapi menurut saya alasan bahwa proyek ini berawal dari proyek sandbox untuk mempelajari teknologi yang diminati lalu makin membesar adalah motivasi yang sangat bagus untuk membuat sesuatu

    • Jika juga mendengarkan audiobook, Bookcamp juga layak dicoba. Mungkin bisa juga dengan Plexamp, tetapi Bookcamp lebih terasa seperti Audible
    • Penasaran bagaimana memakai Plexamp. Apakah caranya mengunduh album lalu melakukan streaming dari sana dan memakainya sebagai alternatif mirip Spotify?
    • Plexamp adalah satu-satunya alasan yang membuat saya tetap di Plex
      Saya juga sudah menyiapkan Jellyfin secara paralel untuk berjaga-jaga kalau suatu saat Plex memasuki tahap enshittification, tetapi keanggotaan seumur hidup yang saya beli pada 2012 sejauh ini sudah sangat sepadan
  • Saya sempat mencoba pindah dari Plex ke Jellyfin, tetapi keterbatasan terbesar Jellyfin adalah tampaknya tidak terlalu peduli pada pengelolaan pustaka dan membuat asumsi yang terlalu kuat tentang struktur file
    Di wikinya ada bagian tersendiri yang hanya menjelaskan cara memberi nama file dengan benar, sesuatu yang tidak perlu dipikirkan di Plex. Saya penasaran apakah Kyoo memakai pendekatan serupa, atau lebih ramah pengguna. Cara monetisasi Plex memang konyol, tetapi Jellyfin masih terasa belum siap untuk dipakai serius

    • Menurut saya bagian itu memang benar-benar aneh. Tujuan Kyoo adalah merapikan pustaka untuk Anda, dan meskipun folder unduhan langsung dipakai sebagai folder pustaka, semuanya seharusnya langsung berjalan tanpa perlu mengganti nama
      Saat ini masih ada kasus pengecualian, terutama item seperti video tambahan yang kadang tidak tertangani dengan baik. Meski begitu, nama file anime aneh seperti "[SomeGroup] Jojo's bizzare adventure - golden wings 12.mkv" pun bisa diproses
    • Saya penasaran mengapa server media harus tidak terlalu kaku soal struktur. Saya suka bahwa di Jellyfin cukup menekan beberapa tombol lalu semuanya ditangani otomatis, jadi nyaman karena tidak perlu memikirkan struktur sendiri
    • Saya memakai Jellyfin, tetapi pengelolaan file saya lakukan dengan TMM(tiny media manager). Jellyfin cenderung menerima dengan baik keluaran yang dibuat TMM
      Sejujurnya saya juga ingin melihat Jellyfin versi ringan yang sama sekali tidak punya kode manajemen media dan hanya melakukan streaming
    • Tentu ini tergantung lingkungan masing-masing, tetapi Jellyfin mendukung penandaan manual dengan cukup baik untuk dipakai. Tanpa perlu merusak struktur folder yang sudah dibuat nyaman dilihat di file browser atau mengganti nama file, cukup tekan "Identify" pada file atau folder lalu cari di database yang diaktifkan berdasarkan judul atau nomor IMDB
      Setelah satu kali menentukan folder itu acara TV apa, episode-episodenya tampaknya dikenali otomatis. Hanya langkah awalnya saja yang tidak otomatis ketika nama folder tidak "benar", dan kemungkinan bisa diakali dengan membuat file NFO secara massal memakai Tiny Media Manager
    • Saya penasaran mengapa monetisasi Plex dianggap konyol. Dibanding open source, model freemium premium memang kurang ideal, tetapi saya dengan senang hati membeli langganan seumur hidup Plex Pass 4 tahun lalu dan sampai sekarang sama sekali tidak menyesal
  • Kelihatannya bagus. Menarik bahwa proyek-proyek server media tampaknya cenderung sangat menyukai C#. Saya penasaran apakah ada alasan teknis, atau lebih karena proyek-proyek besar sudah membentuk standarnya

    • Sebagian besar perangkat lunak terkait, terutama keluarga *arr, juga ditulis dengan .NET. Ini platform dengan performa yang lumayan tanpa harus mengorbankan pengalaman developer
    • C# memang bersinar di sisi web server, jadi tidak aneh. Hanya saja secara pribadi saya makin kurang menyukainya
      Kyoo juga memakai Python dan Go untuk sebagian komponennya, serta TypeScript untuk frontend
    • Proyek ini tampaknya ditulis dalam beberapa bahasa. Terlihat C#, Go, Python, dan mungkin juga ada kode frontend, tetapi saya alergi dengan bagian itu
  • Memakai Postgres dan RabbitMQ sekaligus terasa berlebihan. Saya penasaran apakah mereka akan menerima PR untuk menyeragamkannya ke Postgres saja demi mengurangi beban operasional
    Nanti saat kembali ke desktop, saya perlu melihat apa tepatnya fungsi RabbitMQ di server media ini

    • RabbitMQ digunakan untuk komunikasi antarlayanan. Baru saja diperkenalkan, tetapi ke depannya akan dipakai untuk komunikasi websocket dengan klien, antrean pekerjaan untuk pembuatan item baru dan permintaan pemindaian ulang, sinkronisasi daftar tontonan dengan layanan eksternal, serta sinkronisasi antar-replika saat deployment Kubernetes
      Namun sinkronisasi sisi Kubernetes masih perlu dikerjakan lebih lanjut
    • RabbitMQ itu hebat. Sangat berguna ketika sebagian program secara intrinsik lebih lambat daripada bagian lain
      Ia menyediakan sistem antrean yang sangat kokoh dan teruji, tetapi beban menjalankannya kecil. Berkat itu, struktur bisa tetap sederhana
  • Proyek yang menarik. Namun saya penasaran dengan bagian "menjelajah dengan mudah tanpa menunggu transcoder"
    Bergantung pada container dan codec, ini selalu menjadi masalah. Saya penasaran bagaimana mereka menyelesaikannya, dan apakah tidak memakai libav

    • Menjalankan ffmpeg untuk setiap segmen video kecil, lalu jika melakukan seek terlalu jauh dari posisi transcoding saat ini, membuat proses ffmpeg baru
      Bagian sulitnya adalah membuat segmen-segmen itu bisa ditonton tanpa jeda atau masalah, dan memastikan segmen audio atau video tidak berulang. Jika ada cukup minat, saya mungkin bisa menulis posting blog yang menjelaskannya secara detail
  • Sayang sekali tidak menangani musik. Alasan utama saya memakai Plex adalah pengelolaan pustaka musik, dan meski di Plex pun musik terasa seperti fokus sekunder, tetap saja cukup layak dipakai

  • Beberapa hari lalu saya menyiapkan Jellyfin dan tailscale di n100
    Secara lokal berjalan baik, tetapi saat dibagikan lewat tailscale ke keluarga di sisi lain bumi, ada yang bermasalah. Meski kecepatan unggah cukup tinggi, butuh sekitar 1 menit sampai stream mulai berjalan, mungkin ada kaitannya dengan latensi. Saya berencana mencoba ini

    • Saya pernah mengalami masalah serupa. Saya menaruh Jellyfin di belakang reverse proxy di atas WireGuard, dan untuk pengunjung dengan latensi tinggi seperti lintas benua, awalnya throughput sempat melonjak cukup bagus lalu dalam beberapa detik menjadi sangat lambat sampai tidak bisa dipakai. Butuh waktu lama untuk memastikan masalahnya terkait kemacetan paket
      Saya sarankan mencoba mengganti congestion control bawaan Linux (net.ipv4.tcp_congestion_control) di server Jellyfin dan reverse proxy menjadi bbr. Saya tidak tahu detailnya dan mungkin ada efek samping [1], serta mungkin ada algoritma congestion control yang lebih baik, tetapi dalam kasus saya ini menyelesaikan masalah sepenuhnya. Sebelumnya, bahkan dalam kondisi jaringan yang tenang dan optimal, koneksi macet di bawah 10% dari kecepatan jalur, kadang sampai 1%
      Selain itu, karena Caddy mengaktifkan HTTP/3 secara default, saya memaksanya ke HTTP/2. Sepertinya nanti saya juga perlu melihat versi bbr yang lebih baru
      [1] https://news.ycombinator.com/item?id=37408406
  • Kelihatannya sangat bagus. Saya penasaran apakah bisa casting ke TV. Ini satu-satunya alasan saya masih terikat pada Plex, selain itu saya tidak suka Plex

    • Untuk saat ini belum bisa. Ini fitur yang cukup penting, jadi kami berencana menyediakannya dalam 6 bulan ke depan, tetapi sebelum itu kami ingin menyelesaikan sebagian besar fitur klien terlebih dahulu
    • Casting di Jellyfin dulu cukup buruk, tetapi sekarang jauh lebih baik. Saya bahkan tidak ingat kapan terakhir kali merasa terganggu olehnya
    • Bisa dibuka di browser Mac lalu dikirim ke Apple TV lewat AirPlay. Di Windows juga bisa dengan cara serupa lewat fitur cast
  • Melihat arah yang ditempuh Plex, menyenangkan ada lebih banyak pilihan. Akan bagus kalau ada hook yang langsung terhubung ke SONARR/RADARR, sehingga saat mengklik item kalender bisa langsung masuk ke player
    Mungkin mereka enggan membuatnya langsung karena masalah hukum, tetapi menggabungkan media self-hosted dan fitur pengelolaan bajakan dalam satu antarmuka sepertinya praktis

  • Kelihatannya bagus. Saya mencoba mengeklik beberapa film di halaman demo dan menjelajah secara acak, semuanya berjalan sempurna
    Saya penasaran soal skalabilitasnya. Saya ingin tahu berapa banyak pengguna yang bisa ditangani satu server, dan jenis server seperti apa yang dibutuhkan. Halaman demo berjalan di atas apa, dan kira-kira pada jumlah pengguna berapa akan mulai kewalahan

    • Demo menjalankan docker-compose dari README di tier Oracle VPS Always Free
      Saya belum pernah melakukan benchmark server, tetapi faktor pembatasnya hampir pasti adalah kecepatan encoding mesin. Jika semua klien harus mentranskode film h265 8K yang berbeda secara bersamaan, kebutuhan performa GPU/CPU-nya akan benar-benar berbeda dibanding jumlah pengguna yang sama melakukan direct play