如何使用WebRTC和基于服务器的对等连接记录摄像头和音频?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (3)
  • 关注 (0)
  • 查看 (312)

我想记录用户的网络摄像机和音频,并将其保存到服务器上的文件。这些文件然后可以被提供给其他用户。

我在回放时没有问题,但是我无法记录内容。

我的理解是,getUserMedia .record()函数尚未写入 - 迄今为止只有一个提议。

我想使用PeerConnectionAPI在我的服务器上创建一个对等连接。我知道这有点不好意思,但我认为应该有可能在服务器上创建一个对等点并记录客户对等点发送的内容。

如果这是可能的,我应该能够将这些数据保存为flv或任何其他视频格式。

我的偏好实际上是录制网络摄像头+音频客户端,以允许客户重新录制视频,如果他们不喜欢上传之前的第一次尝试。这也会导致网络连接中断。我看过一些代码,它允许通过将数据发送到画布来记录网络摄像头中的单个“图像” - 这很酷,但我也需要音频。

这是我迄今为止的客户端代码:

  <video autoplay></video>

<script language="javascript" type="text/javascript">
function onVideoFail(e) {
    console.log('webcam fail!', e);
  };

function hasGetUserMedia() {
  // Note: Opera is unprefixed.
  return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia || navigator.msGetUserMedia);
}

if (hasGetUserMedia()) {
  // Good to go!
} else {
  alert('getUserMedia() is not supported in your browser');
}

window.URL = window.URL || window.webkitURL;
navigator.getUserMedia  = navigator.getUserMedia || navigator.webkitGetUserMedia ||
                          navigator.mozGetUserMedia || navigator.msGetUserMedia;

var video = document.querySelector('video');
var streamRecorder;
var webcamstream;

if (navigator.getUserMedia) {
  navigator.getUserMedia({audio: true, video: true}, function(stream) {
    video.src = window.URL.createObjectURL(stream);
    webcamstream = stream;
//  streamrecorder = webcamstream.record();
  }, onVideoFail);
} else {
    alert ('failed');
}

function startRecording() {
    streamRecorder = webcamstream.record();
    setTimeout(stopRecording, 10000);
}
function stopRecording() {
    streamRecorder.getRecordedData(postVideoToServer);
}
function postVideoToServer(videoblob) {
/*  var x = new XMLHttpRequest();
    x.open('POST', 'uploadMessage');
    x.send(videoblob);
*/
    var data = {};
    data.video = videoblob;
    data.metadata = 'test metadata';
    data.action = "upload_video";
    jQuery.post("http://www.foundthru.co.uk/uploadvideo.php", data, onUploadSuccess);
}
function onUploadSuccess() {
    alert ('video uploaded');
}

</script>

<div id="webcamcontrols">
    <a class="recordbutton" href="javascript:startRecording();">RECORD</a>
</div>
提问于
用户回答回答于

热门问答

springboot项目启动报错找不到ConfigurationPropertiesBean?

添加依赖:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-context/2.2.0.RELEASE <!-- https://mvnrepository.com/artifac...... 展开详请

使用jenkins配合命令进行加固,在加固过程中提示40171,起码50%的概率出现?

whileideath

腾讯 · 运营开发工程师 (已认证)

web互助开发群:953701926,禁止广告,招聘行为。
推荐
内部返回数据解析失败(查毒) 指的是在apk进行加固之前会进行病毒检测,如果检测出现病毒,违法等应用将拒绝加固。 目前是该引擎存在故障。 ... 展开详请

腾讯加固助手不能下载了吗?下载地址在哪里?MAC可以下载吗?我看只能在网页上加固,自己签名。?

腾讯云@移动安全

腾讯 · 移动开发工程师 (已认证)

腾讯云移动安全前端开发
推荐

乐固客户端已下线,可以使用移动应用在线加固https://console.cloud.tencent.com/ms/reinforce/list

可以自行签名打渠道包。

腾讯云物联网设备端 C-SDK中coap sample运行失败getaddrinfo error?

DylanRichard

腾讯 · 产品经理 (已认证)

万物互联的时代,欢迎来到IoT的世界
推荐已采纳

用coap必须打开TLS,现在云端只支持DTLS的coap连接

节点数量如何计算?

吴楠NancyWU

腾讯云 · 高级产品经理 (已认证)

腾讯云区块链产品经理,与区块链一同成长,欢迎交流
推荐

建议网络测试可使用一个组1个节点配置,根据组织多少来定测试规模;企业应用以1个组织2个节点为基础起步,保持组织内的高可用,节点数量扩展根据组织数量和交易使用量增加,一个区块链网络内建议最多不超过100个节点。谢谢您的提问

关于云直播的几个问题,望大佬解惑?

学生路人
推荐

1 海外单独计费

2 地址都是自己算的 可以变也可以不变

3 这个接口是拉流转推的 ,和播放不是一个东西哈 。

所属标签

扫码关注云+社区

领取腾讯云代金券