Ergebnis 1 bis 6 von 6
  1. #1
    Avatar von xorg1990
    xorg1990 ist offline Haudegen
    registriert
    20-12-2013
    Beiträge
    666

    Gibt es ein blob size Limit?

    Hi,
    kann es sein das die blobs in JS ein bestimmte Size Limitierung haben?
    weil Filesaver feuert kein download.
    Ist die Datei kleiner geht es.

    Wollte JSON.stringify Objekte abspeichern aber die blob size ist immer 256?
    Das Objekt ist ein Array mit Samples, c.a. 2646000 Elemente^^

    Fehlermeldung kommt keine.

  2. #2
    zirzofer Guest

    AW: Gibt es ein blob size Limit?


  3. #3
    Avatar von xorg1990
    xorg1990 ist offline Haudegen
    registriert
    20-12-2013
    Beiträge
    666

    AW: Gibt es ein blob size Limit?

    Ei, Ja die Table hab ich gesehen aber nicht so beachtet aber 500MiB erreiche ich niemals.
    Das Problem liegt anderswo, habe die Samples jetzt in eine wav Datei umgewandelt. Aber von 4 Makros(wav Dateien) wird nur ein Download gefeuert.
    Die Makros sind in der IndexDB gespeichert, das ich die gleich beim neuladen habe.
    Ich kann die Makros ohne Probleme abrufen aber wenn ich durch die Datenbank durch iteriere, 100% cpu last last, RAM steigt ins nivana.
    Für 'ne Wav Datei von 1sec ist das heftig.

    Morgen mach ich mal ein link zu Seite.

    Hier aus Spaß mal die Funktion. Selbst "saveAs(blob, "QRSSB_Settings.dat");" wird nicht gefeuert. Der callback von localforage.iterate
    wird aber ausgeführt.

    Code:
    			function exportSettings(){
    				var storeWav = document.querySelector("#includeWav").checked;
    				var obj = {};
    				obj.outVolume = outGain;
    			  	obj.inVolume = inGain;
    			  	obj.PeakFilterOffs = RX_End_dB_offset;
    			  	obj.loopDelay = loopDelay;
    			  	obj.dB_From = dB_From;
    			  	obj.dB_To = dB_To;
    			  	obj.Freq_From = Freq_From;
    			  	obj.Freq_To = Freq_To;
    			  	obj.xLabelIntevall = xinter;
    			  	obj.yLabelIntervall = yinter;
    			  	obj.FFTSize = fftlength;
    			  	obj.callsign = callsign;
    			    obj.sendCwNever = sendCwNever;
    			    obj.sendCwAfter = sendCwAfter;
    			  	obj.midiDeviceID = midiDeviceID;
    			  	obj.deletedRecIndex = deletedRecIndex;//array;
    			  	if(storeWav === true){funktio
    			  		processor.disconnect();
    			  		processor.onaudioprocess = null;
    			  		processor = null;
    			  		localforage.iterate(function(value, key) {
    			  				if(key.indexOf("rec_") !== -1){//nur bei wav Dateien 
    			  					var SR = value.fileSampleRate;
    			  					var fileName = "QRSS_"+key;
    								var encoder = new WavAudioEncoder(SR, 1);
    								encoder.encode([value.orginalRecord]);//must bei inside array[]
    								var blobWav = encoder.finish();
    								saveAs(blobWav, fileName,+".wav");
    							}
    					}, function() {//done
    							var blob = new Blob([btoa(JSON.stringify(obj))],  {type: "text/plain;charset=utf-8"});
    							saveAs(blob, "QRSSB_Settings.dat");
    							processor = (audioCtx.createScriptProcessor || audioCtx.createJavaScriptNode).call(audioCtx, 8192, 2, 1);
    							processor.onaudioprocess = audioProcess;
    							handleConnection();
    					});
    			  	}else{
    							var blob = new Blob([btoa(JSON.stringify(obj))],  {type: "text/plain;charset=utf-8"});
    							saveAs(blob, "QRSSB_Settings.dat");
    			  	}
    			}

  4. #4
    Avatar von xorg1990
    xorg1990 ist offline Haudegen
    registriert
    20-12-2013
    Beiträge
    666

    AW: Gibt es ein blob size Limit?

    So, wie angegütigt hab ich mal ein link gemacht zu meinen aktuellen Projekt . Damit mal einer eine Vorstellung hat was ich hier überhaut mache
    Soll jetzt aber kein Site check werden.
    http://qrssbtest.ddns.net:8080/

    Der Server läuft auf den Raspberry mit nodejs, aber ich denke eher kackt meine Internet Verbindung ab als die Raspe stirbt.
    Die Software verlangt nach einen Rufzeichen, das kann man austricksen in den man TET3ER oder so eingibt.

    Zum aufzeichnen ist REC Macro zu klicken und zu halten, die maximale länge beträgt 60sec.
    Dann auf Repaly Voice klicken. Wenn man meint das Aufgezeichnete ist gut dann Speichen.

    Wenn man oben rechts auf Options klickt und ein hacken macht bei "save also tx macros", und dann auf Export klickt wird die Funktion ausgeführt die ich oben geprostet habe.

    Achtung:
    Das ganze ist nicht für mobile Geräte gedacht.

    In Chrome bekommt man getusermedia nicht zum laufen da http statt https
    Gibt ein Workaround dafür aber ist mir jetzt zu doof. Unter Linux ist das in ein Satz erklärt aber windows terrible.

    Firefox geht aber wie gesagt gUM haben die zerschossen!!!!!
    Edge/opera habe ich Jetzt noch nicht getestet.

    Die Macros werden in der IndexDB gespeichert um das wider zu löschen ist "delte all tx records" zu klicken.

    Bei Klick auf TX Start/Stop , geht das gebabbel los, der Sinus Ton ist kein Fehler, das ist eine Pilotton, den hört man nur beim aussenden, der Empfänger hört den nicht. Man sieht ihn aber im Spektrum.

    Ist alles noch early access.
    Bedienungsanleitung bin ich gerade am schreiben aber ich komme einfach nicht dazu das zu beenden. Da immer wider Problem in der Software auftauchen, die auch behoben werden müssen. Ja, ein paar Menschen nutzen/testen das schon weil einfach nur genial!

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.215

    AW: Gibt es ein blob size Limit?

    Bis auf dass die wav Datei invalide ist, kann ich dein Problem nicht reproduzieren.

  6. #6
    Avatar von xorg1990
    xorg1990 ist offline Haudegen
    registriert
    20-12-2013
    Beiträge
    666

    AW: Gibt es ein blob size Limit?

    Danke das du dich der Sache angenommen hast Korbinian, hat sich aber erledigt. Das Problem besteht nur bei mir unter Linux. Unter Windows kommt ein Fenster "bblabla.de möchte mehrere Dateien downloaden.. Zulassen Ja/nein". Das kommt in Ubuntu nicht, da kommt nur ein Download.

    So zumindest Chrome.

    Die Wav Dateien sind "invalide" (VLC Palyer Spielt die trotzdem ab) richtig, habe gestern nun endlich mal herausgefunden an was das liegt.
    Die wav Dateien gehen nicht wenn man ein Mono Buffer hat, mit Stereo geht es.
    Zum encodieren nutze ich den higuma Wav Encoder https://github.com/higuma/wav-audio-encoder-js

    Was mir auch zufällig aufgefallen ist, die Samples von createBuffer bzw die die dann aus
    AudioBufferSource herauskommen sind auch nicht alle valide. Aufgefallen ist mir das als ich zwischen AudioBufferSource und Sink, bzw. audioCTX.destination eine Tiefpass machen wollte und immer nur für Random milisec was gehört habe, dann war stille. Habe dann die AudioBufferSourceNode mit den Scriptprocessor verbunden und darin die Samples mal angehen und aha einige sind "NaN".

    Meiner Meinung nach habe ich das vor Jahren schon mal exerziert, wenn man ein JS Array (nicht typed) in createBuffer setzt und im Array ein undefined ist weil, man den Array Constructor genommen hat. Dann kommt das NaN zu Stande. Am besten man Konvertiert das Array in ein Flaot32array um (was ich ja mache) aber Trotztem ist immer mal ein NaN Sample dabei.

    - - - Aktualisiert - - -

    Das 2te Problem hat sich nun auch erledigt, ich konvertiere das JS Array in ein Typed über den Constructor new Float32Array([0,0,00,]);
    Dabei ist der erste Eintrag immer NaN.
    Problem 2 war, das ich den Zeiger vom Ringbuffer falsch zurückgesetzt habe, ich habe ein Sample mit undefined Multipliziert.
    Nach der Mischung kommt aber ein FIR Filter, der hat der Sache den Rest gegeben^^

    Letzten Sonntag habe ich mal schnell ein Schema dazu hingekrakeelt wo die Sampels überhaut lang machen.
    scheme QRSSB.png
    Ist jetzt nicht besonders Hübsch reicht aber erst mal. Mittlerweile habe ich 2 A4 Seiten an Problem in der Web Audio Api gefunden und GetUserMedia.

    Ein Problem ist gerade dazu gekommen: createBuffer ist nicht besonders Verbose.

    Ein ganz großes Thema ist den Stereo Input von gUM zum laufen zu bekommen, dazu mach ich wenn es soweit ist ein separates Thema auf weil, das was die Entwickler da abziehen kann man nicht verkaufen. Die manschen den Rechten und Linken Kanal zusammen bei Default. Merkt man nicht bei einem Elektretmikrofon aber bei einem Dynamischeen Mikrofon ist dann der Horror in Gange
    Geändert von xorg1990 (18-01-2017 um 23:55 Uhr)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 08-12-2015, 18:34
  2. blob-Object lokal in Datei speichern.
    Von hisiro im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 22-12-2014, 19:55
  3. font size=(1-7) in font-size:XXem umwandeln
    Von inco im Forum CSS und (X)HTML
    Antworten: 9
    Letzter Beitrag: 20-09-2006, 14:41
  4. Shop mit Limit
    Von acesal im Forum Serverseitige Programmierung
    Antworten: 5
    Letzter Beitrag: 13-10-2002, 13:17
  5. LIMIT ohne limit
    Von Guido im Forum Serverseitige Programmierung
    Antworten: 8
    Letzter Beitrag: 28-04-2002, 13:18

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •