7 points par xguru 2025-09-21 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Lecteur multimédia open source polyvalent en Swift, bien intégré avec Force Touch / Touch Bar / les contrôles multimédias du système sur Mac
  • Basé sur le moteur mpv, il peut lire la plupart des médias et prend en charge des fonctions comme PIP, le mode sombre et les sous-titres en ligne
  • À partir de la version 1.4.0, ajout d’un système de plugins basé sur JavaScript, permettant une personnalisation libre allant du contrôle de lecture à une UI sur mesure avec quelques lignes de code
  • Fonctions accessibles depuis les plugins
    • Core : contrôle de lecture, cadre de fenêtre, vérification et réglage de l’état des pistes de sous-titres
    • Playlist : contrôle de la liste de lecture et ajout de menus personnalisés
    • Subtitle : enregistrement d’un téléchargeur de sous-titres personnalisé, prise en charge de l’intégration UI
    • Menu : ajout d’éléments avec raccourcis clavier dans le menu du plugin
    • Overlay : affichage de contenu personnalisé basé sur une webview au-dessus de la vidéo
    • Sidebar View : ajout d’onglets basés sur une webview dans la barre latérale
    • Standalone Window : fourniture d’une fenêtre indépendante pour des UI complexes
    • Global Controller : création et contrôle de plusieurs instances du lecteur
    • File : accès au système de fichiers utilisateur, traitement de fichiers et données temporaires du sandbox
    • Preferences : enregistrement des réglages et ajout d’une page dédiée dans le panneau des préférences
    • Utils : affichage de boîtes de dialogue système, exécution de binaires externes
    • Console : sortie de logs de débogage, consultables dans la visionneuse de logs d’IINA
    • MPV : utilisation des propriétés et hooks de l’API mpv pour un contrôle avancé de la lecture
    • Event : enregistrement/suppression de listeners d’événements IINA et mpv
    • HTTP : exécution de requêtes HTTP et XMLRPC
  • Exemples de plugins
    // 비디오 상단에 48폰트 크기로 제목 표시하기  
    const { core, event, overlay } = iina;  
    event.on("iina.file-loaded", () => {  
      overlay.simpleMode();  
      overlay.setContent(`<p>${core.status.title}</p>`);  
      overlay.setStyle(`p { font-size: 48px; }`);  
      overlay.show();  
    })  
    
    // 비디오가 멈추면 윈도우를 최소화 하고, 원복되면 다시 시작   
    const { core, event } = iina;  
    event.on("mpv.pause.changed", () => {  
      core.window.miniaturized = core.status.paused;  
    });  
    event.on("iina.window-deminiaturized", () => {  
      core.resume();  
    });  
    

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.