2012-02-20 9 views
9

Soy muy nuevo en la grabadora de Wami, y nunca he trabajado con Flash, por lo que esta puede ser una pregunta tonta.¿Cómo se implementa realmente la grabadora Wami?

Básicamente, ¿cómo se hace para implementar la grabadora Wami? Lo he visto en el sitio web, y funciona muy bien allí, pero cuando lo descargo y trato de usarlo en localhost como parte de Xampp, no funciona.

Si alguien pudiera escribir una respuesta de Wami Recorder for Dummies, sería totalmente increíble.

Estoy usando esto en CakePHP 2.0 si alguien sabe especialmente cómo usarlo dentro de ese marco.

Básicamente, lo único que trato de hacer es grabar audio, guardar el archivo en un directorio y tener información POST para poder guardar ciertos detalles sobre el archivo en una base de datos.

Respuesta

15

Sí, la documentación no es muy clara. Pasé toda la tarde ayer averiguando. Aquí hay una implementación simple que funciona en mi máquina local. Los siguientes archivos se almacenan bajo mi raíz de documentos de Apache en "/ temp/wami/test", por lo que la URL es "http: // localhost/temp/wami/test /":

index.html
grabadora. 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); 

Eso debería hacerlo. Desafortunadamente, no parece haber una forma de pausar y luego reanudar la grabación. Cada vez que comienza a grabar, sobrescribe el audio anterior. Tampoco parece haber una manera de recuperar información sobre el archivo de audio (por ejemplo, longitud, tamaño). Consulte el archivo de la grabadora Wami (recorder.js) para obtener una lista completa de las funciones de la grabadora.

+0

Muchas gracias !!!! –

+0

iba a tirar la respuesta sin embargo, no obtuve la función de grabación – ronan

+0

¡Gracias, trabajado como un encanto! Asegúrese de que el directorio en el que desea guardar el archivo pueda escribirse :-) –