javascript - Kurento 媒体服务器在没有音频的情况下进行录制无法正常工作

标签 javascript getusermedia kurento mediastream

我尝试了 Kurento 媒体服务器的以下演示:

https://github.com/Kurento/kurento-tutorial-js/tree/master/kurento-recorder

默认演示运行良好。但是,当我更改 index.js 以使用 audio: false 进行录制时,我开始遇到问题。

我仅在 index.js 代码中进行了以下更改:

var mediaConstraints = {
  audio: false,
  video: {
    width: 320,
    framerate: 15
  }   
};

var options = {
  localVideo: videoInput,
  remoteVideo: videoOutput,
  mediaConstraints: mediaConstraints      
};

如果我使用 audio: true 运行代码,则在服务器上创建的录音文件是正确的。

但是,使用 audio: false 时,录音文件的大小始终为 0KB

我在日志中没有看到任何特别的内容。唯一的错误日志是在按下“停止”按钮时出现的。它的行为就像已按下“停止”按钮,尽管实际上并未按下。

详细日志放在这里:https://pastebin.com/397U14uG

我确信某些流正在传入服务器,因为我的服务器确实使用 ifstat 命令显示数据传输。

Kurento版本

root@ip-10-0-0-49:/var/log/kurento-media-server# kurento-media-server -v
libdc1394 error: Failed to initialize libdc1394
Version: 6.6.2
Found modules:
        Module: 'core' version '6.6.3'
        Module: 'elements' version '6.6.3'
        Module: 'filters' version '6.6.2'

Ubuntu版本

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty

最佳答案

recorderEndpoint 对象有一个 mediaProfile 属性,表示它正在等待记录哪种数据。默认情况下,它将是 WEBM 音频和视频。当您的媒体限制删除来自客户端的音频时,它将使 recorderEndpoint 等待音频流开始录制,并且由于它永远不会到来,因此文件将保持在 0kb。处理这个问题的正确方法是修改line 112中记录器端点的创建像这样的事情:

{type: 'RecorderEndpoint', params: {uri : args.file_uri, mediaProfile: 'WEBM_VIDEO_ONLY'}},

供引用:

关于javascript - Kurento 媒体服务器在没有音频的情况下进行录制无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264130/

相关文章:

javascript - 每秒使用 XMLHttpRequest 与使用 Web 套接字的可行性?

javascript - Eloquent Javascript - 相关性和系数

javascript - 如何从 getusermedia 中的 firefox 和 chrome 中删除音频视频通话图标

webrtc - 我使用的是哪个 ICE 候选人,为什么?

javascript - 如何使用预定义命令在 Chrome 中打开网站

javascript - 如何通过 coldfusion 或 javascript 查找浏览器是否支持 flash 播放器?

javascript - 如何使用 getUserMedia 流中的数据更新 Angular 绑定(bind)?

javascript - WebcamToy 如何在 getUserMedia() 网络摄像头视频上获得奇怪的效果?

Kurento Docker : Failed to connect to 127. 0.0.1 端口 8888:连接被拒绝

javascript - 将WebRTC流转发到rtmp服务器