메인
서비스안내
키위매니저
셀매니저
키위 보이스 레코더
RFID 솔루션 제작
QR 솔루션 제작
아라피아
블록체인
맞춤형 솔루션제작
서비스신청
키위매니저
셀매니저
키위 보이스 레코더
서비스관리
서비스 신청내역
서비스 결제내역
회원가입
회원로그인
회원정보
고객센터
공지사항
고객문의
서비스이용약관
개인정보처리방침
로그인
회원가입
메뉴보기(Sitemap)
메인
서비스안내
키위매니저
셀매니저
키위 보이스 레코더
RFID 솔루션 제작
QR 솔루션 제작
아라피아
블록체인
맞춤형 솔루션제작
서비스신청
키위매니저
셀매니저
키위 보이스 레코더
서비스관리
서비스 신청내역
서비스 결제내역
회원가입
회원로그인
회원정보
고객센터
공지사항
고객문의
서비스이용약관
개인정보처리방침
Home > 서비스안내
키위 보이스 레코더
웹 음성녹음 솔루션 : 키위 보이스 레코더
PC 또는 Mobile기기에 연결 되어 있는 마이크로 음성을 녹음하여 녹음 파일을 재생, 다운로드 또는 웹 서버에 업로드 할 수 있는 HTML5 웹 기반의 녹음 솔루션입니다.
웹사이트에 맞춤형으로 웹 음성녹음 서비스를 구축 할 수 있습니다.
HTML5,JavaScript 기반으로 웹 서버 OS 및 웹 사이트 제작 언어에 상관 없이 음성 녹음 서비스를 구축하여 운영 할 수 있습니다.
음성 녹음은 mp3파일로 녹음되며 녹음 시간 길이는 원하는 최대 시간(초 단위)을 설정 할 수 있습니다.
3일 동안 무료로 테스트를 진행해보세요.
서비스 신청 후 3일 동안 무료로 웹서버에 설치하여 테스트할 수 있습니다.
테스트를 위한 임시 라이선스가 발급되며 신청 후 이메일로 안내해드립니다.
테스트 완료 후 구매 결제를 진행합니다.
무료 테스트 기간은 구매 신청 당일을 포함하여 제공됩니다.
주말 및 공휴일은 무료 테스트 기간에 포함되지 않습니다.
키위 보이스 레코더 라이선스 구매 고객사
2026312일 현재 키위 보이스 레코더 라이선스를 구매한 고객사는 121곳 입니다.
웹 음성녹음 체험하기
웹 음성 녹음 체험 URL에 접속한 PC에 마이크가 연결되어 있어야 합니다. 모바일 기기에서는 바로 사용 할 수 있습니다.
웹 음성녹음 체험 URL에 접속 후 마이크 사용 권한 요청 메시지창이 뜨면 반드시 허용해주세요.
사용자 PC 또는 모바일 기기에서 웹브라우저 오류가 발생하거나 일부 기기 또는 구 버전의 웹브라우저에서 녹음이 정상적으로 되지 않을 수 있습니다.
사용자 PC 또는 모바일 기기에서 웹브라우저 최신 버전 및 마이크 연결 상태 등을 반드시 확인해 주세요.
- 웹 브라우저 지원 호환성 (각 브라우저 지원 버전)
PC Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet
49 79 65 미지원 36 14.1 49 49 65 36 14.5 5.0
웹페이지 HTML 적용방식
HTML과 Javascript로 웹페이지에 적용합니다. 설치파일에 Javascript파일 등이 모두 포함되어 함께 제공됩니다. 디자인은 자유롭게 변경 할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>키위 보이스 레코더 - Kiwi Voice Recorder</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./lib/jquery-3.7.0.min.js"></script>
    <script src="./lib/setup.js"></script>
    <script src="./lib/audioRecorder.min.js"></script>
    <style>
        .BUTTON { margin: 0 10px 10px 0; }
        .visualizer_canvas { width: 100%; height: 200px; background-color: #000000; }
        #id_timer1 { float:left; }
        #id_timer2 { float:left; }
        #max_recording_time { float:left; }
        .wrap::after { content: ""; display: block; clear: both; }
    </style>
  </head>
  <body>
    <fieldset id="fieldset_black">
        <legend id="legend_black">키위 보이스 레코더 (Kiwi Voice Recorder)</legend>
        <div id="fieldset_div">&#8226; 서비스 신청 및 안내 : <a href="https://www.kiwisoft.kr" target="_blank">https://www.kiwisoft.kr</a></div>
        <div id="fieldset_div">&#8226; Copyright © 앤아이비디앤. All rights reserved.</div>
    </fieldset>
    <br><br>
 
 
 
 
    <h3>Control1 : 녹음 컨트롤 1</h3>
 
    <h4>- 비주얼라이저 (Visualizer) Type: V1 (V1,V2 중에 선택 가능)</h4>
    <!-- visualizer : 가로,세로 사이즈 및 기본 배경색을 CSS에서 원하는 값을 지정합니다. 비주얼라이저를 사용하지 않는 경우 아래 canvas 태그는 주석처리 하시면 됩니다. -->
    <canvas id="visualizer_canvas_v1_1" class="visualizer_canvas"></canvas>
    <br><br>
 
    <button type="button" id="recordButton1" onclick="startRecording('visualizer_canvas_v1_1','v1','id_timer1','audio_player1','audio_button1','audio_log1');">녹음시작</button>
    <button type="button" id="pauseButton1" onclick="pauseRecording('audio_log1')">녹음일시정지(Pause)</button>
    <button type="button" id="resumeButton1" onclick="resumeRecording('audio_log1')">녹음다시시작(Resume)</button>
    <button type="button" id="stopButton1" onclick="stopRecording('audio_log1');">녹음종료</button>
 
 
    <h4>- Player : 녹음 종료 후 재생 플레이어가 보여집니다.</h4>
    <div id="audio_player1"></div>
 
    <h4>- Play,Download,Upload : 녹음 종료 후 녹음파일 재생,mp3 다운로드,mp3 업로드 버튼을 생성합니다.</h4>
    <div id="audio_button1"></div>
 
    <h4>- Timer : 녹음 시간 진행 표시</h4>
    <div class="wrap">
    <div id="id_timer1">0:00</div> 
    <div id="max_recording_time">/<script>document.write(recordTimeText());</script></div>
    </div>
 
    <h4>- Log : 녹음 진행 로그를 표시합니다.</h4>
    <div id="audio_log1"></div>
 
 
 
 
    <br><br><hr><br><br>
 
 
 
 
    <!-- 한 화면에 녹음 기능을 2개 이상 추가하는 경우 아래 방식으로 추가합니다. -->
    <h3>Control2 : 녹음 컨트롤 2 (한 화면에 녹음 기능을 2개 이상 추가하는 경우 아래와 같이 추가 가능)</h3>
 
    <h4>- 비주얼라이저 (Visualizer) Type: V2 (V1,V2 중에 선택 가능)</h4>
    <!-- visualizer : 가로,세로 사이즈 및 기본 배경색을 CSS에서 원하는 값을 지정합니다. 비주얼라이저를 사용하지 않는 경우 아래 canvas 태그는 주석처리 하시면 됩니다. -->
    <canvas id="visualizer_canvas_v2_1" class="visualizer_canvas"></canvas>
    <br><br>
 
    <button type="button" id="recordButton2" onclick="startRecording('visualizer_canvas_v2_1','v2','id_timer2','audio_player2','audio_button2','audio_log2');">녹음시작</button>
    <button type="button" id="pauseButton2" onclick="pauseRecording('audio_log2')">녹음일시정지(Pause)</button>
    <button type="button" id="resumeButton2" onclick="resumeRecording('audio_log2')">녹음다시시작(Resume)</button>
    <button type="button" id="stopButton2" onclick="stopRecording('audio_log2');">녹음종료</button>
 
 
    <h4>- Player : 녹음 종료 후 재생 플레이어가 보여집니다.</h4>
    <div id="audio_player2"></div>
 
    <h4>- Play,Download,Upload : 녹음 종료 후 녹음파일 재생,mp3 다운로드,mp3 업로드 버튼을 생성합니다.</h4>
    <div id="audio_button2"></div>
 
    <h4>- Timer : 녹음 시간 진행 표시</h4>
    <div class="wrap">
    <div id="id_timer2">0:00</div> 
    <div id="max_recording_time">/<script>document.write(recordTimeText());</script></div>
    </div>
 
    <h4>- Log : 녹음 진행 로그를 표시합니다.</h4>
    <div id="audio_log2"></div>
    
    
    
    <br><br><hr><br><br>
 
 
 
 
    <script src="./lib/audioFunction.min.js"></script>
    <script src="./lib/appRecorder.js"></script>
  </body>
</html>
 
JAVASCRIPT 주요 기능 설정
자바스크립트 설정 파일(setup.js)에서 주요 기능 설정을 간편하게 할 수 있습니다.
녹음 컨트롤과 관련된 자바스크립트 주요 함수를 직접 커스트마이징 할 수 있도록 별도의 자바스크립트 파일을 함께 제공합니다.
- setup.js 주요 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
////////////////////////////////////////////////////
// KiwiVoiceRecorder                              //
// https://www.kiwisoft.kr                        //
// Copyright © 앤아이비디앤. All rights reserved.  //
////////////////////////////////////////////////////
 
// Kiwi Recorder 서비스 버전
var Kiwi_Recorder_Version = 17
 
// 라이선스 키 (정식 라이선스키로 수정 등록하세요.)
var KVR_LICENSE_KEY = "lJchkbbwGCt66C_"
 
// 녹음되는 오디오 파일 인코딩 타입 선택 (mp3만 가능합니다.)
var encodingTypeSelect = "mp3";
 
// 최대 녹음 시간(초) - 녹음 시간이 설정 값을 초과하면 자동으로 녹음이 종료됩니다.
var recordTimeLimit = 300;
 
// 녹음 전 버튼 클릭 오류 메시지
var recordingCheckErrorMsg = "녹음을 먼저 진행하세요.";
var preRecordingCheckErrorMsg = "이전 녹음을 먼저 완료해주세요."// 한 화면에 녹음 기능을 2개 이상 포함시킨 경우 -> 이전 녹음 완료 전 다음 녹음 버튼을 클릭하였을 경우
 
// 녹음 로그 메시지
var readyMessage = "> 녹음을 시작합니다.";  
var startMessage = "> 녹음이 시작되었습니다."
var pauseMessage = "> 녹음을 일시 정지합니다.";  
var resumeMessage = "> 녹음을 계속 진행합니다.";  
var stopMessage = "> 녹음이 종료되었습니다.";  
var endMessage = "> 인코딩이 완료되었습니다.";  
var uploadSuccessMessage = "업로드가 완료되었습니다.";         // MP3 서버 업로드 성공 알림
var uploadFailMessage = "업로드 도중 오류가 발생하였습니다.";   // MP3 서버 업로드 실패 알림
var playMessage = "> 녹음 파일을 재생합니다.";  
var playPauseMessage = "> 녹음 파일 재생을 일시 정지합니다.";  
var playResumeMessage = "> 녹음 파일을 계속 재생합니다.";  
 
// 웹 브라우저 지원 여부 메시지
var chkbrowsermsg = "현재 웹브라우저에서는 녹음 기능을 지원하지 않습니다. 최신 버전의 구글 크롬(Chrome), 마이크로스프트 엣지(Edge) 또는 애플 사파리(Safari)  웹브라우저에서 접속해주세요.";
 
// 녹음 파일 서버 업로드 처리 URL 지정
var uploadUrl = "/Kiwi_Recorder/upload.php";
 
// mp3lib 경로를 지정합니다.(절대경로)
var mp3libUrl = "/Kiwi_Recorder/lib/mp3lib.min.js";
 
 
// 비주얼라이저(visualizer) v1 설정 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var visualizerV1BackColor = "#E2E2E2";  // 배경색상 코드
var visualizerV1LineColor = "#5357FF";  // 라인색상 코드 
var visualizerV1lineWidth = 2;          // 라인두께 (1,2,3 ...) 
 
// 비주얼라이저(visualizer) v2 설정 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var visualizerV2BackgroundColor = "#E2E2E2";   // 배경색상 코드
 
/* 
비주얼라이저(visualizer) 바(bar) 색상을 선택하거나 직접 색상코드를 설정합니다.
비주얼라이저(visualizer) 바(bar) 색상은 기본으로 제공하는 a,b,c,d 4가지 중에서 한 가지를 선택하여 설정 할 수 있습니다. 
기본 제공 색상을 선택하지 않고 색상을 직접 설정 할 경우 색상코드를 입력합니다. ( 예: var visualizerV2BarColor = "#FF0000"; )
*/
var visualizerV2BarColor = "a"
 
// 비주얼라이저(visualizer) 바(bar) 민감도 설정 (비주얼라이저 바의 움직임 정도를 설정합니다. 1 이상의 숫자로 지정하세요. 소수 가능, 기본값: 3)
var visualizerV2Sensor = 3;  
 
/*
주의사항 : 비주얼라이저는 녹음시에 동작하며 V1, V2 중에서 한 가지만 선택하여 사용할 수 있습니다. V1, V2 모두 true로 적용하여 사용하면 오류가 발생합니다.
*/
 
 
// 아래 코드는 수정하지 마세요. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var recordTimeText = function() {
    var recordTimeM = Math.floor(recordTimeLimit / 60);
    var recordTimeS = recordTimeLimit % 60;
    if(recordTimeS<10) {
        recordTimeS = "00";
    }
    if(!recordTimeM || recordTimeM < 1) {
        recordTimeM = "0";
    }
    var resultTime = recordTimeM + ":" + recordTimeS; 
    return resultTime;
};
 
