Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

0 votes


Ich erhalte immer wenn ich die Frageart 'AudioRecorder' neu erstelle oder auch nur ändern möchte die Fehlermeldung wie in Bild 1. (Unabhängig vom Browser)


Wenn ich dann den Fragebogen testen möchte kann ich weder Start noch Stop drücken (Bild 2)

Wie kann ich den Fehler beheben? Ich glaube nicht, dass es am Code liegt, weil ich diese Meldung auch mit unverändertem HTML-Code erhalte.
Aber hier mal mein überarbeiteter HTML-Code:

 <!-- Buttons -->
<div style="margin: 2em 0 0.5em">
  <button id="btnStart" type="button" tabindex="50" onclick="dispRec(); timerStart();" > START </button>
  <button id="btnStop" type="button" tabindex="50" onclick="hideRec(); timerStop()" > STOP </button>
</div>

<div style="margin: 0.5em 0" id="audioReload">Please reload this page (<a href="javascript:SoSciTools.reloadPage()">Reload</a>) and allow the page to access you audio device.</div>

<div> <canvas width="500" height="50" id="meter"  style="display: none ;"> </canvas> </div>
<div> Recording time: <span id="time" > 0  </span> seconds</div>


<!-- Audio recorder from https://github.com/muaz-khan/RecordRTC -->
<script src="../plugins/RecordRTC/RecordRTC.min.js"></script>
<script src="../plugins/RecordRTC/gumadapter.js"></script>
<script src="https://webaudiodemos.appspot.com/volume-meter/volume-meter.js"></script>
<script src="https://webaudiodemos.appspot.com/volume-meter/main.js"></script> 


<script type="text/javascript">

var canvasRec = document.getElementById('meter');

function dispRec(){
canvasRec.style.display="block";
}

function hideRec(){
canvasRec.style.display="none";
} 

</script>

<script type="text/javascript">

var timeElapsed = 0;
            var timerID = -1;
            function tick() {
                timeElapsed++
                document.getElementById("time").innerHTML = timeElapsed;
            }

            function timerStart() {
                if(timerID == -1){
                    timerID = setInterval(tick, 1000);
                }
            }

            function timerStop() {
                if(timerID != -1){
                    clearInterval(timerID)
                    timerID = -1
                }
            }

</script> 

 
<script type="text/javascript">
<!--
"use strict";

if ((webrtcDetectedVersion === null) || (webrtcDetectedVersion < webrtcMinimumVersion)) {
  alert("Your browser does not support audio recording.");
  throw new Error("no audio support");
}

var buttonStart = document.getElementById("btnStart");
var buttonStop = document.getElementById("btnStop");
var recordRTC;

function startRecording(button) {
  if (recordRTC) {
    recordRTC.startRecording();
    buttonStart.disabled = true;
    buttonStop.disabled = false;
  }
}

function stopRecording(button) {
  if (recordRTC) {
    recordRTC.stopRecording(onStop);
    // You may want to change this to allow a new try (replacing the old one)
    buttonStart.disabled = false;
    buttonStop.disabled = true;
  }
}

function onStop(audioURL) {
    var recordedBlob = recordRTC.getBlob();
    // Transfer the data
    %q.id%.sendBLOB(recordedBlob);
}

function onStream(stream) {
    var options = {
        mimeType: "audio/ogg",
        audioBitsPerSecond: 128000
    };
    recordRTC = new RecordRTC(stream, options);
    // Enable the start button
    buttonStart.disabled = false;
    // Remove warning
    document.getElementById("audioReload").style.display = "none";
}

function init() {
    buttonStart.disabled = true;
    buttonStop.disabled = true;

    var mediaConstraints = {
        video: false,
        audio: true
    };

    function onError(error) {
      alert("Your computer or browser currently does not support recording audio." + "\n\n" + error);
    }
    navigator.mediaDevices.getUserMedia(mediaConstraints).then(onStream).catch(onError);
};

SoSciTools.attachEvent(window, "load", init);
SoSciTools.attachEvent(buttonStart, "click", startRecording);
SoSciTools.attachEvent(buttonStop, "click", stopRecording);

