프로젝트

일반

사용자정보

요구사항정의서 » 이력 » 버전 1

이태훈, 2026/03/25 01:31

1 1 이태훈
h1. 요구사항정의서
2
3
h1. 동영상 플레이어 앱 요구사항 정의서 (SRS)
4
5
|_.항목|_.내용|
6
|프로젝트명|BBPlayer|
7
|프로그램명|BBPlayer|
8
|문서 버전|v1.0|
9
|작성일|2026년 03월 24일|
10
|작성자|페후 (이태훈)|
11
|상태|초안 (Draft)|
12
13
---
14
15
h2. 1. 프로젝트 개요
16
17
h3. 1.1 목적
18
19
기존 동영상 플레이어의 자막 오류 및 소리 문제를 개선하고, Windows 데스크탑과 Android 모바일 환경 모두에서 동작하는 크로스플랫폼 동영상 플레이어 앱을 개발한다.
20
21
h3. 1.2 범위
22
23
* 지원 플랫폼: Windows 10 이상 (데스크탑), Android 8.0 이상 (APK)
24
* 개발 기술: Flutter (Dart), media_kit (FFmpeg 기반 코덱 처리)
25
* 주요 기능: 동영상 재생, 자막, 플레이리스트, 제스처 제어, 키보드 단축키
26
27
h3. 1.3 용어 정의
28
29
|_.용어|_.설명|
30
|media_kit|FFmpeg 기반의 Flutter 크로스플랫폼 미디어 재생 라이브러리|
31
|SRT / ASS|자막 파일 포맷 (SubRip / Advanced SubStation Alpha)|
32
|A-B 반복|사용자가 지정한 구간을 반복 재생하는 기능|
33
|PIP|Picture in Picture: 다른 앱 사용 중 영상을 작은 창으로 재생|
34
|Always on Top|플레이어 창이 항상 다른 창 위에 표시되는 기능|
35
36
---
37
38
h2. 2. 기능 요구사항
39
40
h3. 2.1 재생 컨트롤
41
42
|_.ID|_.기능명|_.상세 설명|_.플랫폼|
43
|FR-01|재생 / 일시정지|영상을 재생하거나 일시정지한다. 컨트롤 바 버튼 및 단축키로 토글 가능|Windows / Android|
44
|FR-02|10초 앞으로 / 뒤로|버튼 클릭 시 현재 재생 위치에서 정확히 10초 이동|Windows / Android|
45
|FR-03|재생 진행바|영상 전체 길이 대비 현재 위치를 표시하며, 드래그하여 원하는 위치로 탐색 가능|Windows / Android|
46
|FR-04|재생 속도 조절|0.25x ~ 2.0x 범위에서 재생 속도 선택 가능 (0.25x 단위)|Windows / Android|
47
|FR-05|화면 비율 변경|16:9 / 4:3 / 화면 맞춤 / 전체화면 모드 선택 가능|Windows / Android|
48
|FR-06|항상 위 (Always on Top)|플레이어 창을 다른 모든 창 위에 항상 표시|Windows 전용|
49
|FR-07|이어보기|앱 종료 후 재실행 시 마지막 재생 위치부터 자동으로 이어서 재생|Windows / Android|
50
|FR-08|A-B 구간 반복|사용자가 시작점(A)과 종료점(B)을 지정하면 해당 구간을 무한 반복 재생|Windows / Android|
51
52
h3. 2.2 자막
53
54
|_.ID|_.기능명|_.상세 설명|_.플랫폼|
55
|FR-09|자막 파일 불러오기|SRT, ASS 형식의 외부 자막 파일을 수동으로 불러와 적용|Windows / Android|
56
|FR-10|자막 싱크 조절|자막 표시 시간을 ±0.1초 단위로 수동 조정 가능|Windows / Android|
57
|FR-11|자막 ON/OFF|자막 표시 여부를 토글로 즉시 전환 가능|Windows / Android|
58
|FR-12|자막 스타일 커스터마이징|자막 글자 크기, 색상, 배경색을 사용자가 직접 설정 가능|Windows / Android|
59
|FR-13|자막 자동 검색|재생 중인 파일명을 기준으로 외부 자막 사이트에서 자막을 자동 검색하여 다운로드 제안|Windows / Android|
60
61
h3. 2.3 오디오
62
63
|_.ID|_.기능명|_.상세 설명|_.플랫폼|
64
|FR-14|볼륨 조절|0~100% 범위의 볼륨을 슬라이더 또는 제스처/단축키로 조절|Windows / Android|
65
|FR-15|음소거|볼륨을 즉시 0으로 전환하며, 재토글 시 이전 볼륨으로 복원|Windows / Android|
66
|FR-16|오디오 트랙 선택|MKV 등 다중 오디오 트랙이 포함된 파일에서 원하는 트랙을 선택|Windows / Android|
67
68
h3. 2.4 플레이리스트
69
70
|_.ID|_.기능명|_.상세 설명|_.플랫폼|
71
|FR-17|파일 추가|파일 탐색기를 통해 개별 파일 또는 폴더 단위로 영상 파일을 플레이리스트에 추가|Windows / Android|
72
|FR-18|드래그 앤 드롭|파일 탐색기에서 앱으로 파일을 드래그하여 추가 가능|Windows 전용|
73
|FR-19|이전 / 다음 영상 이동|플레이리스트 내 이전 또는 다음 영상으로 이동|Windows / Android|
74
|FR-20|반복 재생 모드|전체 반복 / 한 곡 반복 / 셔플 중 선택하여 재생 순서 제어|Windows / Android|
75
|FR-21|최근 재생 목록|최근 재생한 파일 히스토리를 저장하여 빠르게 다시 열기 가능|Windows / Android|
76
|FR-22|진행바 썸네일 미리보기|진행바에 마우스를 올리면 해당 위치의 영상 썸네일을 팝업으로 표시|Windows 전용|
77
78
h3. 2.5 제스처 제어 (Android 전용)
79
80
모바일 환경에서 직관적인 조작을 위해 아래와 같은 터치 제스처를 지원한다.
81
82
|_.영역|_.제스처|_.동작|
83
|전체 화면|좌 → 우 스와이프|재생 위치 앞으로 이동 (스와이프 거리에 비례)|
84
|전체 화면|우 → 좌 스와이프|재생 위치 뒤로 이동 (스와이프 거리에 비례)|
85
|화면 왼쪽 절반|아래 → 위 스와이프|화면 밝기 증가|
86
|화면 왼쪽 절반|위 → 아래 스와이프|화면 밝기 감소|
87
|화면 오른쪽 절반|아래 → 위 스와이프|볼륨 증가|
88
|화면 오른쪽 절반|위 → 아래 스와이프|볼륨 감소|
89
|화면 중앙|싱글 탭|재생 / 일시정지 토글|
90
91
bq. 제스처 조작 중에는 화면 중앙에 오버레이 UI(아이콘 + 수치)를 표시하여 현재 값을 즉시 피드백한다.
92
93
h3. 2.6 키보드 단축키 (Windows 전용)
94
95
PC 환경에서 마우스 없이도 빠르게 조작할 수 있도록 아래의 단축키를 지원한다.
96
97
|_.단축키|_.동작|_.비고|
98
|@Space@|재생 / 일시정지||
99
|@→@|5초 앞으로||
100
|@←@|5초 뒤로||
101
|@Shift + →@|10초 앞으로||
102
|@Shift + ←@|10초 뒤로||
103
|@↑@|볼륨 증가|5% 단위|
104
|@↓@|볼륨 감소|5% 단위|
105
|@F@ / @F11@|전체화면 토글||
106
|@Esc@|전체화면 해제||
107
|@M@|음소거 토글||
108
|@N@|다음 영상||
109
|@P@|이전 영상||
110
|@S@|자막 ON / OFF||
111
|@A@|A-B 구간 반복 시작 / 종료 지정|1회: A 지점, 2회: B 지점|
112
|@Ctrl + O@|파일 열기||
113
114
h3. 2.7 PIP (Picture in Picture)
115
116
|_.ID|_.기능명|_.상세 설명|_.플랫폼|
117
|FR-23|PIP 모드 전환|다른 앱을 사용하는 동안 영상을 작은 플로팅 창으로 재생. Android 시스템 PIP API 활용|Android 전용|
118
119
---
120
121
h2. 3. 비기능 요구사항
122
123
|_.구분|_.항목|_.내용|
124
|성능|재생 지연|파일 열기 후 재생 시작까지 2초 이내|
125
|성능|탐색 응답|진행바 드래그 탐색 후 화면 반영까지 0.5초 이내|
126
|호환성|Windows|Windows 10 이상 (64bit)|
127
|호환성|Android|Android 8.0 (API 26) 이상|
128
|지원 포맷|동영상|MP4, MKV, AVI, MOV, FLV, WMV (FFmpeg 지원 포맷 전체)|
129
|지원 포맷|자막|SRT, ASS/SSA|
130
|UI/UX|다크 모드|기본 다크 테마 적용, 라이트 모드 선택 가능|
131
|UI/UX|반응형 레이아웃|화면 크기에 따라 컨트롤 바 및 레이아웃 자동 조정|
132
|데이터|재생 기록 저장|이어보기 및 최근 재생 목록을 로컬 DB(SQLite)에 저장|
133
134
---
135
136
h2. 4. 기술 스택
137
138
|_.구분|_.기술 / 라이브러리|_.용도|
139
|개발 언어|Dart|Flutter 앱 개발 언어|
140
|프레임워크|Flutter|Windows / Android 크로스플랫폼 UI 프레임워크|
141
|미디어 재생|media_kit|FFmpeg 기반 코덱 처리 및 영상 재생|
142
|미디어 재생|media_kit_video|영상 렌더링 위젯|
143
|자막|subtitle_view|자막 파싱 및 표시|
144
|파일 선택|file_picker|파일 탐색기 연동|
145
|로컬 저장소|sqflite|재생 히스토리 및 설정 저장|
146
147
---
148
149
h2. 5. 개발 우선순위
150
151
|_.단계|_.구분|_.포함 기능|
152
|Phase 1|핵심 재생 기능|재생/일시정지, 진행바, 볼륨, 파일 열기, 전체화면|
153
|Phase 2|자막 & 오디오|자막 불러오기, 싱크 조절, 스타일, 오디오 트랙 선택|
154
|Phase 3|플레이리스트|파일 추가, 이전/다음, 반복 모드, 최근 재생 목록, 이어보기|
155
|Phase 4|편의 기능|A-B 반복, 재생 속도, 단축키, 제스처 제어, Always on Top|
156
|Phase 5|고급 기능|썸네일 미리보기, 자막 자동 검색, PIP, 드래그 앤 드롭|
157
158
---
159
160
h2. 6. 변경 이력
161
162
|_.버전|_.일자|_.작성자|_.변경 내용|
163
|v1.0|2026-03-24|페후 (이태훈)|최초 작성|