Kurento WebRTC 无法录制视频

7
我正在尝试使用Kurento Media Server和nodejs录制视频。我一直在运行hello-world示例,链接在这里。我将recorderEndpoint连接到webrtcEndpoint,并成功运行了整个过程,但是服务器上出现了以下错误信息:
0:37:59.122469563 7003 0xaf5500 ERROR KurentoMediaPipelineImpl /build/buildd/kms-core-5.0.3/src/server/implementation/objects/MediaPipelineImpl.cpp:32:busMessage: Error on bus: error message: 0x7f11c0330ea0, time 99:99:99.999999999, seq-num 514729, element 'kmsrecorderendpoint10', GstMessageError, gerror=(GError)NULL, debug=(string)"/build/buildd/kms-elements-5.0.3/src/gst-plugins/kmsrecorderendpoint.c(876):\ sink_required_cb\ ():\ /GstPipeline:pipeline8/KmsRecorderEndpoint:kmsrecorderendpoint10";
我不认为它正常录制,但我不确定出了什么问题。我能够运行原始的示例,所以服务器没问题。
代码在这里:https://gist.github.com/poliu2s/2cd3fc2a5dc929062481
1个回答

12
你需要在代码运行之前修复几个问题。我已经创建了你代码的一个 fork,并添加了一些修改,这些修改需要包含在内才能记录WebRTC流。fork 在 这里 。另外,让我给你提供一些评论:
  1. 你选择的示例('Hello World')无法停止(GUI 中没有“停止”按钮)。因此,你将无法停止录制。你应该使用更高级的示例,具有“开始”和“停止”按钮,以便可以停止录制,并能够访问存储的媒体并查看它。可能应该更好地使用Magic Mirror 教程作为你的起点,因为它使用 WebSockets 进行信令,并使你能够停止录制。
  2. 你应该避免竞争条件。在你的代码中,你正在使用一个 'recorderEndpoint' 变量,它具有竞争条件,因为它在回调中初始化并在不同的回调上使用,这两个回调都是并行执行的,并且都可能存在竞争条件。

编辑:实际上,该示例确实有一个“停止”按钮,按下该按钮会释放管道并停止录制。因此,评论 1 并不适用。


感谢您的精彩评论!我已经尝试过了,它可以正常工作。Hello-world示例也有一个“停止”按钮,它可以停止回环,但是它是否也会停止录音呢? - poliu2s
是的,你说得对。我没有注意到它有一个停止按钮。它会释放管道,并且录制也会停止。所以你可以安全地使用那个例子。 - lulop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接