Skip to content

Releases: gaeco0/OPlayer

OPlayer v0.1.7 (stable)

Choose a tag to compare

@github-actions github-actions released this 26 Oct 06:57

0.1.6 이후의 변경을 모은 정식 릴리스입니다. 자동 업데이트, 파일·재생목록 관리, Google 동기화와 리소스 확장앱을 추가하고 이어보기·자막·폴더블 회전·다운로드를 보완했습니다. 아래는 최종 동작 기준이며 개발 중 nightly별 기록은 다음 절부터 보존합니다.

자동 업데이트·플랫폼

  • 설정 → 앱 업데이트에서 자동 확인·알림, 수동 확인, 다운로드·설치를 제공합니다. 앱 시작·복귀 시 최대 6시간마다 확인하고 설치는 사용자가 선택합니다. 플랫폼·Android ABI·mobile/TV에 맞는 파일을 고르고 크기·SHA256을 검사합니다.
  • stable·beta·nightly 채널을 선택·저장합니다. 업데이트 확인 기본값은 stable이며 기존에 저장한 선택은 유지합니다. 이전 버전을 새 업데이트로 안내하지 않고 같은 기본 버전은 nightly → beta → stable 순서로 판단합니다. 별도 배포 지시가 없는 일반 빌드는 계속 nightly이며 자동 승격하지 않습니다. 명시적인 정식 배포 지시에는 같은 버전의 공개 nightly 또는 beta에서 stable로 승격할 수 있습니다.
  • Windows는 설치 준비·압축 검사·정상 종료·파일 교체·재시작과 실패 복구를 처리합니다. 설치기가 시작되지 않거나 종료 대기에서 멈추던 문제를 수정하고 단계별 진행·실패 이유를 표시합니다. 중복 설치와 같은 폴더의 다른 실행 창을 검사합니다. Android는 기존 서명을 확인한 뒤 OS 설치 화면을 엽니다. Linux·macOS는 검증한 압축 파일을 열어 직접 교체합니다.
  • Windows·Linux **ARM64(aarch64)**를 추가했습니다. Windows·Linux x64/ARM64, macOS ARM64, Android·Android TV 각 3개 ABI를 제공합니다. 새 nightly 전체 게시 성공 후 최신 3개만 보관하며 stable·beta와 소스 이력은 유지합니다.

재생·자막·회전

  • 저장된 이어보기 위치를 파일을 여는 시점부터 전달합니다. 연결·동기화 준비 중의 0초 상태가 기존 기록을 덮어쓰거나 간헐적으로 처음부터 시작하던 문제를 수정했습니다. 확인 모드에서는 선택 전까지 일시정지하고 파일 전환 후 늦은 응답을 무시합니다. 백그라운드 재생 위치도 갱신합니다. 10초 이하·95% 이상 기록의 기존 처음부터 재생 정책은 유지합니다.
  • 재생 볼륨을 OS 출력 볼륨으로 통일했습니다. 시작·종료 시 현재 볼륨을 이어받고 휠·방향키·제스처는 OS 볼륨을 변경합니다. 하드웨어 키·시스템 슬라이더 변경을 반영하며 API 실패는 표시합니다.
  • Windows·Android의 재생 엔진을 자막 디코더를 포함한 LGPL 빌드로 교체했습니다. 텍스트는 Flutter 자막 레이어, PGS·VobSub·DVB 등의 이미지 자막은 엔진에서 표시합니다. 트랙 선택·끄기·크기·위치·파일 전환을 반영하고 중복 표시를 막습니다. 엔진 출처·라이선스를 앱과 배포물에 포함하며 배포 용량은 증가합니다.
  • Android SMI·SAMI는 OS 문자셋 기능으로 UTF-8로 정규화한 뒤 내장 FFmpeg로 SRT를 만들어 적용합니다. iconv가 없는 엔진에서 CP949 한글이 깨지거나 자막 열기에 실패하던 문제에 대응했습니다. UTF-8/UTF-16 BOM·CP949 확장 한글을 처리하고 변환 결과에 UTF-8 설정을 적용합니다. 데스크톱은 원본 로딩 실패 시 FFmpeg 변환을 시도하며 별도 FFmpeg 설치가 필요합니다. 원본 보존·임시 파일 정리·이전 선택 복구·오류 표시를 제공합니다.
  • Windows 하드웨어 디코딩을 ANGLE과 호환되는 **auto-copy**로 변경해 하단 초록색 띠에 대응했습니다. 영상 컨트롤러 생성·파일 열기에 디코더 설정을 일관되게 적용합니다. GPU 디코딩과 출력은 유지하며 프레임 복사 비용이 추가될 수 있습니다.
  • Android 폴더블 펼친 화면의 가로·세로 고정 회전 호환성을 보완했습니다. 모바일의 제조사 호환 정책·API 36 선언을 수정하고 OS 방향을 직접 요청합니다. 회전 버튼의 진단 팝업은 제거했으며 자동 회전·TV 정책은 유지합니다.
  • OpenSubtitles 확장앱 1.0.4에서 *.opensubtitles.org·*.opensubtitles.com 다운로드를 허용합니다. HTTPS로 전환하면서 URL 토큰을 보존하고 인증 정보는 지정 API 서버에만 보냅니다.

