问题标签 [mediastream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
415 浏览

node.js - 从 MediaStream 对象转发流

我已经通过使用simple-peer API 获得了一个MediaStream 对象来创建peer-peer 连接,API -> https://github.com/feross/simple-peer 接收音频流并在其上播放的代码部分视频标签是

获得的打印语句是https://imgur.com/a/H1q4W 然后我查看了找到的 API 方法https://developer.mozilla.org/en-US/docs/Web/API/MediaStream

我正在寻求帮助以了解是否可以将流数据推送到同一台机器上的另一个端口。即,将接收到的 RTP 数据包重定向到同一台机器上的端口 x,而不是在视频标签上播放它?我不能使用套接字,因为它将穿过整个对象。我需要一种方法来不断重定向所有接收到的数据。

谢谢

0 投票
1 回答
1351 浏览

node.js - Faster MediaStream ImageCapture(在nodejs中读取媒体流作为缓冲区)

编辑:我需要现场直播。我等不及直播结束了。

MediaStream从电子得到对象desktopCapturer

我正在尝试使用以下方法获取Buffer静止帧的节点ImageCapture

但这需要很长时间takePhoto。是否有可能使该过程更快?我可以以某种方式MediaStream直接访问nodejs吗?

0 投票
1 回答
1059 浏览

javascript - 没有音频的 Kurento 媒体服务器录制不起作用

我为 Kurento 媒体服务器试用了以下演示:

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

默认演示运行良好。但是,当我将index.js记录更改为 时audio: false,我开始面临问题。

我只对index.js代码进行了以下更改:

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

但是,使用audio: false, 录制文件的大小始终0KB不变。

我在日志中没有看到任何特别之处。出现的唯一错误日志是在按下“STOP”按钮时。它的行为就像 STOP 按钮已经被按下,即使它不是。

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

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

Kurento 版本

Ubuntu版本

0 投票
1 回答
828 浏览

javascript - 在 JavaScript 中更改媒体流 ID

我正在从对等连接接收媒体流对象。本地流id好像正常;然而,远程总是有花括号围绕它。

有什么办法可以去掉这些括号(我相信里面的id是正确的)?

本地流对象的输出:

active: true
id: "60a521f7-99b5-45f7-b56b-bcdae3e6d19d"
onactive: null
onaddtrack: null
oninactive: null
onremovetrack: null

远程流对象的输出:

active: true
id: "{fee7ee3f-176e-a943-8a4c-25339dfc6ad4}"
onactive: null
onaddtrack: null
oninactive: null
onremovetrack: null

0 投票
1 回答
560 浏览

javascript - 没有 getUserMedia 的声音分析

我正在尝试分析浏览器的音频输出,但我不希望出现 getUserMedia 提示(它要求麦克风许可)。声源是 SpeechSynthesis 和 Mp3 文件。这是我的代码:

此代码工作正常,但它要求获得使用麦克风的权限!我对麦克风完全不感兴趣,我只需要测量音频输出。如果我检查所有可用设备:

我在浏览器中获得了可用设备的列表,包括“音频输出”。那么,有没有办法在媒体流中路由音频输出,然后可以在“createMediaStreamSource”函数中使用?我已经检查了音频 API 的所有文档,但找不到。感谢任何可以提供帮助的人!

0 投票
1 回答
1413 浏览

webrtc - 在android中的WebRTC对等连接中添加/删除MediaStream

我使用 libjingle:11139@aar 库在 Android 平台上构建聊天应用程序。

在许多 stackoverflow 线程中解释了从 RTCPeerConnection 动态添加/删除媒体流的问题,但它们似乎都与 JavaScript 有关。我找不到任何详细解释 Java/android 应用程序中的使用/执行顺序的线程。

我在很多地方读到,在添加媒体流之后,必须向对等方提出一个关于添加流的新 sdp。但是当一个新的 sdp 提议被创建时,当前的对等连接就丢失了。我在发起 sdp 提议的对等方中获得了 onIceConnectionChange(CLOSED)(在添加媒体流之后)。这是预期的行为吗?

另一个观察结果是,在将媒体流添加到对等连接之后,刚添加流的对等端会收到 RenogotiationNeeded() 通知。在此通知中,如果发送了 createOffer(),则 peerConnection 丢失。

非常感谢任何帮助。

0 投票
1 回答
1292 浏览

javascript - 将 desktopCapturer 从 Electron 应用程序保存到视频文件

基于电子 api这个问题,我正在尝试将记录的用户屏幕保存到根应用程序文件夹的视频文件夹中的 .webm 文件。

实际上它几乎可以工作,因为它保存 .webm 文件但保存的文件是空的,它重 0B .. 我不知道我在这里缺少什么。

示例文件为 0 字节

所以看起来它以某种方式无法正确录制,因为文件是空的..

调试时编辑我发现记录可能正常工作,因为我控制台日志的 blob 在内部具有值,在toArrayBuffer我的 blob 内部不再具有值之后。

代码是:

startRecord()函数立即执行,它也console.log按预期在点击此控制器后启动。

stopRecording()函数在 7 秒后正确执行,console.log('Saved video: ' + file);就好了。

然后我转到我刚刚创建的视频文件夹,打开我保存的example.webm文件,它是空的。

它不会在控制台中打印任何错误。


  • consoled.log(blobs)stopRecording()功能中停止记录器后,看看它是否真的是 Blob。
  • console.log(ab)在里面toArrayBuffer(new Blob(blobs, {type: 'video/webm'}), function(ab) {})回调。

安慰的东西截图

我的行为不blobs包含价值ab


我自己真的无法解决,寻找答案我用最少的复制示例创建演示存储库,只需克隆它以查看您自己的行为

0 投票
2 回答
2237 浏览

javascript - 某些浏览器/设备组合上的横向视频流

我打电话getUserMedia()来获取视频流并简单地将 设置streamsrcObject视频元素的。

特别是在 2 个不同 Windows 平板电脑上的 Chrome 上,在纵向模式下,视频是侧面的。

我在流或视频轨道对象中找不到任何方向信息,并且宽度和高度轨道信息与视频元素匹配并且与纵横比轨道信息准确。

您可以使用https://camera.stackblitz.io进行复制

如何从流中获取方向信息或逻辑旋转视频?

编辑:

我不想要设备或屏幕的方向,而是视频流的方向。也许“轮换”是正确的措辞。换句话说,我怎么知道什么时候在没有人看的情况下旋转视频?

编辑2:

“纵向模式下的 Windows 平板电脑上的 Chrome”正是我所经历的 我不知道问题是否与此无关,或者每个 Windows 平板电脑都有问题,但主要问题是我如何判断视频是横向还是旋转?

0 投票
2 回答
239 浏览

javascript - 使用网络音频 APi 选择用于音频录制的输入媒体设备

我们可以使用使用 Web 音频 API 的 enumerateDevices 在 mediastreamRecorder API 中设置应该记录音频的设备吗?

0 投票
1 回答
48 浏览

javascript - 媒体流记录存储在哪里?

我正在使用 Mediastream Recording 和 GetUserMedia 从用户的网络摄像头录制音频和视频。我找不到临时视频的存储位置。我想知道在录制大量内容时检测是否会出现存储问题,或者是否会以某种方式存储在本地。

谢谢你的建议。