标签: sdp

如何解码H264 SDP中的sprop-parameter-sets?

对于h264流,SDP中sprop-parameter-sets中Base64解码字节的含义是什么?如何从此示例中了解视频大小?

SDP示例:

sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA==
Run Code Online (Sandbox Code Playgroud)

第一部分从Base64解码到Base16:

67 42 00 29 E3 50 14 07 B6 02 DC 04 04 06 90 78 91 15
Run Code Online (Sandbox Code Playgroud)

第二部分(逗号分隔):

68 CE 3C 80
Run Code Online (Sandbox Code Playgroud)

解答: 获取H264Video流的尺寸

base64 h.264 sdp

13
推荐指数
2
解决办法
2万
查看次数

如何更改WebRTC中使用的默认编解码器?

我一直在谷歌搜索改变Chrome的WebRTC实现中的编解码器的方法,但似乎没有办法.

如何更改Chrome中WebRTCpeer连接中使用的默认编解码器(音频或视频)?

sdp webrtc

11
推荐指数
1
解决办法
2万
查看次数

如何在SIP/SDP呼叫中启动RTP流

我已设法使用JAIN-SIP API for Java设置SIP呼叫.

现在,我想在建立对话框后流式传输一些视频.我已经读过SDP和RTP这是可能的,我已经找到了关于如何在SIP数据包中定义SDP/RTP主体的多个例子.

但是,一旦您在节点上协商了功能等,您如何实际启动RTP流?您是在Java应用程序之外还是内部启动RTP流服务器?如果是这样,怎么样?链接是什么?

在我能够在网上找到的,节点只是"开始交换RTP数据包".

谢谢.

java streaming sip rtp sdp

9
推荐指数
1
解决办法
7279
查看次数

制作H264 RTP流的最小SDP?

我正在寻找一个用于设置H264视频流的最低必要SDP的示例

假设只要通过SDP获得所需参数,接收器就可以播放H264.

我在这里找到了一个相关文档,但它在示例中使用了大量可选参数,我正在寻找最低要求.

sip rtp h.264 sdp

9
推荐指数
1
解决办法
2万
查看次数

为 WebRTC PeerConnections 强制使用 TCP

是否可以强制与 WebRTC 建立 TCP 隧道 (TLS) 连接?

我们正在为我们的业务开发 WebRTC 应用程序,但我们遇到了由内部网络引起的传入 UDP 流的一些重大问题。我们已经在使用 TURN 服务器,并且我们正在获得一堆 ICE 候选(甚至中继 UDP 的)。

问题是,正如我上面所说的,我们传入的 UDP 流量在这里工作不可靠(口吃,非常糟糕的图像质量,非常低的 fps)。这足以给浏览器留下印象,WebRTC 可以将其用于 PeerConnection,但实际结果在 UDP 上非常糟糕。

如果我阻止所有传出和传入的 UDP 流,我可以看到(在 Wireshark 中)WebRTC 通过使用我们的轮流服务器回退到 TCP 流量。

通过 TCP 连接,我们获得了非常好的结果(具有高帧率和非常好的图像质量)。

我已经尝试了几件事来强制 TCP:

  1. 我删除了 m=video 行中的 UDP 部分

    m=视频 TLS/RTP/SAVPF 100 116 117 96

  2. 我已经从我的候选人名单中排除了每个 UDP 候选人

在每种情况下,我什至无法建立连接。

我可以做些什么来强制 WebRTC 中的 TCP 或者我们真的完全依赖浏览器吗?

google-chrome sdp stun webrtc turn

9
推荐指数
2
解决办法
9016
查看次数

如何从FFMPEG生成SDP文件

因此,我一直在与FFMPEG合作开展一个项目,该项目涉及使用RTP将视频从一台计算机流式传输到另一台计算机.我想把它带到ffmpeg并使用ffserver在本地网络上显示它.

据我了解,您需要有一个SDP信息,以便接收ffmpeg实例可以解释RTP流.尽管网页说什么,但我无法在打印到控制台的信息中找到SDP信息.

如何强制传输ffmpeg实例输出SDP信息,以便我可以用它来配置我的接收端?

现在,我正在测试Windows 7,但最终的解决方案将在Linux上.

我正在运行测试的命令是

ffmpeg -fflags +genpts -i files\2005-SFSD-sample-mpeg1.mpg -threads 0 -r 10 -g 45
-s 352x240 -deinterlace -y 2005.mp4 -an -threads 0 -r 10 -g 45 -s 352x240 
-deinterlace -f rtp rtp://192.168.200.198:9008
Run Code Online (Sandbox Code Playgroud)

我的ffmpeg信息是......

ffmpeg version 0.8, Copyright (c) 2000-2011 the FFmpeg developers built on Jun 23 2011 14:22:23 with gcc 4.5.3 
configuration: 
--disable-static  
--enable-shared 
--enable-gpl  
--enable-version3 
--enable-memalign-hack  
--enable-runtime-cpudetect 
--enable-avisynth 
--enable-bzlib 
--enable-frei0r 
--enable-libopencore-amrnb 
--enable-libopencore-amrwb 
--enable-libfreetype 
--enable-libgsm 
--enable-libmp3lame 
--enable-libopenjpeg 
--enable-librtmp 
--enable-libschroedinger 
--enable-libspeex 
--enable-libtheora 
--enable-libvorbis 
--enable-libvpx 
--enable-libx264 
--enable-libxavs 
--enable-libxvid 
--enable-zlib …
Run Code Online (Sandbox Code Playgroud)