파일·재생목록·다운로드

  • 파일 목록에서 오른쪽으로 밀어 본 상태/안 본 상태를 전환합니다. 안 본 상태로 바꾸면 이어보기 위치를 초기화합니다. 선택모드로 현재 폴더의 파일을 골라 재생목록에 추가하거나 확인 후 삭제할 수 있습니다.
  • 재생목록 생성·이름변경·삭제, 항목 순서 변경·연속 재생과 선택 항목 제거·다른/새 재생목록으로 복사를 제공합니다. 목록에서 제거해도 원본은 삭제하지 않습니다.
  • 파일별 메뉴에 이름변경·삭제를 추가했습니다. 로컬·WebDAV·FTP·SFTP·SMB 파일의 같은 폴더 내 이름변경을 지원하고 충돌을 거부합니다. 잠금·시청 기록·재생목록 참조를 새 이름으로 옮기며 Windows 경로 별칭에서도 중첩 잠금을 유지합니다. 폴더·심볼릭 링크 이름변경은 제외하고 원격 작업에는 서버 권한과 확장앱의 기능 지원이 필요합니다.
  • 리소스별 마지막으로 실제 재생한 파일과 상위 탐색 경로를 파란색으로 표시합니다. 목록·격자·현재 경로, 다음 파일 재생·재시작·이름변경·삭제를 반영하며 리소스마다 독립 저장합니다. 잠긴 항목은 숨기고 이 표시 기록은 동기화·진단에 넣지 않습니다.
  • 브라우저·원격 파일 다운로드 전에 인식한 파일명을 미리 채운 입력창을 열어 수정할 수 있습니다. 동일 파일은 덮어쓰기·이름변경·취소를 확인합니다. 로컬은 임시 저장 후 확정하고 실패 시 기존 파일을 보존하며, 원격 덮어쓰기는 확인한 대상에만 적용합니다.
  • 쿠키·세션 만료로 실패한 HLS를 동일 URL·저장 파일명·출력 옵션·저장 위치로 다시 요청하면 실패/일시정지 작업의 헤더·쿠키·키·재생목록을 갱신합니다. 조각 URL·순서·범위·암호화 정보·영상/음성 구성이 일치하는 받은 조각만 재사용하고 변경된 구성은 다시 받습니다. 작업과 캐시가 남아 있으면 재시작 후에도 이어받습니다. 기존 실패 항목을 삭제하지 않고 브라우저에서 페이지 새로고침·영상 재생 후 같은 조건으로 다시 다운로드하세요. 검증 정보가 없는 구버전 캐시는 처음 한 번 다시 받습니다.

Google 동기화·확장앱

  • 설정 → Google 동기화에서 앱 전용 Drive 저장소에 재생목록·최근 재생·이어보기 위치를 자동/수동 동기화합니다. Android·Android TV·Windows·Linux·macOS에서 지원하며 Drive 확장앱 설치는 필요하지 않습니다. 같은 동기화 이름으로 기기별 리소스를 연결하고 변경·삭제를 병합합니다. 같은 재생목록의 동시 수정은 최신본을 사용하며 재생 전 동기화가 지연되면 최대 5초 후 로컬 기록으로 계속합니다.
  • 파일 내용·비밀번호·브라우저 세션·잠금 정보는 동기화하지 않습니다. 연결되지 않은 리소스 기록은 보관하며 상태·오류·연결 해제를 제공합니다. Apple·삼성 계정과 iOS 동기화는 이번에 제공하지 않습니다.
  • Actions Secret의 플랫폼별 Google OAuth 등록값을 빌드에 적용하고 확장앱에 공개 등록값을 읽는 SDK를 제공합니다. 앱 데이터 동기화와 Drive 파일 접근의 권한·사용자 토큰은 분리하며 JS에 사용자 토큰이나 배포 Client Secret을 노출하지 않습니다. 기존 수동 등록값은 유지합니다.
  • Google Drive 확장앱 1.3.0에 현재 폴더 파일명 검색·페이지 처리와 전체 Drive 읽기·쓰기를 추가했습니다. 다운로드 저장·다른 저장소로 이동에서 8MiB 분할 업로드, 서버 수신 위치 조회·재시도·취소·진행률을 제공합니다. 성공 확인 전에 원본을 지우지 않으며 기존 읽기 전용 계정은 권한 승인을 위해 다시 연결해야 합니다.
  • 리소스 확장앱의 선택적 검색 canSearch·search({query,path}), 이름변경·공통 업로드 SDK와 UI를 추가했습니다. 검색 입력·재시도·원래 목록 복원·늦은 요청 무효화를 처리하고 개발 가이드와 예제를 갱신했습니다. 같은 API 규약의 공급자는 JS·저장소 JSON으로 배포합니다.
  • PeerTube·Jellyfin 1.0.0을 공식 저장소에 추가했습니다. PeerTube 공개 영상·선택적 로그인·내 영상·검색·HTTP/HLS 재생, Jellyfin 로그인·라이브러리/폴더·영상/음악 검색·원본 스트림을 제공합니다. HTTPS 서버가 필요하며 PeerTube P2P·비밀번호 영상·2FA와 Jellyfin 트랜스코딩·Live TV·서버 시청 기록 동기화는 제외합니다.
  • 신규 설치 시 자동 설치하는 확장앱은 0개입니다. 공식 저장소에서 필요한 것만 설치하세요. 기존 확장앱·설정·계정·비활성 상태는 보존하며 앱 업데이트가 스크립트를 덮어쓰지 않습니다. 기존 OpenSubtitles·Google Drive는 설정 → 확장앱에서 저장소 새로고침 후 각각 업데이트해야 합니다.

