- 맥의 포스터치/터치바/시스템 미디어 컨트롤등과 잘 연동되는 Swift 오픈소스 다기능 미디어 플레이어
- mpv 엔진 기반으로 대부분의 미디어를 재생 가능하며 PIP, 다크모드, 온라인 자막등의 기능을 지원
- 1.4.0 부터 JavaScript 기반 플러그인 시스템을 추가하여, 몇줄의 코드만으로 재생 제어부터 커스텀 UI까지 자유롭게 사용자 정의 가능
- 플러그인에서 접근 가능한 기능들
- Core: 재생 제어, 창 프레임, 자막 트랙 상태 확인 및 설정
- Playlist: 재생 목록 제어 및 사용자 지정 메뉴 추가
- Subtitle: 사용자 정의 자막 다운로더 등록, UI 통합 지원
- Menu: 플러그인 메뉴에 단축키 포함한 항목 추가
- Overlay: 웹뷰 기반의 맞춤 콘텐츠를 영상 위에 표시
- Sidebar View: 사이드바에 웹뷰 기반 탭 추가
- Standalone Window: 복잡한 UI를 위한 독립 창 제공
- Global Controller: 여러개의 플레이어 인스턴스 생성 및 제어
- File: 사용자 파일 시스템 접근, 샌드박스 임시 파일·데이터 처리
- Preferences: 설정 저장 및 환경설정 패널에 전용 페이지 추가
- Utils: 시스템 대화상자 표시, 외부 실행 파일 실행
- Console: 디버깅 로그 출력, IINA 로그 뷰어에서 확인
- MPV: mpv API 속성 및 훅 활용, 고급 재생 제어 가능
- Event: IINA 및 mpv 이벤트 리스너 등록/해제
- HTTP: HTTP 및 XMLRPC 요청 실행
- 플러그인 예제
// 비디오 상단에 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(); });