windows ffmpeg rtp video-streaming sdp

8
推荐指数
2
解决办法
2万
查看次数

WebRTC:对多个对等连接使用相同的SDP?

是否可以在多个对等连接中使用相同的SDP?

我正在使用WebRTC构建视频会议.我们的想法是,呼叫者使用一些信令机制,通过SDP(每个用户使用相同的SDP)向所有其他用户发送广播消息,然后用户将使用他们的SDP进行响应.

当用户收到某人的SDP时,他用它来设置远程描述,如下所示:

connection = new RTCPeerConnection()
desc = RTCSessionDescription({sdp: SDP, type: "offer"});
connection = setRemoteDescription(desc);
Run Code Online (Sandbox Code Playgroud)

这是SDP示例:

v=0
o=- 6843023960119608301 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS
m=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:q36dZRVoaS4ixPYP
a=ice-pwd:K5yAm4A+zGoIKIgsX9o4VgDA
a=ice-options:google-ice
a=fingerprint:sha-256 62:3E:99:2F:FF:D4:58:7C:F0:A1:02:3F:09:2B:D1:F3:71:D7:F6:59:62:12:E4:1B:4A:68:01:4C:43:E0:D1:75
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=recvonly
a=rtcp-mux
a=crypto:0 AES_CM_128_HMAC_SHA1_32 inline:Tdz5Z3KHB3Xosqr5D53WZfi7Zndz+932X3H46Qvf
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:NJO4XhhHUgiJRCfyYzDgajkCJAF/9BX8QeU+FKQs
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 …
Run Code Online (Sandbox Code Playgroud)

sdp webrtc

8
推荐指数
1
解决办法
5139
查看次数

WebRTC在同一个peerConnection中有多个视频流

我正在使用WebRTC客户端,我想允许客户端修改正在进行的音频/视频会话以添加或删除音频或视频流.

因此,例如,如果两个客户端之间存在正在进行的音频/视频呼叫,则一个客户端可以修改会话并添加另一个视频流以共享他的屏幕.因此,远程客户端可以看到来自摄像头的视频以及从屏幕捕获的视频.

我通过发送带有更新的SDP的re-INVITE进行修改,该SDP应该包含两个视频媒体线.

我的问题是,接收器是否可以接收这样的SDP并独立处理每个视频媒体线但是通过相同的peerConnection?

谢谢.

sdp html5-video webrtc

8
推荐指数
1
解决办法
5595
查看次数

如何判断是否因为流已被删除而触发了pc.onnegotiationneeded?

我正在处理一个RTCPeerConnection(pc),它有一个名为onnegotiationneeded的事件处理程序.

onnegotiationneeded使用pc.addStream或添加或删除完整的媒体流时会触发" " pc.removeStream.

是否有可能告诉onnegotiationneeded函数内部是否已执行,因为已添加或删除了流?因为从阅读文档我无法找到一个状态.

目前我正在切换的标志,当我做pc.addStreampc.removeStream.这个标志可以帮助我判断onnegotiationneeded它是否被流删除了.

但我想知道浏览器(Chrome 40或Firefox 36)API是否已经提供了这样的属性?

javascript html5 sdp webrtc peer-connection

8
推荐指数
1
解决办法
1177
查看次数

如何使用webrtcbin创建offer,只接收视频

gstreamer webrtc 演示工作正常。但所有演示都有一个小问题:创建报价的所有 webrtcbin 必须有一些视频/音频数据要发送。我想使用 webrtcbin create offer,并且只接收来自其他 webrtc peer 的视频数据。

所有演示管道从 videotestsrc/audiotestsrc 开始制作测试数据,以便 webrtcbin 可以将数据发送到远程对等方。但我不想向远程发送任何数据,我必须创建报价,而不是等待报价然后回答。

我正在尝试这个管道:

pipeline = gst_parse_launch(
        "webrtcbin name=recv stun-server=stun://localhost:19302  "
        " ! rtpvp8depay ! vp8dec ! videoconvert ! queue ! fakevideosink ",
        &error);
Run Code Online (Sandbox Code Playgroud)

然后连接信号:

g_signal_connect(webrtc, "on-negotiation-needed", G_CALLBACK(on_negotiation_needed), NULL);
g_signal_connect(webrtc, "on-ice-candidate", G_CALLBACK(send_ice_candidate_message), NULL);

g_signal_connect(webrtc, "pad-added", G_CALLBACK(on_incoming_stream), pipeline); 
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,on_negotiation_needed 被执行,我调用 create-offer:

GstPromise* promise;
promise = gst_promise_new_with_change_func(on_offer_created, user_data, NULL);
g_signal_emit_by_name(webrtc, "create-offer", NULL, promise);
Run Code Online (Sandbox Code Playgroud)

但它创建了非常短的 sdp:

{"type":"offer","sdp":"v=0\r\no=- 7210256809476625085 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=ice-options:trickle\r\n"}
Run Code Online (Sandbox Code Playgroud)

这个 sdp 没有任何媒体信息。

并且,在调用 create-offer 之后,应该调用回调 on-ice-candidate。在我的程序中,这个回调从未调用过。 …

gstreamer sdp webrtc

7
推荐指数
1
解决办法
2862
查看次数