진단·문서·설치 안내

  • 설정 → 정보 → 진단 정보 보내기에서 증상·재현 방법과 앱·OS·화면·네트워크 기능 상태를 미리 보고 GitHub Issues 작성 화면을 엽니다. 자동 수집에는 파일명·경로·방문 URL·헤더·계정·토큰을 넣지 않습니다. 첨부 제외와 긴 본문/실행 실패 시 복사를 지원하며 최종 등록은 사용자가 진행합니다.
  • 홈페이지·개인정보처리방침·이용약관·브랜딩 로고와 Google 등록·동기화·확장앱 개발 문서를 현행화했습니다.
  • 버전은 0.1.7+2, Android ARM64 버전 코드는 2002이며 기존 배포 서명을 유지합니다. GitHub Latest와 stable 채널로 게시합니다. v0.1.6 이하에는 자동 업데이트가 없으므로 배포 파일을 한 번 직접 설치하세요. Windows 초기 nightly .20261023.3·.4의 종료 오류가 남은 경우에도 앱을 모두 닫고 ZIP 전체를 직접 교체해야 합니다.
  • 전체 Flutter 테스트 270개, 실제 Windows 엔진의 이미지 자막 합성·SRT/SMI·한국어·디코더 설정, Android 문자셋 변환·네이티브 컴파일을 확인했습니다. 배포 시 전체 플랫폼 빌드와 파일 검사를 실행합니다. 보고된 GPU의 초록색 띠와 Android 자막·폴더블·실제 클라우드/개인 미디어 서버 동작은 환경별 확인이 필요합니다. macOS Developer ID 서명·공증과 iOS 설치 파일은 제공하지 않습니다.

업데이트 채널: stable


Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64 / ARM64(aarch64): ZIP을 풀고 oplayer.exe 실행
  • Linux x64 / ARM64(aarch64): tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: c57d058
Actions: https://github.com/gaeco0/OPlayer/actions/runs/40281431487

OPlayer v0.1.7-nightly.20261026.3 (nightly)

Choose a tag to compare

Windows 하드웨어 출력과 Android SMI 인코딩을 수정한 nightly입니다. 내부 빌드 번호 +2, Android ARM64 버전 코드 2002, 기존 서명과 업데이트 확인 기본 채널 stable을 유지합니다.

  • Windows 하드웨어 디코딩을 ANGLE 출력과 호환되는 auto-copy로 변경해 업데이트 후 하드웨어 디코딩에서만 나타나는 하단 초록색 띠에 대응했습니다. 디코더 설정을 영상 컨트롤러 생성과 파일 열기에 일관되게 전달해 초기화 시 설정이 덮이는 경로도 수정했습니다. GPU 디코딩·화면 출력은 유지하며 프레임 복사 비용이 추가될 수 있습니다. 보고된 GPU·영상에서의 재확인은 필요합니다.

  • Android SMI·SAMI를 OS 문자셋 기능으로 UTF-8로 정규화하고 내장 FFmpeg로 SRT를 만들어 적용합니다. 재생 엔진의 iconv 누락으로 CP949가 깨지거나 열기 실패로 이어지는 경로를 우회하고, 변환된 UTF-8 자막에 이전 코드페이지 설정이 적용되지 않도록 했습니다. UTF-8/UTF-16 BOM·CP949 확장 한글을 처리하고 원본 보존·임시 입력 정리·변환 중 파일 전환 취소를 유지합니다. Android 실기기 검증은 별도로 필요합니다.

  • 실제 Windows mpv의 디코더 옵션·자막 합성 검사를 포함한 전체 Flutter 테스트 270개와 정적 분석, Android 앱의 Java·Kotlin 컴파일을 통과했습니다. Android 문자셋 변환 코드를 JDK에서 직접 실행해 CP949 확장 한글·UTF-8/UTF-16 BOM·잘못된 바이트의 명시적 실패·원본 보존을 검사하고 이후 Android CI에도 같은 검사를 추가했습니다.

  • Windows·Linux x64/ARM64, macOS ARM64, Android·Android TV 전체 빌드를 제공합니다. 기본 자동 설치 확장앱은 0개이며 게시 성공 후 최신 nightly 3개만 보관합니다.

업데이트 채널: nightly


Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64 / ARM64(aarch64): ZIP을 풀고 oplayer.exe 실행
  • Linux x64 / ARM64(aarch64): tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: e49ec97
Actions: https://github.com/gaeco0/OPlayer/actions/runs/40278158838

OPlayer v0.1.7-nightly.20261026.2 (nightly)

Choose a tag to compare

