尝试通过以下链流式传输视频:本地实例存储 (AWS) 上的 h264/mp4 文件->ffmpeg->rtp->同一实例上的 Janus->WebRTC 播放 (Chrome/mac)。即使没有任何资源似乎超载(所涉及的任何系统上的 CPU/内存/网络带宽),生成的视频也是断断续续的。我也使用 Coturn TURN 服务器,它也根本没有加载并且带宽充足。
尝试切换编解码器,除了 vp8 没有帮助,虽然它可以工作(有点 - 波动仍然存在,但非常罕见和可接受),导致如此高的 CPU 消耗,实际上这是不可接受的。
ffmpeg -re -stream_loop -1 -i ./short.mp4 -s 426x240 -c:v libx264 -profile:v baseline -b:v 1M -r 24 -g 60 -an -f rtp rtp://127.0.0.1:5004
结果 SDP 是:
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 58.20.100
m=video 5004 RTP/AVP 96
b=AS:1000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1
Run Code Online (Sandbox Code Playgroud)
流使用 Janus API 设置为
"janus" : "message",
"transaction" : 'Transaction',
"body": { …
Run Code Online (Sandbox Code Playgroud) 我已经为视频通话配置了janus服务器。根据文档配置所有设置并安装所有依赖项
成功建立连接但无法流式传输视频。启动新会话后ICE失败错误抛出错误日志如下
JANUS WebSockets 传输插件初始化!WebSockets 线程开始创建新会话:7153905178555544;0x7fd244004c00 在会话 7153905178555544 中创建新句柄:7459090747208459;0x7fd244004c00 0x7fd244005670 创建新会话:8203604816882479;0x7fd24400b8c0 在会话 8203604816882479 中创建新句柄:1196748959220562;0x7fd24400b8c0 0x7fd244018910 销毁会话 8203604816882479;0x7fd24400b8c0 从 JANUS VideoRoom 插件中分离句柄;0x7fd244018910 0x7fd24400b890 0x7fd244018910 0x7fd24401f760 [janus.plugin.videoroom-0x7fd24400b890] 不再有 WebRTC 媒体;0x7fd244018910 0x7fd24401f760 [1196748959220562] 释放句柄和相关资源;0x7fd244018910 0x7fd24400b8c0 [WSS-0x7fd244008340] 销毁 WebSocket 客户端 [7459090747208459] 创建 ICE 代理(ICE Lite 模式,受控)
[警告] [7459090747208459] 流 1 中的组件 1 的 ICE 失败,但让我们给它一些时间......(收到涓流,收到答复,未设置警报)
[ERR] [ice.c:janus_ice_check_failed:1692] [7459090747208459] 流 1 中组件 1 的 ICE 失败... [janus.plugin.videoroom-0x7fd244001e60] 不再有 WebRTC 媒体;0x7fd244005670 0x7fd244005fe0 [7459090747208459] 释放了 WebRTC 资源;0x7fd244005670 0x7fd244004c00 [ERR] [transports/janus_http.c:janus_http_handler:1239] 无效的 url …
我想构建一个移动应用程序,其中一个参与用户可以一次向其他参与者广播音频,其他参与者只能收听音频,Ant Media、Jitsi 和 Janus 哪个最适合在移动应用程序中开始一对多的实时语音流?
我们有一个网络应用程序,我正在通过在 browserWindow 中加载 URL 来构建电子应用程序。但是当我尝试共享屏幕时,它会给我一个弹出窗口,说请安装 janus webRTC 屏幕共享插件并重新启动浏览器。请帮忙 !
首先让我开始说 - 我是 Janus / GStreamer / WebRTC 的新手。
我必须使用 GStreamer 和 WebRTC 将连接在机器人硬件上的远程摄像头流式传输到浏览器上。
但作为概念证明,我首先想用 videotestsrc 实现相同的目标。所以,我一直在努力实现以下目标:
这是我到目前为止所做的:
1. 创建了以下 GST 管道:
gst-launch-1.0 videotestsrc ! video/x-raw,width=1024,height=768,framerate=30/1 ! timeoverlay ! x264enc ! rtph264pay config-interval=1 pt=96 ! udpsink host=192.168.1.6 port=8004
Run Code Online (Sandbox Code Playgroud)
2.我正在使用这个修改过的streamingtest.html代码: streamingtest2.js和streamingtest2.html:
gst-launch-1.0 videotestsrc ! video/x-raw,width=1024,height=768,framerate=30/1 ! timeoverlay ! x264enc ! rtph264pay config-interval=1 pt=96 ! udpsink host=192.168.1.6 port=8004
Run Code Online (Sandbox Code Playgroud)
var server = null;
if (window.location.protocol === 'http:') { …
Run Code Online (Sandbox Code Playgroud)我刚刚设置了 janus 并让它运行起来。
我正在连接到它,并且可以在 janus 日志中看到:
[ERR] [transports/janus_http.c:janus_http_handler:1522] Invalid session (null)
我在网上查过但找不到任何东西。有任何想法吗?
我正在使用janus-gateway在Web浏览器中进行记录。录制完成后,将生成两个文件,一个是音频,另一个是视频。两者都有格式mjr。如何将这两个文件合并为一个文件?
我正在尝试通过网络将用户的网络摄像头流式传输到基于 C 的服务器。我用过Janus网关。
我创建了一个小插件,它很大程度上基于 echotest 演示示例:我的浏览器通过 WebRTC 技术连接到我的 janus 服务器,并且它可以流式传输用户的网络摄像头。
在服务器端,我有janus_incomming_rtp函数,它给我一个char * buffer和int length。经过检查,传入数据的缓冲区大约是 MTU 的长度:我的视频的每一帧都是通过多个 RTP 数据包发送的。
我已经按照此维基百科页面检查了一些标头,但我不知道如何从 UDP RTP 数据包流中重建图像。理想情况下,我想将流传递给 openCV 进行实时图像处理。
我听说过 gstreamer,但我不明白它是什么,也不明白它如何帮助我;另外我不知道openCV是否有任何内置函数来“重建”图像?而且我不知道视频帧以哪种格式进行编码:PT(有效负载类型)似乎是 116,它被定义为“动态”,但我不知道它意味着什么。
有什么帮助吗?
如何将本地媒体文件(视频文件)传输给同行?(我正在使用 janus-gateway - videoroom 插件)。
对于音频有 webAudio,但是对于视频呢?
谢谢!
更新:也许有人有一个例子?或者一个小代码片段?也许是一些库的链接?
这是我在这里的第一篇文章,尽管这个平台已经帮助了我很多。
因此,我正在尝试创建一个流并将其显示在浏览器中。我已经使用 rtmp 模块配置了 NGINX,并且我的流与 HLS 配合得很好(延迟在 5 到 10 秒之间)。
现在我想设置一个低延迟流,这就是为什么我安装了 janus-gateway webRTC 服务器,它允许接收 RTP 流输入并提供 webRTC 流输出。
这是我想要遵循的模式:
OBS -> RTMP -> Nginx-rtmp-module -> ffmpeg -> RTP -> Janus -> webRTC -> 浏览器
但我对这部分有一个问题:“nginx-rtmp-module -> ffmpeg -> janus”
事实上,我的 Janus 的服务器正在运行,演示流在本地主机中工作得很好,但是当我尝试提供 RTP 流时,Janus 没有检测到演示中的流(它显示“没有可用的远程视频”)。
任何人都可以帮助我吗?
资源:
rtp-sample: {
type = "rtp"
id = 1
description = "Opus/VP8 live stream coming from external source"
metadata = "You can use this metadata section to put any info …
Run Code Online (Sandbox Code Playgroud) 我在Ubuntu机器(14.04 64位)中安装Janus WebRTC网关.我按照以下链接中的说明操作:
但是,在尝试执行janus时出现以下错误:
https://github.com/meetecho/janus-gateway(readme.md文件)
[致命] [janus.c:main:3670]没有Janus API传输可用...启用至少一个并重启Janus
任何人都知道问题可能是什么?我将只使用没有WebStockets或RabbitMQ的REST API.
将 videoroom 插件附加到 Janus 后,在“成功”回调中,我向它发送同步消息
janus.attach(
{
plugin: "janus.plugin.videoroom",
opaqueId: opaqueId,
success: function(pluginHandle) {
roomMaster = pluginHandle;
var isExist = {
"request" : "exists",
"room" : myroom
};
roomMaster.send({"message": isExist})
},
Run Code Online (Sandbox Code Playgroud)
并在控制台中从 获得响应janus.js
,但在文档中告诉该插件将向我response
发送消息。我不明白 - 我在哪里可以抓住它?
onmessage: function(msg, jsep){
// is fired only after sending async requests like "join", "start" - not "exists"
conslole.log(msg);
}
Run Code Online (Sandbox Code Playgroud)
有人知道吗?
谢谢
我使用 WebRTC 渲染远程视频失败。对于上下文,我使用 Janus 的流媒体插件。
我正在关注到目前为止我所读到的内容。每当peerConnection(_ peerConnection:, didAdd stream:)
调用时RTCPeerConnectionDelegate
,我都会创建一个远程渲染器并将其添加到委托向我提供的流的第一个 videoTrack 中,如下所示:
#if arch(arm64)
let remoteRenderer = RTCMTLVideoView(frame: self.view.frame)
remoteRenderer.videoContentMode = .scaleAspectFill
#else
let remoteRenderer = RTCEAGLVideoView(frame: self.view.frame)
#endif
stream.videoTracks.first?.add(remoteRenderer)
self.view.addSubview(remoteRenderer)
Run Code Online (Sandbox Code Playgroud)
但视频无法显示,只有黑屏。
我的代表还调用了peerConnection(_ peerConnection:, didChange newState:)
newState,RTCIceConnectionState.connected
这让我认为连接良好。
janus-gateway ×13
webrtc ×11
janus ×2
websocket ×2
electron ×1
ffmpeg ×1
gstreamer ×1
h.264 ×1
installation ×1
ios ×1
javascript ×1
jitsi ×1
jitsi-meet ×1
linux ×1
makefile ×1
nginx ×1
opencv ×1
recording ×1
rtmp ×1
swift ×1
udp ×1
web ×1
webrtc-ios ×1