Newer
Older
urbanLifeline_YanAn / src / views / voice / lamejs / worker-example / mic.html
@zhangqy zhangqy on 3 Oct 3 KB first commit
<html>
<head>
    <title>Lame.js Upload Example</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
</head>

<body style="padding-top: 30px">
<div class="container">
    <div class="row">
        <div class="col-sm-8 col-sm-offset-2 text-center">
            <div>
                <h3 class="text-center" id="timer"></h3>
            </div>
            <button class="btn btn-primary" id="startBtn">
                <i class="glyhphicon glyhphicon-record"></i> Start
            </button>

            <button class="btn btn-primary" id="stopBtn" disabled="true">
                <i class="glyhphicon glyhphicon-stop"></i> Stop
            </button>

            <ol class="convertedList"></ol>

        </div>
    </div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="mic.js"></script>
<script>
    //on document ready
    $(function () {
        var recorder = new MP3Recorder({
            bitRate: 128
        }), timer;


        $('#startBtn').on('click', function (e) {
            e.preventDefault();
            var btn = $(this);
            recorder.start(function () {
                //start timer,
                var seconds = 0, updateTimer = function(){
                    $('#timer').text(seconds < 10 ? '0' + seconds : seconds);
                };
                timer = setInterval(function () {
                    seconds++;
                    updateTimer();
                }, 1000);
                updateTimer();
                //disable start button
                btn.attr('disabled', true);
                $('#stopBtn').removeAttr('disabled');
            }, function () {
                alert('We could not make use of your microphone at the moment');
            });
        });


        $('#stopBtn').on('click', function (e) {
            e.preventDefault();
            recorder.stop();
            $(this).attr('disabled', true);
            $('#startBtn').removeAttr('disabled');
            //get MP3
            clearInterval(timer);
            recorder.getMp3Blob(function (blob) {
                //var blobUrl = window.URL.createObjectURL(blob);
                blobToDataURL(blob, function(url){
                    $('ol.convertedList')
                            .append('<li><strong> recording_' +
                            (new Date()) +
                            '_.mp3</strong><br/>' +
                            '<audio controls src="' + url + '"></audio>' +
                            '</li>');
                });
            }, function (e) {
                alert('We could not retrieve your message');
                console.log(e);
            });
        });

        function blobToDataURL(blob, callback) {
            var a = new FileReader();
            a.onload = function (e) {
                callback(e.target.result);
            }
            a.readAsDataURL(blob);
        }

    });
</script>
</body>

</html>