2014-10-05 20 views
5

Sto provando a registrare video utilizzando Kurento Media Server con nodejs. Ho eseguito l'esempio ciao-mondo here. Ho collegato un recorderEndpoint al webrtcEndpoint e stato in grado di ottenere il tutto in esecuzione, ma ricevo questo messaggio di errore sul server:Kurento WebRTC che non registra

0: 37: 59,122,469563 millions 7003 0xaf5500 ERRORE KurentoMediaPipelineImpl/build/buildd/km-core- 5.0.3/src/server/implementation/objects/MediaPipelineImpl.cpp: 32: busMessage: errore sul bus: messaggio di errore: 0x7f11c0330ea0, ora 99: 99: 99.999999999, seq-num 514729, elemento 'kmsrecorderendpoint10', GstMessageError, gerror = (GError) NULL, debug = (stringa) "/ build/buildd/kms-elements-5.0.3/src/gst-plugins/kmsrecorderendpoint.c (876): \ sink_required_cb \(): \/GstPipeline: pipeline8/KmsRecorderEndpoint : kmsrecorderendpoint10" ;

Non credo che la registrazione sia corretta, ma non sono sicuro di cosa non funzioni. Sono stato in grado di eseguire l'esempio originale in modo che il server stia bene.

Codice qui:

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

risposta

12

È necessario risolvere diversi problemi prima di avere il codice funziona correttamente. Ho creato un fork del tuo codice e ho aggiunto alcune modifiche che dovresti includere per poter registrare il flusso WebRTC. La forcella è here. Inoltre, vorrei fornirvi alcuni commenti:

  1. L'esempio che avete scelto ('Hello World') non può essere fermato (non ha un pulsante 'stop' nella GUI). Quindi, non sarà possibile interrompere la registrazione. Dovresti utilizzare un esempio più avanzato con i pulsanti "start" e "stop" in modo che tu possa interrompere la registrazione per poter accedere al supporto memorizzato e visualizzarlo. Probabilmente dovresti usare meglio il Magic Mirror Tutorial come punto di riferimento perché utilizza WebSockets per la segnalazione e ti consente di interrompere la registrazione.
  2. È necessario evitare le condizioni di gara. Nel tuo codice, stai utilizzando un rarityble 'RecordEndpoint' che ha una condizione di competizione perché è inizializzato in un callback e utilizzato su un callback diverso, essendo entrambi i callback in esecuzione in paralell ed entrambi sono soggetti ad avere condizioni di gara.

Modifica: l'esempio ha un pulsante di arresto che, se premuto, rilascia la pipeline e, con ciò, interrompe la registrazione. Quindi, il commento 1 non è realmente applicabile.

+0

Grazie per i fantastici commenti! Provato e funziona. L'esempio ciao-mondo ha anche un pulsante "stop" che arresta il loopback, non ferma anche la registrazione? – poliu2s

+0

Sì, hai ragione. Non ho notato che ha un pulsante di arresto. Sta rilasciando la pipeline e, con questo, anche la registrazione si ferma. Quindi puoi usare quell'esempio in modo sicuro. – lulop