녹음 및 이벤트
녹음을 완료하고 필요한 이벤트를 실행합니다. Ajax를 사용하여 녹음 파일을 웹서버에 업로드 할 수 있습니다.
필요한 기능이 있는 경우 코드를 추가하여 사용하세요.
녹음 파일의 업로드 경로(URL)을 직접 지정하여 서버단에서 파일업로드 처리 및 DB 저장 등의 처리를 할 수 있습니다.
서버단에서 파일업로드 처리와 관련하여 php 예제 소스 파일(upload.php)을 함께 제공합니다. asp 또는 jsp를 사용하시는 경우 직접 제작해주셔야 합니다.
- appRecorder.js 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
////////////////////////////////////////////////////
// 키위 보이스 레코더 - Kiwi Voice Recorder       //
// https://www.kiwisoft.kr                        //
// Copyright © 앤아이비디앤. All rights reserved. //
////////////////////////////////////////////////////
 
// 녹음 시작(start) 
function startRecording(visualizer_canvas_id,visualizer_canvas_ver,timer_id,audio_player,audio_button,audio_log) { 
    _startRecording(visualizer_canvas_id,visualizer_canvas_ver,timer_id,audio_player,audio_button,audio_log); 
}
 
// 녹음 일시 정지(pause)
function pauseRecording(audio_log) {
    _pauseRecording(audio_log);
}
 
