스마트폰으로 촬영한 모션포토(Motion Photo)에서 비디오 클립과 스틸 사진을 추출하고, 이를 시간순으로 이어붙여 하이라이트 요약 영상을 자동으로 만들어주는 앱입니다.
Flutter 기반으로 Android와 iOS를 동시에 지원하며, 기본 기능에 집중한 무료 Lite 버전입니다.
삼성 갤럭시, 구글 픽셀 등 스마트폰에서 사진 촬영 시 전후 약 1~3초의 짧은 영상을 함께 저장하는 기능입니다. JPEG 파일 안에 MP4 비디오가 내장되어 있는 형태로, 일반 갤러리 앱에서는 사진으로만 보이지만 실제로는 살아 움직이는 순간을 담고 있습니다.
이 프로젝트는 기존에 개발한 안드로이드 전용 앱 DigestMovie(다이제스트무비)를 기반으로 합니다.
| 기능 | Lite | Pro |
|---|---|---|
| 모션포토 스캔 및 선택 | O | O |
| 비디오 클립 추출 | O | O |
| 스틸 사진 추출 | O | O |
| 자동 이어붙이기 | O | O |
| 셔터 효과음 | O | O |
| 기본 출력 설정 (해상도/비율) | O | O |
| 갤러리 저장 | O | O |
| 고급 전환 효과 | - | O |
| 커스텀 필터/색보정 | - | O |
| 배경 음악 추가 | - | O |
| 자막/텍스트 오버레이 | - | O |
| 클라우드 백업/공유 | - | O |
* Pro 기능은 추후 기획에 따라 변경될 수 있음
| 항목 | DigestMovie (기존) | MotionStitch Lite (신규) |
|---|---|---|
| 프레임워크 | Kotlin + Jetpack Compose | Flutter + Dart |
| 플랫폼 | Android Only | Android + iOS |
| 미디어 처리 | ffmpeg-kit (Android) | ExoPlayer Transformer (Android) / AVFoundation (iOS) |
| UI | Material 3 (Compose) | Material 3 (Flutter) |
| 상태관리 | ViewModel + StateFlow | Provider (ChangeNotifier) |
| 저장소 | MediaStore API | 플랫폼별 갤러리 API |
[새로 만들기] 또는 [내 갤러리] 선택
커스텀 달력으로 모션포토 검색 기간 설정
그리드 뷰에서 원하는 모션포토 다중 선택 (전체 선택/해제 토글)
선택한 사진 순서 확인, 출력 설정(해상도, 비율) 조정
비디오 클립 추출 → 셔터음 + 스틸 사진 삽입 → MP4 인코딩
갤러리에 저장, 재생/공유 가능
Flutter 프로젝트 생성, 기획 문서 작성, 개발 환경 구성
모션포토 파싱(삼성/Google XMP), 비디오/스틸 추출, 모션스티치 무비 생성, 갤러리 저장
홈, 픽, 미리보기, 처리, 완료, 갤러리, YouTube 관련 7개 화면 구현. Provider 기반 상태관리.
• AdMob 하단 배너 광고 (showAds 플래그로 ON/OFF)
• YouTube 업로드 전체 흐름 (Google Sign-In + YouTube Data API resumable upload)
• 채널 사전 체크 + 단계별 안내 화면
• 갤러리 카드에 YouTube 상태 표시 (회색/빨간색 + URL 검증)
• SharedPreferences 업로드 이력 + ValueNotifier 자동 갱신
• Firebase App Distribution 배포
• ffmpeg-kit-16kb 완전 제거 → ExoPlayer Transformer 전면 전환
• APK 크기 198MB → 58MB (-71%)
• 인코딩 속도: 60장 5분 → 1분30초, 220장 7분
• 출력 파일 크기 400MB → 180MB (-55%)
• Integration Test 프레임워크 도입 (3그룹, 6개 테스트)
• dead 코드 정리 (6파일, 644줄 삭제)
✓ Phase 1: GADApplicationIdentifier 추가로 광고 SDK 크래시 해결
✓ Phase 2: AppDelegate.swift 표준 패턴 작성, Method Channel 7개 dispatcher, scanMotionPhotos(PhotoKit Live Photo) 실구현, iOS deployment target 14 상향, iOS 광고 비활성화
✓ 시뮬레이터에서 홈 화면 정상 표시
◯ Phase 3: AVFoundation 기반 processDigestMovie 본격 구현 (Live Photo .mov 추출 → 클립 합성 → MP4 인코딩 → 갤러리 저장)
◯ 실기 검증, 라이브포토 샘플 테스트
◯ Google Sign-In iOS URL scheme 설정
QA 테스트, Play Store / App Store 등록
android-basic-verified (안드로이드 기본기능 충실하게 실행 확인 완료)authorizationStatus(for:) API 요구)lib/main.dart에서 Platform.isIOS 분기, 추후 재검토