Repository navigation
OPlayer v0.1.6
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