// 녹음 다시 시작(resume)
function resumeRecording(audio_log) {
    _resumeRecording(audio_log);
}
 
// 녹음 종료(stop)
function stopRecording(audio_log) {
    _stopRecording(audio_log);    
}
 
// 녹음 진행 과정 로그 표시 
/*
- audio_log : example.html 소스 코드에서 로그 표시 div id -> "audio_log1"
- viewLog 함수명 및 매개변수 변경 금지
*/
function viewLog(str, url = null, audio_log) {
    if($("#"+audio_log).length > 0) {
        const newDiv = document.createElement("div");
        newDiv.appendChild(document.createTextNode(str));
        document.getElementById(audio_log).prepend(newDiv);
    }
}
 
// 녹음 종료 후 재생 플레이어 실행 및 녹음파일재생,녹음파일 계속 재생,녹음파일 재생 일시정지,MP3 다운로드,MP3 업로드 버튼 표시 설정
/*
- audio_player : example.html 소스 코드에서 플레이어 표시 div id -> "audio_player1" 
- audio_button : example.html 소스 코드에서 다운로드 및 업로드 버튼 표시 div id -> "audio_button1"
- viewRecording 함수명 및 매개변수 변경 금지
- 각 상황에 맞게 플레이어,버튼 등의 표시 여부를 직접 수정할 수 있습니다.
*/
function viewRecording(url,blobvalue,audio_player,audio_button) { 
    if($("#"+audio_button).length > 0) {
        $("#"+audio_button).empty();
    }
 
    if($("#"+audio_player).length > 0) {
        $("#"+audio_player).empty();
    }
 
    // 오디오 태그 생성
    var newAudio = document.createElement("audio");
    newAudio.src = url;
    newAudio.controls = true;
    newAudio.id = "player" + Date.now(); 
 
    // 녹음 파일 재생 오디오 플레이어를 화면에 표시합니다.
    if($("#"+audio_player).length > 0) {
        document.getElementById(audio_player).prepend(newAudio); 
    }
 
    // mp3 파일 다운로드 하이퍼링크 생성 (사용 시 아래 주석을 제거합니다.)
    /*
    if($("#"+audio_button).length > 0) {
        // 하이퍼링크 태그 생성
        const downLink = document.createElement("a");
        downLink.href = url;
        downLink.download = "record_" + Date.now() + ".mp3"; // mp3 파일명 지정
        downLink.appendChild(document.createTextNode("mp3 다운로드")); 
        // mp3 파일 다운로드 하이퍼링크를 화면에 표시합니다.
        document.getElementById(audio_button).prepend(downLink);
    }
    */
 
    // mp3 파일 다운로드 버튼 생성
    if($("#"+audio_button).length > 0) {
        var dbuttonID = "downloadButton" + Date.now();
        var dbutton = document.createElement("button");
        dbutton.type = 'button';
        dbutton.id = dbuttonID;
        dbutton.innerHTML = 'mp3 다운로드';
        dbutton.className = 'BUTTON';
        dbutton.onclick = function() {
            const downLink = document.createElement("a");
            downLink.href = url;
            downLink.download = "record_" + Date.now() + ".mp3"// mp3 파일명 지정
            downLink.click();
        };
        /* mp3 파일 다운로드 버튼을 화면에 표시합니다. */
        document.getElementById(audio_button).prepend(dbutton);
    }
 
    // mp3 서버 업로드 버튼 생성
    if($("#"+audio_button).length > 0) {
        var ubuttonID = "uploadButton" + Date.now();
        var ubutton = document.createElement("button");
        ubutton.type = 'button';
        ubutton.id = ubuttonID;
        ubutton.innerHTML = 'mp3 업로드';
        ubutton.className = 'BUTTON';
        /* onClick 이벤트로 uploadRecording(blobvalue) 서버 업로드 함수 호출 */
        ubutton.onclick = function() {
            uploadRecording(blobvalue);
        };
        /* mp3 파일 업로드 버튼을 화면에 표시합니다. */
        document.getElementById(audio_button).prepend(ubutton);
    }
 
    // 녹음 종료 후 녹음파일 재생(Play) 버튼 생성
    if($("#"+audio_button).length > 0) {
        var pbuttonID = "playButton" + Date.now();
        var pbutton = document.createElement("button");
        pbutton.type = 'button';
        pbutton.id = pbuttonID;
        pbutton.innerHTML = '녹음파일재생';
        pbutton.className = 'BUTTON';
        /* onClick 이벤트로 _startPlay(newAudio) 재생(Play) 함수 호출 */
        pbutton.onclick = function() {
            _startPlay(newAudio);
        };
        /* 녹음파일 재생(Play) 버튼을 화면에 표시합니다. */
        document.getElementById(audio_button).prepend(pbutton);
    }
 
    // 녹음파일 재생 일시정지(Pause) 버튼 생성
    if($("#"+audio_button).length > 0) {
        var pabuttonID = "pauseButton" + Date.now();
        var pabutton = document.createElement("button");
        pabutton.type = 'button';
        pabutton.id = pabuttonID;
        pabutton.innerHTML = '녹음파일 재생 일시정지';
        pabutton.className = 'BUTTON';
        /* onClick 이벤트로 _pausePlay(newAudio.id) 일시정지(Pause) 함수 호출 */
        pabutton.onclick = function() {
            _pausePlay(newAudio.id);
        };
        /* 녹음파일 재생 일시정지(Pause) 버튼을 화면에 표시합니다. */
        document.getElementById(audio_button).prepend(pabutton);
    }
 
    // 녹음파일 계속 재생(Resume) 버튼 생성
    if($("#"+audio_button).length > 0) {
        var rebuttonID = "resumeButton" + Date.now();
        var rebutton = document.createElement("button");
        rebutton.type = 'button';
        rebutton.id = rebuttonID;
        rebutton.innerHTML = '녹음파일 계속 재생';
        rebutton.className = 'BUTTON';
        /* onClick 이벤트로 _resumePlay(newAudio.id) 재생(Resume) 함수 호출 */
        rebutton.onclick = function() {
            _resumePlay(newAudio.id);
        };
        /* 녹음파일 계속 재생(Resume) 버튼을 화면에 표시합니다. */
        document.getElementById(audio_button).prepend(rebutton);
    }
 
    // 녹음 종료 버튼 클릭 후 mp3 서버 업로드 자동 실행 (사용 시 아래 주석을 제거합니다.)
    // uploadRecording(blobvalue);
}
 
// 녹음 파일 웹서버 업로드
function uploadRecording(blobData) { 
    /*
    음성 녹음 업로드 파일명을 지정합니다. 
    upload.php 파일 -> $_FILES['voice_record'] 파일 변수명과 일치해야 합니다. 
    업로드 파일명 변경 및 파일 확장자는 upload.php에서 직접 지정할 수 있습니다.
    */
    var upload_file_name = "voice_record";
 
    if(!blobData) {
        alert(recordingCheckErrorMsg);
    } else if(blobData) {
        console.log("Upload Recording");
        var formData = new FormData(); 
        formData.append(upload_file_name,blobData); 
        $.ajax({ 
            url : uploadUrl, 
            async:true,
            type: "POST"
            enctype: 'multipart/form-data',
            data : formData,
            processData: false,
            contentType: false,
            success: function(data, textStatus, jqXHR)
            {            
                console.log(data);
 
                /* 녹음 파일 업로드 처리 서버 스크립트 페이지에서 리턴 받은 값을 확인하여 결과를 처리합니다. 
                리턴 값은 추가 또는 변경 할 수 있습니다. 
                예제 upload.php 파일에서 결과 리턴 처리 방법을 확인하세요. */
                if($.trim(data) == 'upload_success') {
                    /* 리턴 값이 upload_success인 경우 : 업로드에 성공 했을 경우 결과를 처리합니다. 
                    원하는 처리 코드를 여기에 추가하세요. */
                    alert(uploadSuccessMessage);
                } else if($.trim(data) == 'upload_fail') {
                    /* 리턴 값이 upload_fail인 경우 : 업로드에 실패 했을 경우 결과를 처리합니다. 
                    원하는 처리 코드를 여기에 추가하세요. */
                    alert(uploadFailMessage);
                } else {
                    alert(uploadFailMessage);
                }
            }, 
            error: function (jqXHR, textStatus, errorThrown)
            {
                console.log(jqXHR);
            } 
        }); 
    }    
}
 