Windows·Android 자막 표시를 수정한 nightly입니다. 내부 빌드 번호 +2, Android ARM64 버전 코드 2002, 기존 서명과 업데이트 확인 기본 채널 stable을 유지합니다.

  • Windows·Android의 경량 엔진에 빠져 있던 자막 디코더를 포함하도록 LGPL 엔진을 교체했습니다. PGS·VobSub·DVB 등 이미지 자막은 엔진에서 직접 그리고, 텍스트 자막은 Flutter 레이어에서 표시해 중복을 막습니다. 자동·수동 선택, 자막 끄기, 크기·위치 조절과 파일 전환에 반영합니다. Windows x64/ARM64와 Android 모바일/TV에 적용하며 엔진 출처·라이선스를 앱과 배포물에 포함합니다. 자막 디코더 포함으로 배포 파일 크기가 증가합니다.
  • 외부 SMI를 읽지 못해도 선택된 것처럼 보이던 문제를 보완했습니다. 엔진에서 읽지 못하면 FFmpeg로 UTF-8 SRT를 만들어 다시 적용하고, 최종 실패는 화면에 표시하며 이전 선택으로 복구합니다. 원본을 보존하고 UTF-8·UTF-16 BOM·CP949를 처리합니다. Android는 내장 FFmpeg를 사용하며 데스크톱의 변환에는 FFmpeg 설치가 필요합니다. 영상 전환 중 늦게 완료된 결과는 적용하지 않습니다.
  • PeerTube·Jellyfin 리소스 확장앱 1.0.0을 공식 저장소에 추가했습니다. 기존 API 4 앱에서 앱 업데이트 없이 선택 설치할 수 있으며 기본 자동 설치하지 않습니다. PeerTube 공개 영상·선택적 로그인·내 영상·검색·HTTP/HLS 재생, Jellyfin 로그인·라이브러리/폴더·영상/음악 검색·원본 스트림 재생을 제공합니다. HTTPS 서버를 사용하며 Jellyfin 트랜스코딩·Live TV·서버 시청 기록 동기화, PeerTube P2P·비밀번호 보호 영상·2FA 로그인은 지원하지 않습니다.
  • 전체 Flutter 테스트 268개와 정적 분석, Windows 디버그 빌드, Android 엔진 패키지 Java 컴파일을 통과했습니다. 실제 Windows 엔진에서 PGS 합성 픽셀과 SRT·SMI 전환·한국어 출력을 확인했습니다. 이후 Windows x64 배포 빌드에도 같은 검사를 필수로 실행합니다. Android 공식 ABI 라이브러리의 자막 디코더와 16KB 정렬은 확인했으며 Android 실기기와 실제 개인 미디어 서버 검증은 별도로 필요합니다.
  • 쿠키 갱신 후 동일 HLS 조각 이어받기와 기존 이어보기 수정을 포함합니다. Windows·Linux x64/ARM64, macOS ARM64, Android·Android TV 전체 빌드를 제공하며 게시 성공 후 최신 nightly 3개만 보관합니다.

업데이트 채널: nightly


Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64 / ARM64(aarch64): ZIP을 풀고 oplayer.exe 실행
  • Linux x64 / ARM64(aarch64): tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: ef35e89
Actions: https://github.com/gaeco0/OPlayer/actions/runs/40271467143

OPlayer v0.1.7-nightly.20261026.1 (nightly)

Choose a tag to compare

쿠키·세션 만료 후 HLS 다운로드를 이어받도록 개선한 nightly입니다. 내부 빌드 번호 +2, Android ARM64 버전 코드 2002, 기존 서명과 업데이트 확인 기본 채널 stable을 유지합니다.

  • HLS 다운로드가 쿠키·세션 만료로 실패한 뒤 같은 URL·저장 파일명·출력 옵션으로 다시 요청하면 기존 실패/일시정지 작업에 새 헤더·쿠키·키·재생목록을 반영합니다. 조각 URL·순서·바이트 범위·암호화 정보·영상/음성 트랙 구성이 같은 경우 받은 조각을 재사용하며, 구성이 달라지면 조각을 다시 받아 잘못 섞이지 않도록 합니다. 작업과 캐시가 남아 있으면 앱 재시작 후에도 이어받습니다. 이전 버전의 검증 정보 없는 조각은 처음 한 번 다시 받습니다.
  • 빠르게 연속 생성한 다운로드의 작업 ID가 겹치지 않도록 보완했습니다. 쿠키 만료·앱 재시작 후 이어받기, 변경된 조각 재다운로드, 다른 파일명·완료 작업 분리와 연속 생성 검사를 포함해 전체 Flutter 테스트 257개와 변경 파일 정적 분석을 통과했습니다.
  • 사용 방법: 기존 실패/일시정지 작업을 삭제하지 않고, 브라우저 페이지를 새로고침해 영상을 재생한 뒤 같은 URL·저장 파일명·출력 옵션으로 다시 다운로드합니다. 완료한 작업은 새 다운로드와 구분합니다.
  • Windows·Linux x64/ARM64, macOS ARM64, Android·Android TV 전체 빌드를 제공합니다. 게시 성공 후 최신 nightly 3개만 보관하며 기본 자동 설치 확장앱은 0개입니다.