// -->
</script>

Freue mich schon auf eine Rückmeldung!
Vielen Dank.

in SoSci Survey (dt.) by s129756 (110 points)
Hallo, was haben Sie geändert? Bei mir taucht derselbe Fehler auf

3 Answers

0 votes

Die Fehlermweldung erscheint, wenn die Frage beim Browser den Wunsch zum Zugriff auf das Mikrofon äußert - der Browser zeigt dann normalerweise eine entsprechende Aufforderung - und Sie das nicht erlauben.

Eventuell haben Sie auch irgendwann ein Häkchen "Entscheidung merken" gesetzt, sodass der Browser Sie gar nicht mehr fragt. Dies kann man im Browser bei den seitenspezifischen Einstellungen rückgängig machen. Wo die im jeweiligen Browser zu finden sind, verrät die Suchmaschine des Vertrauens.

Ebenfalls denkbar, dass Sie kein Mikrofon am Computer angeschlossen haben oder dieses generell nicht für den Browser freigegeben ist (Windows-Einstellungen -> Datenschutz).

Warum diese Meldung auch beim Bearbeiten der Frage erscheint? Weil die Vorschau unten sich auch an einer Tonaufnahme versucht. Der Start-Knopf kann dann natürlich erst aktiviert werden, wenn das Script vom Browser Zugriff auf das Mikrofon erhalten hat.

by SoSci Survey (233k points)
Leider ist das nicht das Problem. Ich habe sämtliche Berechtigungen des Mikrofons erteilt und sogar die Einstellungen zurückgesetzt und habe mich dann erst mit der Frage an den Support gewandt, weil diese einfachen Schritte nicht zur Lösung des Problems geführt haben.
Posten Sie gerne einmal einen Pretest-Link direkt (!) zur betroffenen Seite im Fragebogen.
https://www.soscisurvey.de/MAmultilingualism/?act=xtuH7GsOvZyYldTiSbP4L418
Link direkt zur betroffenen Seite
(Habe ihn auch ausprobiert, Mikrofon ist aktiviert, kann aber nicht Start klicken)
Ich habe in einer separaten Antwort geantwortet, um auch Screenshots einzubinden.
0 votes

Danke für den Pretest-Link. In Firefox unter Windows 10 wird zunächst nach der Berechtigung gefragt:

Und anschließend wird auch der "Start" Knopf aktiviert:

Ich muss deshalb davon ausgehen, dass die Funktion prinzipiell funktioniert.

Sie können auf der Website des verwendeten Audio Recorders (https://www.webrtc-experiment.com/RecordRTC/simple-demos/) einmal testen, ob Ihre Browser dort Audio aufzeichnen kann.

by SoSci Survey (233k points)
Vielen Dank für die Mühe. Ich habe jetzt selbst schon eine Lösung gefunden, indem ich den HTML-Code abgeändert habe. So kommt zwar immer noch die Fehlermeldung beim Erstellen der Frage, aber beim Testen immerhin nicht mehr und die Aufnahme ist dann möglich.
Was haben Sie denn geändert? Womöglich stolpern künftig auch andere über dasselbe Problem...
Ich habe das gleiche Problem, aber ich bin leider nicht so IT-affin, dass ich einen HTML-Code umschreibe. Hängt das auch mit dem MacBook zusammen. Verzeihen Sie bitte diese banale Frage :-)
0 votes

ich habe den Fehler gefunden. Es darf immer nur eine Aufnahme pro Seite sein. Ansonsten taucht der Fehler auf

by s187824 (120 points)
Danke für den Hinweis. Damit man mehrere Aufzeichnungen pro Seite verwenden kann, müsste der JavaScript-Code wohl umgeschrieben werden. Insbesondere müssten die Variablennamen in eine Funktion gekapselt werden, wie z.B. für dynamische Filter hier beschrieben: https://www.soscisurvey.de/help/doku.php/de:create:dynamic#beispiel_1bmehrere_gleichartige_fragen
...