Как на самом деле реализуется рекордер WAMI?
-
28-10-2019 - |
Вопрос
Я очень новичок в рекордере Wami, и я никогда не работал со Flash, так что на самом деле это может быть глупым.
По сути, как можно реализовать рекордер WAMI? Я видел это на веб -сайте, и он отлично работает там, но когда я загружаю его и пытаюсь использовать его в Localhost как часть Xampp, это не работает.
Если бы кто -то мог написать рекордер Wami для ответа на чайники, это было бы совершенно потрясающе.
Я использую это в CakePhp 2.0, если кто -то знает, особенно как использовать его в этой структуре.
По сути, все, что я пытаюсь сделать, это записывать аудио, сохранить файл в каталог и иметь информацию, чтобы иметь возможность сохранить определенные подробности о файле в базу данных.
Решение
Да, документация не очень ясна. Я провел вчера весь день, выясняя это. Вот простая реализация, которая работает на моей локальной машине. Следующие файлы хранятся в моем корне документа Apache в «/temp/wami/test», поэтому URL - «http: // localhost/temp/wami/test/»:
index.html
Recorder.js
save_file.php
Wami.swf
index.html
<!-- index.html -->
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script></script>
<script src="recorder.js"></script>
</head>
<body>
<div id="recorder">
<button id="record">Record</button>
<button id="play">Play</button>
</div>
<div id="flash"></div>
</body>
<script>
// initialize Wami
Wami.setup({
id: 'flash' // where to put the flash object
});
// initialize some global vars
var recording = '';
var recordingUrl = '';
var playBackUrl = '';
// get button elements
var record = $('#record');
var play = $('#play');
// define functions
function startRecording() {
recording = 'temp.wav';
recordingUrl = 'http://localhost/temp/wami/test/save_file.php?filename=' + recording;
Wami.startRecording(recordingUrl);
// update button attributes
record
.html('Stop')
.unbind()
.click(function() {
stopRecording();
});
}
function stopRecording() {
Wami.stopRecording();
// get the recording for playback
playBackUrl = 'http://localhost/temp/wami/test/' + recording;
// update button attributes
record
.html('Record')
.unbind()
.click(function() {
startRecording();
});
}
function startPlaying() {
Wami.startPlaying(playBackUrl);
// update button attributes
play
.html('Stop')
.unbind()
.click(function() {
stopPlaying();
});
}
function stopPlaying() {
Wami.stopPlaying();
// update button attributes
play
.html('Play')
.unbind()
.click(function() {
startPlaying();
});
}
// add initial click functions
record.click(function() {
startRecording();
});
play.click(function() {
startPlaying();
});
</script>
</html>
save_file.php
<?php
/* save_file.php */
// get the filename
parse_str($_SERVER['QUERY_STRING'], $params);
$file = isset($params['filename']) ? $params['filename'] : 'temp.wav';
// save the recorded audio to that file
$content = file_get_contents('php://input');
$fh = fopen($file, 'w') or die("can't open file");
fwrite($fh, $content);
fclose($fh);
Это должно это сделать. К сожалению, нет способа сделать паузу, а затем возобновить запись. Каждый раз, когда вы начинаете его записывать, перезаписывает предыдущий звук. Также не кажется способом получить информацию об аудиофайле (например, длина, размер). См. Файл регистратора WAMI (Recorder.js) для полного списка функций регистратора.