업데이트 채널: nightly


Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64 / ARM64(aarch64): ZIP을 풀고 oplayer.exe 실행
  • Linux x64 / ARM64(aarch64): tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: cb5a087
Actions: https://github.com/gaeco0/OPlayer/actions/runs/40251267950

OPlayer v0.1.6

Choose a tag to compare

@github-actions github-actions released this 23 Oct 03:51

GPU 업스케일·가벼운 프레임 보간, 원격 파일 다운로드와 저장소 변경, 다른 앱에서 파일 열기를 추가했습니다.
WebDAV 업로드 재연결과 전체 사이트 브라우저 확장앱 권한을 보완했습니다.

수정

  • WebDAV PUT의 강제 Connection: close를 제거하고 기본 HTTP 연결 정책을 사용합니다. 연결 재시도 간격을 0.25·0.5초에서 2·4초로 늘리고, 반복 실패 시 각 시도의 경과 시간·전송 스트림 전달량·완료 미확인 상태를 표시합니다. 전달량은 서버에 저장된 용량을 의미하지 않습니다.
  • 다운로드 후 WebDAV 업로드 중 Broken pipe·연결 초기화·완료 응답 유실이 발생하면 새 연결로 최대 3회 PUT을 시도합니다. 서버의 성공 응답 없이 완료 처리하거나 받은 원본을 삭제하지 않습니다. 반복 실패 시 원인과 원본 보관 안내를 표시합니다.
  • 업로드 재시도 시 진행률·속도를 초기화하고 '업로드 다시 시도 중'을 표시합니다. 권한·용량 제한 등 명확한 HTTP 오류와 일시정지·전송 정지 감시의 타임아웃은 자동 재시도하지 않습니다. 대용량 PUT 연결 강제 종료·응답 유실·반복 실패·취소 회귀 테스트를 추가했습니다.

추가

  • 공식 브라우저 확장앱 disable-devtool 차단 1.1.0을 추가했습니다. 모든 웹사이트와 교차 도메인 iframe에 적용되며 별도 라이브러리 요청·전역 API·콘솔 기반 감지를 억제합니다. 콘솔 억제는 확장앱 설정에서 조절합니다. 합쳐진·난독화된 변형에 대한 제한은 확장앱 문서에 안내합니다.

  • 브라우저 확장앱의 sites: ["*"] 전체 사이트 권한을 지원하고 설치 화면에 범위를 표시합니다. hosts·authHosts의 임의 네트워크·인증 권한은 확장하지 않습니다. 이전 호스트에는 이 권한 지원 업데이트가 한 번 필요합니다.

  • Android·Android TV의 다른 파일 탐색기에서 영상·오디오·사진을 열 때 OPlayer를 선택할 수 있도록 파일 열기 등록과 수신 처리를 추가했습니다. 앱이 켜져 있을 때 새로 여는 파일도 처리하고, 앱 잠금 중 수신한 파일은 잠금 해제 후 엽니다. Android 영상·오디오는 콘텐츠 URI로 직접 재생하며 사진만 임시 캐시에 읽습니다(최대 64 MiB).

  • macOS·iOS의 문서 형식·외부 파일 열기를 등록하고, Windows 연결 프로그램 등록에 사진 형식을 추가했습니다. Linux는 앱을 한 번 실행하면 현재 실행 경로로 사용자 계정의 데스크톱 항목을 등록합니다. 사용자의 기본 연결 프로그램은 자동으로 변경하지 않습니다.

  • 다운로드 항목의 '다른 저장소로 이동'을 추가했습니다. 기기에 받은 파일이 남아 있는 실패·일시정지·완료 항목에서 로컬 다운로드 폴더·직접 선택한 폴더·등록한 SMB/FTP/FTPS/SFTP/WebDAV 서버로 변경할 수 있습니다. 원본 URL이 만료되어도 보관된 파일을 재사용하며 전체 저장 위치 설정은 유지합니다.

  • 새 저장소의 잠금을 확인하고 저장이 끝난 뒤 기존 파일을 삭제합니다. 로컬 이동은 임시 파일에 복사 후 확정하며 취소·디스크 오류·업로드 실패 시 원본을 보존합니다. 동일 이름은 번호로 구분하고 이동 중 바이트 진행률과 개별 목적지를 저장합니다. 업로드가 진행 중이면 먼저 일시정지해야 합니다.

  • 등록한 원격 저장소(SMB·FTP/FTPS·SFTP·WebDAV·클라우드 확장앱)의 파일을 기기에 다운로드하는 기능을 추가했습니다. 파일 메뉴와 격자 버튼에서 시작하고 기존 다운로드 목록·진행률·속도·일시정지/재개·Android 알림을 사용합니다.

  • 영상 외 사진·자막·일반 파일도 원래 확장자와 내용 그대로 로컬 다운로드 폴더에 저장합니다. 브라우저의 MP4 변환·원격 업로드 설정은 적용하지 않으며 동일 파일명은 번호를 붙여 구분합니다. 다시 받을 때 인증·임시 URL을 갱신하고 원격 저장소 참조만 저장합니다.

  • 원격 다운로드는 원본 리소스·다운로드 목록·저장 폴더의 잠금을 확인합니다. FTP의 취소 가능한 수동 전송·REST 이어받기와 FTPS 인증서 검증을 추가했습니다.

  • 정식 플레이어 기능으로 고화질 GPU 업스케일을 추가했습니다. 설정·플레이어에서 켜고 끄며 기본값 OFF, 선택을 저장합니다. Lanczos 영상·색상 확대와 실제 GPU 출력 텍스처 크기를 함께 적용합니다.

  • 화면 픽셀 크기·맞춤/채움·회전·줌을 반영하며 전체화면·작은 창·미니플레이어·PiP가 같은 출력 정책을 사용합니다. 추가 확대 출력은 최대 4096변·8,294,400픽셀로 제한하고 창 크기 변경은 묶어서 처리합니다.

  • Android 출력 크기 API를 기존 media_kit_video 2.0.1 로컬 패치로 보완했습니다. 설정한 출력 크기를 영상 정보 변경 시에도 유지하고 동일 크기의 불필요한 Surface 재생성을 건너뜁니다. 새 재생 엔진·AI 모델은 추가하지 않습니다.

  • 플레이어 정식 기능으로 가벼운 프레임 보간을 추가했습니다. 설정의 재생 항목과 플레이어 화면 비율 패널에서 켜고 끄며 기본값은 OFF, 선택은 저장됩니다. 플러그인 설치가 필요하지 않습니다.

  • 실제 화면 주사율을 따라 mpv의 oversample 프레임 혼합과 화면 동기화를 적용하며 모니터 변경 시 갱신합니다. 끄면 기존 재생 옵션을 복원하고 기존 영상 필터·하드웨어 디코딩 설정은 유지합니다. 오디오 전용 재생은 제외합니다.

  • 연속 토글·주사율 변경은 순서대로 적용합니다. 미지원 옵션은 적용 전후 읽기로 감지해 복원하고 재생 중 화면 동기화가 지원되지 않으면 혼합을 해제해 상태를 표시합니다.

