2014-10-05 9 views
5

Ich versuche Video aufzunehmen mit dem Kurento Media Server mit nodejs. Ich habe Hallo-Welt Beispiel here ausgeführt. Ich verbinden eine recorderEndpoint zum webrtcEndpoint und war in der Lage, die ganze Sache zum Laufen zu bringen, aber ich erhalte diese Fehlermeldung auf dem Server:Kurento WebRTC nicht aufzeichnen

0: 37: 59,122469563 7003 0xaf5500 ERROR KurentoMediaPipelineImpl/build/buildd/km-Core- 5.0.3/src/server/implementation/objects/MediaPipelineImpl.cpp: 32: busMessage: Fehler am Bus: Fehlermeldung: 0x7f11c0330ea0, Uhrzeit 99: 99: 99.999999999, seq-num 514729, Element 'kmsrecorderendpoint10', GstMessageError, gerror = (GError) NULL, debug = (Zeichenfolge) "/ build/buildd/kms-Elemente-5.0.3/src/gst-plugins/kmsrecoderendpoint.c (876): \ sink_required_cb \(): \/GstPipeline: pipeline8/KmsRecorderEndpoint : kmsrecorderendpoint10 ";

Ich denke nicht, seine Aufnahme richtig, aber ich bin mir nicht sicher, was los ist. Ich konnte das ursprüngliche Beispiel ausführen, damit der Server in Ordnung ist.

-Code hier:

https://gist.github.com/poliu2s/2cd3fc2a5dc929062481

Antwort

12

Sie müssen mehrere Probleme beheben, bevor Sie den Code richtig ausgeführt hat. Ich habe eine Verzweigung Ihres Codes erstellt und einige Änderungen hinzugefügt, die Sie für die Aufzeichnung des WebRTC-Streams benötigen. Die Gabel ist here. Lassen Sie mich dazu noch einige Kommentare geben:

  • Das Beispiel, das Sie gewählt haben (die 'Hallo Welt') kann nicht gestoppt werden (es hat keine 'Stop'-Schaltfläche in der GUI). Daher können Sie die Aufnahme nicht stoppen. Sie sollten ein fortgeschritteneres Beispiel mit den Schaltflächen "Start" und "Stop" verwenden, damit Sie die Aufzeichnung anhalten können, um auf die gespeicherten Medien zugreifen und sie anzeigen zu können. Wahrscheinlich sollten Sie besser den Magic Mirror Tutorial als Ihren Ausgangspunkt verwenden, da er WebSockets für die Signalisierung verwendet und Sie die Aufzeichnung stoppen können.
  • Sie sollten Rennbedingungen vermeiden. In Ihrem Code verwenden Sie eine 'Rekorderendpunkt'-Raribile, die eine Racebedingung hat, da sie in einem Callback initialisiert und für einen anderen Callback verwendet wird, da beide Callbacks parallel ausgeführt werden und beide Race-Bedingungen unterliegen.
  • Bearbeiten: Das Beispiel hat in der Tat eine Stopptaste, die beim Drücken die Pipeline freigibt und damit die Aufzeichnung stoppt. Daher ist Kommentar 1 auch nicht wirklich anwendbar.

    +0

    Danke für die tollen Kommentare! Versuchte es und es funktioniert. Das Hello-World-Beispiel hat auch einen "Stop" -Knopf, der das Loopback stoppt, stoppt es nicht auch die Aufnahme? – poliu2s

    +0

    Ja, Sie haben Recht. Ich habe nicht bemerkt, dass es einen Stop-Button hat. Es gibt die Pipeline frei und damit hört auch die Aufzeichnung auf. So können Sie dieses Beispiel sicher verwenden. – lulop

    Verwandte Themen