This commit is contained in:
yumoqing 2024-02-02 14:05:26 +08:00
parent 19354afc4e
commit ca905937cf
4 changed files with 28 additions and 13 deletions

View File

@ -50,17 +50,22 @@ bricks.AudioPlayer = class oops extends bricks.JsWidget {
bricks.AudioRecorder = class oops extends bricks.HBox {
/*
we need this module:
https://gitee.com/xiangyuecn/Recorder
events:
record_started
record_finished wavdata
realtime record wave show need a another package
we only use the wav file format
*/
constructor(opts){
super(opts);
this.start_icon = opts.start_icon || bricks_resource('imgs/start_recording.png');
this.stop_icon = opts.stop_icon || bricks_resource('imgs/stop_recording.png');
this.rec_btn = new bricks.Icon({url:this.start_icon });
this.player = new bricks.AudioPlayer({url:"",width:'80px'});
this.rec_time = new bricks.Text({text:"", i18n:false, width:'120px'});
// this.player = new bricks.AudioPlayer({url:"",width:'80px'});
this.rec_time = new bricks.Text({text:" record time", i18n:false, wrap:false, width:'120px'});
this.upload_url = opts.upload_url;
this.rec_btn.bind('click', this.rec_btn_pressed.bind(this))
this.URL = window.URL||webkitURL;
this.rec = null;
@ -68,8 +73,9 @@ bricks.AudioRecorder = class oops extends bricks.HBox {
this.mic_opened = false;
this.add_widget(this.rec_btn);
this.add_widget(this.rec_time);
this.add_widget(this.player);
// this.add_widget(this.player);
this.recordData = null;
this.bind('record_finished', this.upload.bind(this));
}
rec_btn_pressed(){
console.log(this.rec_btn.url, ':url:', this.start_icon, this.stop_icon);
@ -88,8 +94,7 @@ bricks.AudioRecorder = class oops extends bricks.HBox {
// document.querySelector(".recpowerx").style.width=powerLevel+"%";
//可视化图形绘制
// wave.input(buffers[buffers.length-1],powerLevel,bufferSampleRate);
this.rec_time.text = formatMs(bufferDuration,1);
console.log(this.rec_time.text);
this.rec_time.set_text(' ' + formatMs(bufferDuration,1));
}
recOpen(){
@ -114,6 +119,8 @@ bricks.AudioRecorder = class oops extends bricks.HBox {
recClose(){
if(this.rec){
this.rec.close();
this.rec = null;
this.mic_opened = false;
}else{
console.log('close recorder error');
};
@ -159,26 +166,31 @@ bricks.AudioRecorder = class oops extends bricks.HBox {
duration:duration
}
this.recordData = d;
this.player.set_source(this.recordData.url);
// this.player.set_source(this.recordData.url);
this.dispatch('record_finished', d);
}.bind(this),function(msg){
console.log("kGZO::录音失败:");
});
}
async upload(){
upload = async function(){
if(!this.recordData){
console.log("DUTn::请先录音,然后停止后再上传");
return;
};
var blob=this.recordData.blob;
if(!this.upload_url){
return;
}
var blob=this.recordData.data;
console.log('blob=', blob, this.recordData);
var form=new FormData();
form.append("audiofile",blob,"recorder.wav");
var hj = HttpJson()
var ret = await hj.post(this.upload_url,{
var jpost = bricks.jpost
var ret = await jpost(this.upload_url,{
params:form
});
console.log('ret=', ret);
this.recClose();
this.dispatch('updated', ret)
}
download(){

View File

@ -121,7 +121,7 @@ bricks.buildBind = function(w, desc){
return;
}
var event = desc.event;
buildEventBind(w, widget, event, desc);
bricks.buildEventBind(w, widget, event, desc);
}
bricks.buildEventBind = function(from_widget, widget, event, desc){

View File

@ -8,7 +8,7 @@ SOURCES=" factory.js uitypesdef.js utils.js i18n.js widget.js \
miniform.js wterm.js "
echo ${SOURCES}
cat ${SOURCES} > ../dist/bricks.js
uglifyjs --compress --mangle -- ../dist/bricks.js > ../dist/bricks.min.js
# uglifyjs --compress --mangle -- ../dist/bricks.js > ../dist/bricks.min.js
if [ ! -d ../dist/css ];then
rm -rf ../dist/css
mkdir ../dist/css

View File

@ -239,7 +239,10 @@ bricks.TextBase = class extends bricks.JsWidget {
if (! this.i18n){
return;
}
this.text = this._i18n._(this.otext);
this.set_text(this.otext);
}
set_text(text){
this.text = text;
this.dom_element.innerHTML = this.text;
}