我对h264 RTP数据包的时间戳感到困惑.我知道我在SIP SDP中定义的视频挂钟率是90KHz.我的编码器的帧速率不是30 FPS,它是可变的.它的速度从15 FPS到30 FPS不等.所以,我不能使用任何固定的时间戳.
任何人都可以告诉我以下编码数据包的时间戳.
经过0毫秒编码的RTP时间戳= 0(让开始时间戳0)
经过50毫秒编码的RTP时间戳=?
经过40毫秒编码的RTP时间戳=?
经过33毫秒编码的RTP时间戳=?
编码帧速率可变时的公式是什么?
先感谢您.
我有一个简单的Rtsp客户端...客户端将Rtsp命令发送到Rtsp服务器并从服务器获取RTP数据包.
问题是经过一段时间(大约3-4分钟)后,我的第三方RTSP服务器断开与RTSP客户端的连接.
我没有实现RTCP ...我从rtsp服务器获取rtp数据包但不发送任何RTCP PACKET ...
我做了简单的搜索,发现有些人使用一些RTSP命令[比如OPTIONS,SET PARAMETER-GET PARAMETER]也保持RTSP服务器和客户端之间的连接...但在我的情况下,这不起作用...
这是我的问题:
是否有可靠的开源库用c ++编写来实现SIP和RTP协议?如果没有,使用boost.asio实现它们是否容易?
如何在Android中实现SIP协议?有没有可用于将其轻松实现到Android的SDK或库?
我试图建立一个SRTP以RTP数据流转换器,我有得到的问题Master Key从WebRTC peerconnection我创造.
根据我的理解,通过DES交换,密钥是通过交换进行的SDP交换,并在a=crypto现场显示.因此,这种情况看起来非常简单(如果我错了,请纠正我),但最终无用,因为WebRTC标准化现在要求不应使用DES(Chrome现在只支持它,将来可能会删除).
对于DTLS,指纹字段中SDP是否有希望在未来交换中使用的证书的哈希值?[编辑:做了一些阅读后,我认为情况并非如此]我会想到的是指纹旁边的能力,通过交换中的DTLS数据包解析我应该能够抓住Master Key解码SRTP流,但我正在撞墙,因为我不知道在哪里看,甚至100%确定它是否是可能.
因此,简而言之,就是它甚至是可行的(并不进入下C++ API和创建我自己的实现的WebRTC)的解码SRTP是与创造的原料WebRTC PeerConnection中Chrome和FireFox(从收集到的信息嗅探可能通过分组SDP交换)?[编辑:令人沮丧,似乎访问密钥(也称为主密钥)的私有部分是不可能的......请大家指正,如果我错]
我刚刚开始深入研究流媒体库和底层协议。我了解 rtsp/rtp 流媒体以及这两个协议的用途。但是,如果我们需要 IP 地址、编解码器和 rtsp/rtp 协议来流式传输来自任何摄像机的视频和音频,那么为什么我们有 onvif 标准,该标准本质上也旨在标准化 IP 网络设备之间的通信。我已经看到了 onvif 的定义,所以这不是我要找的。我想知道为什么在我们已经拥有 rtsp/rtp 的情况下我们还需要 onvif 以及它可以提供哪些额外的好处。
我们有捕获的 pcap 文件,其中包含每个 rfc6716 的 RTP opus 有效载荷,现在我们可以切断 RTP 标头并提取 opus 有效载荷,我们想根据规范将有效载荷封装到 ogg opus https://tools.ietf.org/html /draft-ietf-codec-oggopus-07 (Ogg Encapsulation for the Opus Audio Codec) 并发送出去,这样 VLC 就可以播放捕获的 opus,我们不想保存到 ogg 文件然后让 VLC 播放,我们一旦封装了一个数据包,就会将 ogg opus 直接发送到 VLC,任何有封装的引用实现的人,或者我可以参考的第 3 方库?
我的目标是在GSM/UMTS/LTE网络中建立一个即按即说聊天应用程序; 最初我想使用多播地址和点对点而不会使服务器过载; 不幸的是,经过深入调查,我发现GSM/UMTS/LTE网络中不允许多播,因此我必须使用服务器来反弹VoIP数据包.我不太喜欢这个解决方案,因为我不得不重载服务器,但我找不到更好的解决方案.如果你有一个替代解决方案非常适应...
因此,我必须将VoIP从Android客户端发送到服务器(PC),反之亦然.服务器是Java,它必须接收VoIP数据包然后将VoIP数据包发送到其他N个客户端; 服务器是VoIP数据包的保护者.
我开发了代码,但它不起作用; 我没有任何错误,只是我有非常糟糕的VoIP服务:我丢失了很多碎片,我听到的是非常多的声音......错误在哪里?我想它应该在服务器代码中; 服务器只需获取数据包并重新发送,而不知道它们是RTP上的VoIP.
如下请见
先谢谢你,福斯托
//使用ANDROID代码向服务器发送VOIP
//Attribute definition
private static final AudioCodec myAudioCodec_COSTANTE = AudioCodec.PCMU ;
private static final int myAudioGroupTX_COSTANTE = AudioGroup.MODE_NORMAL ;
private static final int myAudioGroupRX_COSTANTE = AudioGroup.MODE_NORMAL ;
private static final int myRtpStreamTX_COSTANTE = RtpStream.MODE_SEND_ONLY ;
private static final int myRtpStreamRX_COSTANTE = RtpStream.MODE_RECEIVE_ONLY ;
private static final int myAudioManagerTX_COSTANTE = AudioManager.MODE_IN_COMMUNICATION;
private static final int myAudioManagerRX_COSTANTE = AudioManager.MODE_IN_COMMUNICATION;
//Method called for VoIP trasmission
myAudioStream = new AudioStream(localClientIP);
myAudioGroup …Run Code Online (Sandbox Code Playgroud) 我们试图从数据包的 RTP 标头中提取“序列号”。我们使用 av_read_frame 将数据包读入 AVPacket 结构。
我们尝试使用 AVPacket.data 字段,希望它包含原始有效负载,但我们没有设法找到标头的正确位置。所以我们假设数据字段不包含完整的有效载荷 -如果我们错了,请更正。
有没有办法找到RTP头信息?
Viber 最近获得了“即时视频消息”选项,也称为“视频一键通”(vptt)。
在目录“.vptt”中的viber数据中有带有vptt扩展名的文件。信封格式是经典的 ZIP 文件,解压后会提供 jpg 缩略图和“视频”文件。
视频文件在第一行中写着“#!rtpplay1.0”,所以它应该是rtp-tools 的格式,也被wireshark使用,并且以某种方式与实际的WebRTC趋势有关......
因此,如果此 rtpdump 文件中的视频内容未加密(?),“如何保存 viber 即时消息一键通视频”归结为:“如何将 rtpdump 视频转换为 mp4”。
rtpplay 可以将其发送到某个端口,但 ffmpeg/ffplay/vlc 需要正确的 sdp 文件。
有人对此有进一步了解吗?