在安卓系统中从http网址上播放sdp文件(rtsp流)。
我在Localhost的RTSP服务器上有一个RTSP流. 我将使用Android类MediaPlayer播放此文件. 如果我做setDataSource(rtsp://localhost/file.sdp) 我的问题是...如果我在HTTP服务器上复制文件,并且我要 setDataSource(http://localhost/file.sdp) 它不起作用!我收到一个I/O例外. filePath = "http://localhost/file.sdp"; mediaPlayer.setDataSource(filePath); mediaPlayer.prepare(); mediaPlayer.start(); 如果我使用VLC应用程序播放此文件,则可以使用. 解决方案 RTSP和HTTP是不同的协议. HTTP服务器不会以相同的方式提供数据.它将发送HTTP标题等.VLC可能以某种方式很聪明,可以根据收到的数据来推断协议,但是Androi
0 2024-02-17
编程技术问答社区
无法在ios和android(mediatek)之间创建答案SDP
我正在使用webrtc在Android和iOS之间创建一个电话. 如果Android设备芯片支持H264(Snapdragon,exynos),那么一切正常,但是在使用Mediatek的Android设备上,Android side无法从iOS客户端看到答案SDP. 这是我的编解码码 的块代码 final PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); final DefaultVideoEncoderFactory encoderFactory = new DefaultVideoEncoderFactory(eglBase.getEglBaseContext(), true, true); final DefaultVideoDecoderFactory decoderFactory = new DefaultVideoDecode
0 2024-02-07
编程技术问答社区
连接安卓蓝牙客户端插座和ubuntu服务器插座的问题
我正在编写一个Android应用程序,该应用程序应通过蓝牙将数据交换到服务器,而服务器侧在运行Ubuntu的PC上,使用Bluez库,在C(或C ++)中. 当我尝试连接到PC上的服务器套接字时,我的Android应用程序失败(IOException). 这本质上是我在Java代码中的内容(在Android,完整的Eclipse项目中: http://dl.dropbox.com/u/2968234/thinbtclient.zip ) private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); private static String address = "00:02:72:B2:85:C7"; // Hard coded for simplicity private BluetoothAdapter mBluetoothAdapter =
8 2024-02-06
编程技术问答社区
蓝牙SDP-sdpd在哪里?
蓝牙服务发现协议(SDP)在哪里? 我正在尝试使用Bluez在Debian V8.0上注册蓝牙服务.我在sdp_connect( BDADDR_ANY, BDADDR_LOCAL, 0 ); 失败.经过一番挖掘,我发现SDP守护程序(SDPD)(需要连接的SDPD)未运行,实际上我的系统中甚至都不存在. 我尝试的是: 我已经安装了(apt-get)似乎远程相关但仍然没有sdpd的每个蓝牙或蓝兹软件包. 我尝试使用Android手机的地址(使用相同的代码)进行连接.这很好,但是当然没有用. 对这个问题进行了详尽的Google搜索,但没有找到明确的答案.关于HCID,PAND等的很多讨论,但没有关于它们如何相关的明确答案. 我的目标: 我正在尝试在Debian系统上注册我的服务,以便可以从另一台蓝牙设备(尤其是我的Android)连接到它.该服务运行良好,没有SDP注册就找不到. 我会使用它(已知的)频道号直接连接到它,但是Android只能通过
0 2024-01-31
编程技术问答社区
如何获得蓝牙服务的SDP记录?
我是Winsock和蓝牙编程的新手.我需要开发蓝牙服务才能在PC上运行. 查看他们说要使用wsasetservice的MSDN库()功能发布服务. 问题是Wsaqueryset(在MSDN库的Windows嵌入式部分中,他们描述了使用 bthnscreate . 我安装了Windows CE 6用于使用此工具,但在安装目录或整个系统中找不到它. 如何获得SDP记录? 谢谢! 解决方案 付给我为您创建它吗?不,我在开玩笑 - 除非您需要专家帮助.我是.net的32feet.net蓝牙库的维护者.我们包括完整的SDP记录解析,创建和诊断倾销.您应该能够使用我们的ServiceRecordBuilder类创建记录,然后将其转换为Method ServiceRecordCreator.CreateServiceRecord的二进制形式.请参阅 32feet.net-用户指南
4 2023-12-10
编程技术问答社区
WebRTC ICE连接在有效的ICE服务器和候选者中失败了
这是我以前的问题的延续在这里. > 我开始使用webrtc板条WEBRTC连接,但我在冰连接失败的情况下遇到问题.我检查了这是我当前的代码: async fn new(...) { let webrtcredux = Arc::new(AsyncMutex::new(WebRtcRedux::default())); webrtcredux.lock().await.set_tokio_runtime(Handle::current()); let servers = ice.urls.into_iter().map(|url| { if url.starts_with("turn") { RTCIceServer { urls: vec![url], username: ice.username.clone(), cr
2 2023-12-01
编程技术问答社区
属性令牌中的sdp值中的":"或"/"是单独允许周围允许的空间吗?
在SDP中,colon(':')和斜线('/')中使用了许多属性值(标准值和A =扩展).这只是其中的一些: b=AS:41 a=rtpmap:96 AMR-WB/16000/1 a=fmtp:96 mode-change-capability=2; max-red=80 我想知道(无论是用于解析还是生成SDP),如果允许周围的空间.所有示例都指出周围没有空间.我认为RFC 4566的第9节给出了SDP的语法. 解决方案 我会说,通常,SDP不喜欢Whitespace. RFC4566的第一个规则不是回答您的问题,但这是一个开始: An SDP session description consists of a number of lines of text of the form: = where MUST be exactly one case-significant character and
0 2023-12-01
编程技术问答社区
IceCandidate和SDP是静态的吗?
iCecandidate和SDP固定值?将它们存储在服务器数据库中而不是在每个连接上检索的好主意吗?如果更新这些数据是不可避免的,那么我什么时候应该这样做? 解决方案 否它们不是固定值. ICE候选人目前在他们居住的网络拓扑中找到用户这仅通过这些手段连接,而且永远不会通过wifi进行连接,然后这可能会每天,每周或每周都会改变. SDP还包含用于呼叫和其他信息的媒体设置,如果在呼叫过程中添加,删除或更改了视频或音频源,则可以从通话来调用,甚至中间通话(需要重新谈判) . SDP可能还包含其他过期的东西,但希望这足以劝阻您. 其他解决方案 不,他们不是. ICE候选者包含终点的IP和端口组合,可以改变.即使您有一个静态IP地址,每次都会生成新的端口号.
2 2023-12-01
编程技术问答社区
如何在服务器上使用ffmpeg从WebRTC流中获取音频和视频
我正在尝试从WEBRTC流中获取音频和视频,并在Ubuntu Server上使用FFMPEG处理(Trans Code或Dump).我天真地期望它简单地解释WebRTC提供的SDP,但错误.我怀疑ffmpeg无法发出回答SDP的信号,必须手动完成.这是一个要约SDP: v=0 o=Mozilla-SIPUA-33.1 3662 0 IN IP4 0.0.0.0 s=SIP Call t=0 0 a=ice-ufrag:5e0a74d1 a=ice-pwd:7446c0eb445117d0018ca2afc5f3ca54 a=fingerprint:sha-256 76:1B:19:CE:3F:41:C5:4D:64:E6:FD:72:D2:FC:42:E1:98:D4:0F:2B:73:AE:C7:F4:2C:73:2C:E7:9E:DC:6A:EB m=audio 23063 RTP/SAVPF 109 0 8 101 c=IN IP4 188.253.146.208 a=rtp
0 2023-12-01
编程技术问答社区
无法设置远程答案SDP:无法按下传输说明:无法为频道设置SSL角色
我正在使用WEBRTC来构建支持音频调用的系统.这是其工作原理: - 用户a createOffer,然后使用setLocalDescription offer - 用户b receiveOffer,然后使用setRemoteDescription offer - 用户b createAnswer,然后使用answer setLocalDescription - 用户a receiveAnswer,然后使用setRemoteDescription setRemoteDescription 问题在于,在从B接收到的答案后,当A确实setRemoteDescription(answer)时,出现此错误: 被谋生(在承诺中)domexception:未能设置远程答案SDP:无法按下传输说明:无法为频道设置SSL角色. 我不知道为什么会出现此错误.我尝试搜索它,但到目前为止没有运气.任何帮助将不胜感激! 解决方案 它似乎确实是 a firefox bug .
2 2023-12-01
编程技术问答社区
使用 webrtc 时能否关闭 SRTP?
现在我测试WebRTC与SIP客户端(SX20) 进行通信 我使用WEBRTC SDP发送邀请消息.但是sip客户的答案没有手指打印, sip客户端答案不只是rtp. 所以我需要关闭WebRTC中的SRTP.我可以做吗? 还有一个问题...我认为,手指打印是加密的, 那么,发送者和接收器需要每个键吗?我们需要两个钥匙吗?发件人的钥匙,接收钥匙? 否则我们只需要发件人'键? 解决方案 您无法关闭SRTP.它是标准的一部分,可能永远不会删除. 钥匙在指纹不是密钥本身,钥匙是通过DTLS交换的,如果您在其中一台机器上收听Wireshark,则实际上可以看到DTLS交换P> 您将需要实现一个断路器才能与WEBRTC客户端和SIP客户端接口. 其他解决方案 用于测试目的,Chrome Canary和Chrome Developer都有一个标志,可以关闭SRTP,例如: cd /Applications/Google\ Chrome\ Canary.a
8 2023-12-01
编程技术问答社区
如何在Android webRTC上启用H264
如何在Android Webrtc上启用H264. PeerConnection to createOffer SDP中没有H264描述. 解决方案 Google默认情况下,Google默认情况下会阻止自己的软件编解码器,因此,如果您的芯片组中没有硬件解码(或者,如果您使用仿真器),那么当WEBRTC检查时,您将不会获得H264编解码器他们. 如果您进入WEBRTC代码并从 https://chromium.googlesource.com/external/webrtc/external/webrtc/+/head/head/head/sdk/android/src/src/java/java/java/java/webrtc/webrtc/mediacodiacodececececutils.java,java,java,java, 33 然后,基于该代码,为Android创建自定义WEBRTC,软件编码器将被封锁. 其他解决方案 Google的当前WEBRT
2 2023-12-01
编程技术问答社区
转动服务器WEBRTC TCP继电器
我正在使用coturn作为我的TURN服务器,用于WebRTC连接中的继电器.我要实现的是基于TCP的连接,而不是udp . 我尝试的是: 在Coturn配置中,我已经设置了no-udp和no-udp-relay仅强制TCP基于连接. # Uncomment if no UDP client listener is desired. # By default UDP client listener is always started. # no-udp # Uncomment if no UDP relay endpoints are allowed. # By default UDP relay endpoints are enabled (like in RFC 5766). # no-udp-relay 无论何时,我尝试建立连接,我得到turn server may be broken. 可能有用的细节,A和B正在尝试交流 在机器上A,我得到了3个UD
6 2023-12-01
编程技术问答社区
如何用报价/答案交换来自两个对等互联的数据流
我正在尝试设置视频聊天,其中两个对等连接交换视频.在创建数据频道之后发生这种情况.因此,这是事件的过程: 要约创建数据频道, usverer 创建和要约,答案器创建答案.到目前为止,一切都很好.我们有一个datachannel. 要约通过 getusermedia 获取视频流,并将其添加到同行连接中,然后 onnegotiation off strong> envert> offormer > firees, uperter 创建了一个新的报价,而答案回答答案.仍然很好. 要约正在流式传输. 答案通过 getusermedia 获取视频流,并将其添加到同行连接中, offormer 创建了一个新优惠,而 noseer 回答答案.还可以. 答案也在流中. 但是,如果我切换步骤2和第3步(So Answerer 首先开始流式传输),那么事情就会开始出错.双方仅在步骤1、3和2之后才开始流式传输. 我很确定这与SDP报价和答案的顺序有关. 当我让答案器具有 onne
0 2023-12-01
编程技术问答社区
如何更改WEBRTC中使用的默认编解码器?
我一直在搜索过一种在Chrome实施WEBRTC中更改编解码器的方法,但似乎没有一种方法. 如何更改chrome中的webrtcpeer连接中的默认编解码器(音频或视频)? 解决方案 是的,您可以将编解码器更改为您想要的任何东西...只要Chrome支持它即可.现在,明智的是,唯一支持的编解码器是PCMA,PCMU,ISAC和OPUS(默认).对于视频,您有VP8(在某些带有Firefox的系统上也有H264). 要使用这些编解码器中的任何一个作为默认值,您必须在peerconnection本地设置并发送优惠/答案之前对SDP进行修改.我已经测试了成功强迫Chrome发送PCMA而不是Opus的测试. 作为一个例子: 说您的默认音频SDP部分看起来如下(注释在括号中不是SDP的一部分) m=audio 49353 RTP/SAVPF 111 103 104 0 8 106 105 13 126
6 2023-12-01
编程技术问答社区
如何在Chrome中为WebRTC调用程序设置远程描述而不出错?
我希望逻辑中没有缺陷. 步骤1:呼叫者创建报价 步骤2:呼叫者设置LocalDescription 步骤3:呼叫者将描述发送到Callee //--------------------------------------------------------------------------- -----------// 步骤4: Callee接收要约集远程描述 步骤5: callee创建答案 步骤6: callee设置本地描述 步骤7: callee将描述发送给呼叫者 //--------------------------------------------------------------------------- -----------// 步骤8:呼叫者接收答案并设置远程描述 这是上述代码 const socket = io(); const constraints = { audio: true,
6 2023-12-01
编程技术问答社区
如何使用 libsrtp 或类似库来解密/加密 WebRTC 数据流?
我有一台服务器,可以从Web浏览器中接收优惠,回答,候选人,用于WEBRTC会话,并传递给其同行.后来数据也从同一服务器传递. 现在要实现我们自己的SFU式机制,我正在考虑,如果我可以将这些数据解密到实际的原始字节,然后使用自己的加密传递给多个同行.为此,我考虑使用开源 libsrtp 库.这是它的示例代码. 它主要具有2个函数srtp_protect(),并解密srtp_unprotect(). 问题:如何在WEBRTC SDP标头的上述连词中使用此库(VIZ提供,答案,候选人)以获取RAW RTP字节并再次加密它们? [注意:" MediaSoup"," Janus"等其他开源解决方案不在此帖子的范围内.] 解决方案 如果您有要约,答案和候选人,则有足够的信息来建立WEBRTC会话.在您担心加密/解密之前,您需要建立对于ICE,您需要每个代理商用户碎片和密码.您可以通过要约/答案来交换这些价值.我将从 ice-lite .您需要接受Stun请求数据包,断言
0 2023-12-01
编程技术问答社区
使用 VLC 播放 RTP
我目前有一个Android应用程序,该应用程序正在从相机中捕获视频并通过RTP进行流式传输.我不使用rtsp. 我创建了一个描述RTP feed的SDP文件.我可以在QuickTime 7中打开SDP文件,并可以看到流,试图打开VLC中的SDP文件不起作用.我收到以下错误: live555 demux错误:10秒未收到数据,流产 我正在使用Wireshark监视RTP数据包,并可以在网络上看到数据包(请参见下面的示例): 281956 2545.589171000 10.0.1.25 10.0.1.150 UDP 1442 Source port: 54405 Destination port: 51372 QuickTime 7似乎没有问题与SDP中的目标端口绑定并播放流有关,但是我在尝试使用VLC时会看到以下ICMP数据包: 286674 2925.162140000 10.0.1.150 10.0.1.25 ICMP
4 2023-11-25
编程技术问答社区
Sprop-parameter-sets或profile-level-id是解码H264所需的SDP参数吗?
我正在尝试了解SDP中所需的参数是什么,以便能够从RTP数据包解码H264. 这与相关,这个问题,因为答案仅在少数情况下起作用. 示例 我正在使用以下命令从VLC流式传输. vlc -vvv sample_video/big_buck_bunny_480p_h264.mov --sout '#transcode{vcodec=h264,vb=700,fps=20,scale=0.25,acodec=none}:rtp{dst=10.5.110.117,port=5004,ttl=1}' 这将视频转码为: 比特率:700kbps 帧速率:20每秒 分辨率:原始的25% 接收器正确接受并使用以下SDP文件解释流(删除第一行,只是一个名称). //test.sdp c=IN IP4 10.5.110.117 m=video 5004 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 profile-level-
2 2023-11-25
编程技术问答社区
如何在不连接视频流的情况下从视频流中抓取单个图像(带宽问题)
不确定这是可能的,但是如何在不连接流(RTSP)本身(我有带宽问题)的情况下从视频流中获得单个图像? (优先考虑Python,但任何代码框架/语言都很好). 这是流的示例SDP文件: v=0 o=Teleste 11501847 688 IN IP4 1.1.1.1 s=unnamed (mpeg4/tx-1) i=Teleste MP-X AUDIO/VIDEO Encoder c=IN IP4 221.1.1.1/64 t=0 0 m=video 4002 RTP/AVP 96 b=AS:6400 a=rtpmap:96 MP4V-ES/90000 a=fmtp:96 profile-level-id=1;config=000001B005000001B509000001000000012000C4F84048800F516843C1463F 我有一个解决方案来提取与流的连接后提取单个图像的解决方案,但是我正在寻找一个解决方案,该解决方案由于带宽问题而不需要与流
2 2023-11-19
编程技术问答社区