검증 및 제한

  • 앱 버전은 0.1.6+2이며 내부 빌드번호와 기존 Android 정식 서명키를 유지합니다. Windows·Android·Android TV·Linux·macOS 빌드와 체크섬을 Actions에서 첨부합니다. iOS 소스 변경은 포함하지만 이번 릴리스에 iOS 설치 파일은 제공하지 않습니다.

  • 전체 사이트용 disable-devtool 차단은 공식 확장앱 저장소에서 선택 설치·업데이트한 뒤 페이지를 새로고침합니다. v0.1.6이 sites: ["*"] 권한을 지원하므로 이후 같은 규약의 확장앱 업데이트에는 APK 재설치가 필요하지 않습니다. 별도로 로드되지 않는 변형까지 모두 차단하는 것은 보장하지 않습니다.

  • 전체 Flutter 테스트 187개와 정적 분석, 확장앱 JS 동작·권한 검사를 통과했습니다. Windows의 실제 최상위 페이지와 외부 도메인 플레이어 iframe에서 차단 확장앱 주입을 확인했습니다. Android·TV 매니페스트 병합 및 Android·Windows 네이티브 컴파일을 확인했으며 다른 OS의 파일 탐색기 연동은 실기기 확인이 필요합니다.

  • WebDAV 재시도는 연결 복구를 위한 보완이며 서버·NAS·역방향 프록시가 연결을 끊는 원인 자체를 제거하지는 않습니다. 반복 실패 시 받은 파일을 보관하므로 재개하거나 다른 저장소로 옮길 수 있습니다.

  • 로컬 HTTP·FTP 서버로 원본 바이트·인증 갱신·정상/잘못된 Range 응답·취소·파일명 충돌·작업 정보 저장을 검증했습니다. 폴더 전체 다운로드는 제외하며 이어받기는 서버 지원에 따라 처음부터 다시 시작할 수 있습니다. DLNA는 같은 실행 중에만 다시 받을 수 있으며 앱 재시작 후에는 서버 목록에서 새로 추가해야 합니다. 실제 NAS·클라우드 계정·Android 장시간 다운로드는 기기별 확인이 필요합니다.

  • Windows 실제 재생에서 160×90→640×360 업스케일 출력·Lanczos·프레임 보간 동시 동작과 해제 후 원래 크기·필터 복원을 확인했습니다. Android·TV·Linux·macOS 실기기 화질·성능은 추가 확인이 필요합니다.

  • 업스케일은 AI 복원 기능이 아닌 GPU 확대 필터이며 원본보다 작은 화면·원본 크기 모드는 추가 확대하지 않습니다. 오디오 전용·외부 캐스팅 수신기에는 적용하지 않습니다. 미지원 옵션·출력 할당 실패는 기존 필터와 크기로 복원합니다.

  • Windows 실제 영상 출력에서 프레임 혼합·화면 동기화 활성 및 해제 후 옵션 복원을 확인했습니다. Android·TV·Linux·macOS 실기기 확인은 남아 있습니다.

  • 인접 프레임을 혼합하는 방식이며 AI/움직임 추정 기반의 중간 프레임 생성은 포함하지 않습니다. 파일 FPS를 변경하거나 외부 캐스팅 장치에 적용하지 않으며 장면에 따라 흐림·잔상이 생길 수 있습니다.


Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64: ZIP을 풀고 oplayer.exe 실행
  • Linux x64: tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: 41a528d