// 녹음 종료(stop) 후 자동 호출되는 이벤트 함수 (함수명 및 매개변수 변경 금지)
/*
- timer_id : example.html 소스 코드에서 타이머 표시 div id -> "id_timer1" 
- audio_player : example.html 소스 코드에서 플레이어 표시 div id -> "audio_player1" 
- audio_button : example.html 소스 코드에서 다운로드 및 업로드 버튼 표시 div id -> "audio_button1"
- audio_log : example.html 소스 코드에서 녹음 진행 로그 표시 div id -> "audio_log1"
*/
function eventStopRecording(timer_id,audio_player,audio_button,audio_log) {
    console.log('Stop Recording Event');
 
    // 녹음 종료(stop) 후 실행해야 할 코드가 있을 경우 여기에 추가하세요.
    console.log(timer_id);
    console.log(audio_player);
    console.log(audio_button);
    console.log(audio_log);
}
 
// 녹음 시작 시 마이크(미디어 디바이스) 사용 권한 획득 관련 등의 오류로 녹음에 실패하는 경우 자동 호출되는 이벤트 함수 (함수명 변경 금지) 
function _startRecording_error() {
    alert('녹음 시작 도중 오류가 발생하였습니다.');
}
 
녹음파일 웹서버 업로드 및 결과 리턴
- upload.php 예제 (파일 업로드 및 Database 저장 등의 처리는 고객사의 서버 환경에 따라 PHP,ASP,JSP 등의 언어로 직접 제작해주셔야 하는 부분입니다.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 
$size = $_FILES['voice_record']['size'];  // upload 파일 용량
$input = $_FILES['voice_record']['tmp_name']; // upload 임시 파일명 
 
// 업로드 될 실제 파일명 설정 (서버 업로드 폴더 경로 지정 포함, 파일 확장자는 mp3)
$destination = "./upload/voice_record_" . time() . ".mp3"
 
 
// 녹음 파일 서버 업로드
if(move_uploaded_file($input$destination)) {
    
    /* 업로드에 성공 했을 경우 upload_success 값을 리턴합니다. 리턴 값은 원하는 다른 값으로 변경 할 수 있습니다. 
    appRecorder.js -> uploadRecording 함수에서 넘겨받은 리턴 값으로 결과를 처리합니다. 
    여기에 필요한 경우 함께 POST로 넘겨받은 elements 및 녹음 파일명의 Database 저장 등의 처리를 함께 진행합니다. 
    리턴 값 출력 외에 다른 출력 코드는 사용하지 마세요. */
    echo 'upload_success';
 
else {
 
    /* 업로드에 실패 했을 경우 upload_fail 값을 리턴합니다. 리턴 값은 원하는 다른 값으로 변경 할 수 있습니다. 
    appRecorder.js -> uploadRecording 함수에서 넘겨받은 리턴 값으로 결과를 처리합니다. 
    리턴 값 출력 외에 다른 출력 코드는 사용하지 마세요. */
    echo 'upload_fail';
 
}
 
?>
 
라이선스 가격 및 구매 안내
키위 보이스 레코더는 도메인 라이선스로 구매하실 수 있습니다.
라이선스 구매 후 기간 제한 없이 사용하실 수 있습니다.
하나의 도메인에 하나의 라이선스가 적용되며 2차 도메인(서브도메인)도 별개의 라이선스로 구매하셔야 합니다.
1차 도메인 라이선스 구매 후 2차 도메인(서브도메인) 라이선스를 추가 구매하실 경우 할인혜택이 적용됩니다.
1차 도메인 구매 없이 2차 도메인으로 신규 구매하시는 경우 1차 도메인 라이선스 가격이 적용됩니다.
라이선스 구매 완료 후 솔루션 업데이트 또는 기술 지원이 있을 경우 추가 비용이 발생하지 않습니다.
1차 도메인 라이선스 770,000 원 (VAT포함)
2차 도메인 추가 구매 라이선스 550,000 원 (VAT포함, 라이선스 추가 구매시 적용)
라이선스 구매 신청 절차
1. 키위소프트 홈페이지 회원 가입 후 로그인합니다.
2. 아래 라이선스 구매신청을 클릭하여 구매 신청합니다. 등록 후 라이선스 인증키(KEY) 정보를 확인합니다.
3. 라이선스 구매 결제는 신용카드 결제 또는 계좌 이체로 하실 수 있습니다.
   - 결제계좌 : 카카오뱅크 3333-25-1406497 예금주: 도현우(앤아이비디앤)
   - 입금 후 아래 이메일로 사업자등록증을 첨부하여 신청 도메인, 전자세금계산서 수신을 위한 이메일주소, 입금자명을 표기하여 발송합니다.
   - 사업자등록증 발송 이메일 : nibdncompany@gmail.com
   - 신용카드 결제는 구매신청 완료 후 상단 서비스 관리 > 서비스 신청내역 메뉴에서 하실 수 있습니다.
   - 신용카드로 결제하실 경우 세금계산서는 카드매출전표로 대신하며 서비스 결제내역에서 매출전표를 인쇄하실 수 있습니다.
   - 신용카드로 결제하실 경우 결제완료 후 바로 인증처리되며 사업자등록증을 이메일로 보내실 필요가 없습니다.
4. 라이선스 인증이 완료되면 구매 신청란에 등록하신 이메일주소로 키위 보이스 레코더 설치 파일 다운로드 안내 메일을 발송해드립니다. 메일 발송은 인증 완료 후 1~2시간 소요될 수 있습니다.
5. 설치 파일을 다운로드 하신 후 설치 파일에 포함되어 있는 매뉴얼을 참조하여 홈페이지에 맞게 적용하시면 됩니다.
라이선스 구매 신청 또는 문의하기
키위 보이스 레코더는 직접 운영 하시는 웹사이트에 음성녹음 기능을 서비스 할 수 있는 솔루션입니다.
보안서버인증서(SSL)가 적용되어 있는 도메인 URL로 접속(https://)해야 녹음 기능을 정상적으로 사용 할 수 있습니다.
구매 문의는 고객센터 > 고객문의에서 등록해주시면 문의에 대한 답변을 이메일로 보내드립니다.