Как на самом деле реализован Wami Recorder? - PullRequest
9 голосов
/ 20 февраля 2012

Я очень новичок в Wami Recorder, и я вообще никогда не работал с Flash, так что это может быть глупым вопросом.

В принципе, как можно реализовать Wami Recorder? Я видел его на веб-сайте, и он прекрасно работает там, но когда я загружаю его и пытаюсь использовать его в localhost как часть Xampp, он не работает.

Если бы кто-то мог написать ответ на Wami Recorder for Dummies, это было бы здорово.

Я использую это в CakePHP 2.0, если кто-нибудь особенно знает, как использовать его в этих рамках.

По сути, все, что я пытаюсь сделать, - это записывать аудио, сохранять файл в каталоге и иметь информацию POST, чтобы иметь возможность сохранять определенные сведения о файле в базе данных.

1 Ответ

14 голосов
/ 17 марта 2012

Да, документация не очень понятна.Я провел весь день вчера, выясняя это.Вот простая реализация, которая работает на моей локальной машине.Следующие файлы хранятся в корне моего документа Apache в «/ temp / wami / test», поэтому URL-адрес «http://localhost/temp/wami/test/":

index.html»recorder.jssave_file.phpWami.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) для полного списка функций рекордера.

...