Actions: https://github.com/gaeco0/OPlayer/actions/runs/39894430151

OPlayer v0.1.5

Choose a tag to compare

@github-actions github-actions released this 22 Oct 05:19

추가

  • 확장앱을 플레이어(player)·브라우저(browser)·리소스(resource) 세 유형과 명시적 capabilities로 정리했습니다. 미정의 기능·교차 유형 권한·필수 훅 누락은 설치 시 거절하고 공개 훅 호출도 제한합니다. 기존 site/cloud/subtitle 확장앱·ID·연결 정보는 호환 유지합니다.
  • 플레이어 영상 필터 공통 훅과 공식 선택 설치용 색상 프리셋 확장앱을 추가했습니다. 색상·회전·반전을 허용 범위 내 데이터로 적용하며 임의 네이티브 명령은 실행하지 않습니다.
  • 확장앱 화면의 유형별 필터, 저장소 JSON 유형·기능 검사, 개발가이드와 실행 예제를 추가했습니다. 같은 API 4 규약의 새 공급자·필터는 JS와 JSON만 갱신하면 됩니다. 기본 클라우드·자막 확장앱을 새 분류로 갱신했습니다.
  • Windows 플레이어의 Alt+Enter와 오른쪽 위 전체화면 버튼으로 현재 모니터를 채웁니다. 해제·플레이어 종료 시 원래 위치·크기·최대화 상태로 돌아오며, 작은 창 모드와 상호 전환합니다. Esc는 패널을 먼저 닫고 전체화면을 해제합니다.
  • 자막 검색 확장앱 API 4와 기본 OpenSubtitles 확장앱을 추가했습니다. 플레이어 자막 메뉴에서 제목·언어로 검색하고 결과를 선택하거나 첫 결과를 내려받아 적용합니다. 확장앱 설정에서 재생 시작 시 자동 검색·적용도 켤 수 있으며 기본값은 OFF입니다. 기존 내장·외부 자막은 우선 사용합니다.
  • 자막 사이트의 설정·인증·검색·다운로드 처리는 JS 확장앱으로 제공하며, 다른 공급자는 공통 규약으로 추가할 수 있습니다. 기본 공급자를 삭제·비활성화할 수 있고 연결 정보는 보안 저장소에 보관합니다.

수정

  • OpenSubtitles 확장앱 1.0.2에서 사용자 이름·비밀번호를 선택 사항으로 바꿨습니다. API Key만으로 로그인 없이 검색·다운로드하고, 계정을 입력한 경우에만 로그인합니다. 검색 URL 정규화와 같은 API 서버의 GET 리디렉션을 지원하며, 계정 인증 실패 시 익명 다운로드로 자동 전환하거나 다운로드 요청을 재전송하지 않습니다.
  • 한국어 Windows 빌드 환경에서도 JavaScript 엔진 플러그인 소스를 UTF-8로 컴파일하도록 지정했습니다.

참고 및 제한

  • 앱 버전은 0.1.5이며 내부 빌드번호 +2와 기존 정식 서명키를 유지합니다. 새로운 네이티브 기능·새 공개 훅은 호스트 API 업데이트가 필요합니다. v0.1.4에는 API 4가 없으므로 이번 앱 업데이트가 필요합니다.
  • 영상 필터는 로컬 플레이어의 색상·회전·반전 프리셋입니다. 사용자 셰이더·임의 FFmpeg 필터와 외부 캐스팅 장치의 색상 제어는 지원하지 않습니다.
  • 새 자막 확장앱은 API 4를 지원하는 앱이 필요합니다. OpenSubtitles API Key는 사용자가 등록하고 계정 로그인은 선택 사항이며 다운로드 할당량은 서비스 정책을 따릅니다. 실계정 API 호출은 별도 확인이 필요합니다.
  • 자동 검색은 영상 제목을 공급자에 보내고 첫 검색 결과를 적용하므로 파일 판본에 따라 싱크나 내용이 다를 수 있습니다. 다른 결과를 선택하거나 자막 싱크를 조정할 수 있습니다. ZIP 자막 묶음은 직접 지원하지 않으며 확장앱이 지원 형식의 자막 본문 또는 다운로드 URL을 제공해야 합니다.

Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64: ZIP을 풀고 oplayer.exe 실행
  • Linux x64: tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: dec6a3b
Actions: https://github.com/gaeco0/OPlayer/actions/runs/39726338192

OPlayer v0.1.4

Choose a tag to compare

@github-actions github-actions released this 22 Oct 01:14

추가

  • 내장 브라우저의 뒤로·앞으로 기록과 현재 위치를 저장합니다. 다른 메뉴를 다녀오거나 앱을 다시 실행해도 탐색을 이어갈 수 있으며, 복귀 시 현재 페이지만 다시 불러옵니다. 뒤로 이동한 뒤 새 페이지를 열면 앞으로 기록을 정리합니다. 화면 버튼·Android 뒤로가기·마우스 앞으로가기가 같은 기록을 사용합니다.
  • 로컬·원격 파일 목록과 격자에서 항목을 왼쪽으로 밀면 삭제 버튼이 나타납니다. 스와이프만으로 삭제하지 않으며, 버튼을 누르면 실제 파일·폴더(하위 항목 포함)를 삭제합니다. 진행 표시·중복 클릭 방지와 실패 후 목록 재조회를 지원합니다.
  • WebDAV·FTP·SFTP·SMB 삭제를 지원하며 등록한 루트·SMB 공유 자체는 삭제하지 않습니다. 잠긴 항목과 폴더 안에 별도로 잠근 하위 경로는 인증 후 삭제합니다. 클라우드 확장앱에는 선택적 삭제 선언·훅을 추가했으며 기존 읽기 전용 권한은 유지합니다.

수정

  • 모바일 플레이어의 화면 회전 모드를 설정에서 선택하고 회전 버튼으로 변경한 값도 기억합니다. Android는 센서 기반 회전을 직접 요청해 OS 세로 잠금 상태에서도 자동 회전·가로 전환이 가능하도록 수정했습니다. 플레이어 종료 시 시스템 회전 정책을 복원하며 데스크톱·Android TV에는 적용하지 않습니다.
  • Linux의 JavaScript 확장앱 엔진 플러그인에서 누락된 내보내기 선언을 보완해 배포 빌드가 컴파일되도록 수정했습니다.

참고 및 제한

  • 브라우저는 최근 URL 기록 최대 500개를 보관합니다. 페이지 입력값·스크롤·영상 위치·JavaScript 실행 상태·POST 본문은 복원하지 않으며, 저장된 주소를 다시 요청합니다. 인증이 만료된 사이트는 다시 로그인해야 할 수 있습니다.
  • 삭제는 휴지통으로 이동하는 기능이 아닙니다. DLNA와 기존 읽기 전용 클라우드는 삭제 버튼을 표시하지 않으며, 클라우드 확장앱이 삭제를 명시적으로 지원해야 사용할 수 있습니다.
  • Android 16의 큰 화면 기기 등은 OS 정책에 따라 회전 요청이 제한될 수 있습니다. iOS 회전도 OS의 허용 범위를 따릅니다.
  • 이번 배포에는 v0.1.3의 JavaScript 확장앱 저장소·S3/Box/MYBOX·HTML/XML/JSON 파서, AdGuard 인증서 호환 수정, 테마와 다운로드 출력 옵션도 포함됩니다. 상세 내용은 v0.1.3 변경 내역을 참고하세요.

Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64: ZIP을 풀고 oplayer.exe 실행
  • Linux x64: tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: 5cb9e7f
Actions: https://github.com/gaeco0/OPlayer/actions/runs/39703309075

OPlayer v0.1.2

Choose a tag to compare

@github-actions github-actions released this 21 Oct 10:16

추가

  • 로컬 홈·등록한 폴더·최근 재생 목록에 잠금 메뉴와 상태 표시를 제공합니다. 최근 재생 목록과 개별 파일은 독립적으로 잠금 해제합니다.

수정

  • 내장 브라우저를 새로 열 때 뒤로가기 기록 없이 마지막 페이지만 복원하던 동작을 없애고 홈페이지에서 시작하도록 변경했습니다.
  • Android가 시스템 및 사용자 설치 CA를 신뢰하도록 설정해 AdGuard HTTPS 필터링 환경의 WebView 리소스 인증서 호환성을 보완했습니다. 호스트명·유효기간·인증서 체인 검증은 유지합니다.
  • Android에서도 내장 브라우저 요청 기록에서 실패한 JS·이미지·HTTP 요청의 원인을 확인할 수 있습니다.

변경

  • GitHub 릴리스에 버전별 변경 내역을 배포 파일과 함께 게시합니다.

확인이 필요한 사항

  • AdGuard HTTPS 필터링은 기기에 AdGuard CA가 설치되어 있어야 하며, 사이트별 실제 Android 기기 검증은 추가로 필요합니다.

Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64: ZIP을 풀고 oplayer.exe 실행
  • Linux x64: tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: 542668c
Actions: https://github.com/gaeco0/OPlayer/actions/runs/39581432086

OPlayer v0.1.1

Choose a tag to compare

@github-actions github-actions released this 21 Oct 07:19

Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64: ZIP을 풀고 oplayer.exe 실행
  • Linux x64: tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: 82698bc
Actions: https://github.com/gaeco0/OPlayer/actions/runs/39559805942

OPlayer v0.1.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 02:17

Windows · Android · Android TV · Linux · macOS 배포 빌드입니다.

  • Android: mobile APK / Android TV: tv APK (arm64-v8a, armeabi-v7a, x86_64)
  • Windows x64: ZIP을 풀고 oplayer.exe 실행
  • Linux x64: tar.gz 압축 해제 후 실행 (시스템 의존성은 README 참고)
  • macOS Apple Silicon: ZIP 안의 OPlayer.app (Developer ID 서명·공증 미포함)
  • SHA256SUMS.txt: 배포 파일 무결성 확인

빌드 커밋: a2afc58
Actions: https://github.com/gaeco0/OPlayer/actions/runs/39556714162