首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Lauren的FPGA

    AIE(18)—更新RTP2

    如前所述,RTP也可以是数组。我们看一下数组为RTP的一个例子。如下图所示,HLS Kernel random_noise产生输入数据传递给AIE Kernel fir24_sym。 fir24_sym是一个滤波器,滤波器系数作为输入参数由PS传递,其输出经HLS Kernel s2mm写入到外部存储器。

    33610编辑于 2022-08-23
  • 来自专栏TSINGSEE青犀视频

    RTP协议可以用于直播吗?编译RTP推流程序报错类型不匹配问题解决

    目前RTP或者基于上面的WebRTC直接使用作为直播技术的挑战性非常高,还缺乏成熟的开源工具和生态,但是RTP的低延迟特性使得很多大厂正在进行二次开发。 RTP不是不可以作为直播平台的技术选项,只是目前缺乏很好的支持,需要自己进行定制开发的部分较多。作为视频行业的领导者,TSINGSEE青犀视频率先投入研发,尝试编译RTP推流程序。 在TSINGSEE青犀视频编译RTP推流程序时,出现以下错误:*const char * 类型的值不能用于初始化 char * 类型的实体。 此错误在于类型不匹配导致,针对此错误有以下几种解决办法: 1.在char*前加const关键字 const char *command = “select * from testtable”; 2.对变量进行强转 目前我们也在开发WebRTC打造的低延时直播平台,大家可以关注我们一起探讨了解一下。

    1.4K40发布于 2021-02-07
  • 来自专栏TSINGSEE青犀视频

    rtp推流如何使用ffmpeg配置rtp打包模式?

    关于使用rtp推流,TSINGSEE青犀视频团队实际已经研发了很长时间,其中也碰到了不少问题,比如RTP推流客户端无法解析播放,或者遇到不同的报错,但这些目前都已经有了比较完善的解决办法。 在使用RTP推流时,默认ffmpeg使用的打包模式是packetization-mode=1,本文我们和大家分享另一个比较实用的技巧,就是使用ffmpeg配置rtp打包模式。 如何修改打包模式? 关于RTP打包模式的说明如下: 目前ffmpeg默认使用的是1: Not interleaved 模式,针对客户的需要,服务端不支持STAP-A的组包模式,需要每个包单独发送,所以需要配置Single 配置完成后,还有个问题,需要配置pkt size,否则I帧无法完整发送,默认pkt size是1024个字节,而一般I帧都大于1024个字节,导致I帧发送不完整,图像传输失败,需要配置pkt size,在rtp url后面加上如下所示内容: rtp://192.168.99.138:6666?

    2.9K30发布于 2021-02-25
  • 来自专栏这里只有VxWorks

    RTP是啥?

    RTP是啥? VxWorks的RTP,全称是Real-Time Process,可以翻译为实时进程。 在6.0之前,VxWorks使用的是single的内存空间,操作系统与应用程序是不分离的。 从6.0开始,VxWorks引入了RTP。这个RTP在许多地方都与其它操作系统的进程差不多,例如对POSIX的兼容性。 所以了解UNIX/Linux进程模型的程序猿,很快就可以熟悉RTP的创建、执行或者终止。 ? 不过RTP是专门为RTOS设计的,为了满足实时性的需求,它与其它系统的进程还是有很多不同的。 有了RTP,就可以在用户模式下执行应用程序和操作系统的其它功能,这些功能在内核和应用程序之间具有清晰的划分。这种体系结构通常被称为进程模型。 同时,6.x与5.5保持了高度的兼容。 关于RTP的具体信息,咱们后文慢慢道来。 这正是: VX系统与时进,内核应用若比邻。 历史项目好兼容,不损实时高性能。

    3K20发布于 2019-07-10
  • 来自专栏全栈程序员必看

    RTP 协议

    RTP协议格式: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- RTP报头格式如图6.7所示,其中: 1.V:RTP协议的版本号,占2位,当前协议版本号为22. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 其PT即payload type为mpeg2 transport streams 也就是ts流,其SSRC为:0x65737D6c,其Seq号为15764,从中也可以看出对于一个RTP流其SEQ号可以开始于一个随机的数值

    1.1K30编辑于 2022-09-13
  • 来自专栏这里只有VxWorks

    cmd - RTP

    -> cmd [vxWorks *]# rtp Display process list [vxWorks *]# rtp [rtpId or Name] Display summary information about processes in memory [vxWorks *]# rtp exec <filename> Execute a RTP file named <filename> [vxWorks process initial task at creation time -e : specify an environment string of the form "name1=value1,name2= value2,..." rtp exec -e "LD_LIBRARY_PATH=/romfs/lib" a.vxe -p : specify the initial task priority -i no application symbols -v : (Vx7) verbosity level The [-v <level>] option sets the verbosity level. 2

    1.7K20编辑于 2023-02-26
  • 来自专栏这里只有VxWorks

    RTP之调度策略

    在《Task之调度策略》里介绍了VxWorks的主要调度策略,而有了RTP之后,系统又是如何调度的呢? 其实非常非常简单:RTP不参与调度,VxWorks还是使用之前的调度策略,即所有Task基于优先级抢占,以及默认关闭的时间片轮转。 如果你不打算使用pthread,现在就可以跳到文末点赞了 ----------分割线--------- 不过,为了更好的支持POSIX标准,VxWorks在RTP里引入了POSIX的Thread调度策略 事实上,要想在RTP里使用POSIX的Thread,必须要包含这种调度策略:INCLUDE_POSIX_PTHREAD_SCHEDULER ? 从名字上就可以看出来,这种策略只对RTP里的Thread有效。而Kernel里的Task和Thread,以及RTP里的Task,用的都是VxWorks的传统策略 ?

    1.8K10发布于 2019-09-30
  • 来自专栏全栈程序员必看

    RTP协议分析

    在视频直播等应用场合,由于生成整个媒体文件要等直播结束,也就是用户至少要在直播结束后才能看到直播节目,所以用下载方式不能实现直播。 流式传输是实现流媒体的关键技术。 另外,RealMedia这些流式媒体格式只是编解码有不同,但对于RTP来说,它们都是待封装传输的流媒体数据而没有什么不同。 第2章. RTP详解 2.1. RTP的协议层次 2.1.1. 从前面提出的功能需求,可以推测出RTP封装中应该有同步源和时戳等字段,但更为完整的封装是什么样子呢?请看图2。 图 2 RTP的头部格式 版本号(V):2比特,用来标志使用的RTP版本。 2) RTPRTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的接收端口。 第3章. 相关的协议 3.1. √ 表 2 协议分析要求 表 2给出了协议分析要求。

    1.6K40编辑于 2022-08-03
  • 来自专栏这里只有VxWorks

    RTP之COMP

    单机模式的Message Channel基于COMP实现,其速度略慢于Message Queue,但具有显著的优势(应用程序的可移植性,以供多节点Message Channel使用等),支持Kernel/RTP Message Queue 面向连接 非面向连接 双向 单向 Message长度可变 Message长度固定 Message数量无限制 Message数量固定 位置透明 Public Object支持RTP

    85920编辑于 2022-12-05
  • 来自专栏全栈程序员必看

    RTP协议简介

    在视频直播等应用场合,由于生成整个媒体文件要等直播结束,也就是用户至少要在直播结束后才能看到直播节目,所以用下载方式不能实现直播。 流式传输是实现流媒体的关键技术。 从前面提出的功能需求,可以推测出RTP封装中应该有同步源和时戳等字段,但更为完整的封装是什么样子呢?请看图2。 图 2 RTP的头部格式 版本号(V):2比特,用来标志使用的RTP版本。 2) RTPRTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的接收端口。 第3章. 相关的协议 3.1. √ 表 2 协议分析要求 表 2给出了协议分析要求。 时间戳课本中的定义: RTP包头的第2个32Bit即为RTP包的时间戳,Time Stamp ,占32位。

    2.2K21编辑于 2022-09-13
  • 来自专栏这里只有VxWorks

    RTP之Hook

    Task可以注册Hook,RTP也可以,只需在VIP中包含组件INCLUDE_RTP_HOOKS。 define RTP_GLOBAL_SYMBOLS 0x01 /* register global symbols for RTP */ #define RTP_LOCAL_SYMBOLS 0x02 /* idem for local symbols */ #define RTP_ALL_SYMBOLS (RTP_GLOBAL_SYMBOLS | RTP_LOCAL_SYMBOLS 0x00004000 /* no over/underflow stack protection,*/ #define VX_COPROC1_TASK 0x01000000 #define VX_COPROC2_ 例如RTP A正在创建RTP B,这种Hook是在RTP A的上下文里执行。Hook创建的对象,属于RTP A。

    72410编辑于 2022-06-30
  • 来自专栏machh的专栏

    RTP over TCP

    UDP协议上的RTSP/RTP需要打开许多UDP端口(每一路流媒体都需要2个UDP端口,一个用于接收数据,一个用于接收控制信息); 2.当因特网上的路由器没有打开这些端口的时候,第一点将会存在问题; 3 但是我们如果在TCP传输协议上承载RTSP/RTP将解决这些问题。 1. RTSP/RTP的控制命令和数据都通过一个端口,即RTSP的端口(默认为554),进行交互。 2. 但是,使用TCP传输协议承载RTSP/RTP需要花更多的功夫。 1. 由于二元交织,会使得RTP包封包和解包的过程变得更加复杂。 2. RTP数据标识符,"$" 一个字节 channel number: 信道数字 - 1个字节,用来指示信道 data length : 数据长度 - 2个字节,用来指示插入数据长度 RTP和RTCP数据会以$符号+1个字节的通道编号+2个字节的数据长度,共4个字节的前缀开始,RTSP数据是没有前缀数据的。

    2.5K10编辑于 2022-06-10
  • 来自专栏全栈程序员必看

    rtp协议详解

    1)V:RTP协议的版本号,占2位,当前协议版本号为2 2)P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分 3)X:扩展标志,占1位,如果X=1, 如有一个 H.264 的 NALU 是这样的: [00 00 00 01 67 42 A0 1E 23 56 0E 2F … ] 这是一个序列参数集 NAL 单元。 封装成 RTP 包将如下: [ RTP Header ] [ 67 42 A0 1E 23 56 0E 2F … ] 即只要去掉 4 个字节的开始码就可以了. 2)组合包:本类型用于聚合多个NAL单元到单个 00 0a 7f ca 94 05 3b7f 3e 7f fe 14 2b 27 26 f8 …??.;.>.?.+’&? 89 88 dd 85 62 e1 6dfc 33 01 38 1a 10 35 f2 14 ????b?m?3.8..5?.

    2.7K20编辑于 2022-09-07
  • 来自专栏这里只有VxWorks

    RTP之默认的SystemCall

    欢迎关注VxWorks567 用户模式与内核模式使用不同的指令集和MMU配置,因此在RTP中不能直接访问内核的资源,包括内核函数、内核数据,以及driver等。 如果迫不得已,RTP中必须要使用内核的某些机制,怎么解决?可以在RTP中重写相应功能,或者通过System Call! System Call对使用者是透明的,它的大致执行流程如下:RTP里调用System Call封装的API时,系统执行一个特定于体系结构的Trap操作,将CPU从用户模式更改为内核模式;完成Trap请求的操作后 详情如下 RTP函数(参数数量) 对应的内核操作 _close(1) _closeSc _creat(2) _creatSc _edrErrorInject(6) _edrErrorInjectSc _ (2) renameSc rtpInfoGet(2) rtpInfoGetSc rtpSpawn(7) rtpSpawnSc rtpVarAdd(2) rtpVarAddSc select(5) selectSc

    1.2K10发布于 2020-09-23
  • 来自专栏全栈程序员必看

    RTP协议–图文解释

    1)RTP协议从上层接收流媒体信息码流(如H.263),封装成RTP数据包; 2)RTCP从上层接收控制信息,封装成RTCP控制包。 2RTPRTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的接收端口。 三、RTP Header解析 前12字节是固定的,CSRC可以有多个或者0个。 1)V:RTP协议的版本号,占2位,当前协议版本号为2 2)P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分 3)X:扩展标志,占1位,如果X=1, 2)组合包:本类型用于聚合多个NAL单元到单个RTP荷载中。 封装成 RTP 包将如下: [ RTP Header ] [ 67 42 A0 1E 23 56 0E 2F … ] 即只要去掉 4 个字节的开始码就可以了.

    4.7K20编辑于 2022-09-13
  • 来自专栏Lauren的FPGA

    AIE(17)—更新RTP(1)

    AIE支持两种类型的RTP,一种是异步(Asynchronous),通常由PS或其他AIE Kernel控制。“异步”意味着RTP可以随时被更改。 在每次Kernel被调用时,RTP都会被读取,而不会进行任何同步处理。这种机制适合于参数不经常更新的场合,例如滤波器系数。另一种为同步RTP(Synchronous)。 图中sine为AIE Kernel,其中trigger为RTP,此处为标量。s2mm为HLS Kernel,最终通过HLS在PL侧实现。 在描述AIE Kernel sine时,phase_increment为输入参数,这里的名字是形参名,本质上就是RTP,只是RTP在graph.h中会另起名字。 这是和同步RTP的最大区别。在同步模式下,graph的run是受RTP的update控制的。在异步模式下,需要通过wait等待graph的run完成。

    40610编辑于 2022-08-23
  • 来自专栏全栈程序员必看

    RTP协议与实战

    RTP协议 在实时音视频通话中,我们通常使用 UDP 作为传输层协议,使用 RTP 协议包荷载音视频数据,RTP(Real-time Transport Protocol)是一种在 Internet UDP 协议没有序号等信息,而 RTP 协议可以补充许多音视频传输必要的信息,让音视频数据到达对端后可以重新组合完整,RTP 本身只保证实时数据的传输,并不能提供可靠传输保证,也没有流量控制,拥塞控制机制 RTP 协议格式如下,红色部分为 RTP 协议可选字段,RTP 协议最小为 12 byte。 Version:RTP 协议版本号 P:填充标识,如果该位为 1,说明该 RTP 包末尾包含了一个或多个填充字节,最后一个字节的值表示填充的字节数(包含最后一个字节本身),一般在一些需要固定块大小的加密算法中才需要填充 实战 使用JRTPLIB发送/接收RTP数据包 使用RTP包荷载H264码流 RTP扩展头部Audio Level的应用(mediasoup显示当前通话Speaker) 发布者:全栈程序员栈长,转载请注明出处

    1.8K20编辑于 2022-09-13
  • 来自专栏全栈程序员必看

    RTP协议头详解

    1.RTP协议 RTP:即可心跑在TCP也可以跑在UDP上,实时流协议,所以通常是跑在UDP上。 前 12 个字节出现在每个 RTP 包中,仅仅在被混合器插入时,才出现 CSRC 识别符列表。 各个域的含义如下所示: (1)版本(V):2 比特,此域定义了 RTP 的版本。此协议定义的版本是 2。(值 1 被 RTP 草案版本使用,值 0 用在最初”vat”语音工具使用的协议中。) (2)填充(P):1 比特,若填料比特被设置,则此包包含一到多个附加在末端的填充比特,填充比特不算作负载的一部分。填充的最后一个字节指明可以忽略多少个填充比特。 其他的负载类型码可以通过非 RTP 方法动态定义。RTP发送端在任意给定时间发出一个单独的 RTP 负载类型;此域不用来复用不同的媒体流。 几个连续的 RTP 包如果是同时产生的。如:属于同一个视频帧的 RTP 包,将有相同的序列号。 不同媒体流的 RTP 时间戳可能以不同的速率增长。而且会有独立的随机偏移量。

    2.6K20编辑于 2022-09-13
  • 来自专栏这里只有VxWorks

    RTP之静态库

    除了共享库,RTP也可以像内核态一样,去使用静态库 - Static Library。 它俩的区别是 RTP即使只调用共享库中的一个函数,也会加载整个库文件;RTP如果只使用静态库中的一个函数,则只会链接该函数所在的.o文件,而不是整个.a文件 多个RTP使用同一个共享库时,一共只需要加载一次 ;多个RTP使用同一个静态库时,每个RTP都要去链接、加载它 静态库的使用就简单多了,VIP都不需要包含INCLUDE_SHL 还是以Vx69为例,新建一个RTP工程 根据Target选择相应的Active build spec Build tool改为Librarian 将代码加入工程,build得到.a文件 这时就可以在应用程序的RTP里调用这个静态库的函数了 只需要在工程的属性中包含这个.a

    92810编辑于 2022-01-24
  • 来自专栏音视频技术

    RTP诞生记

    1992年11月初,我在网上发布了视频会议工具nv(Network Video),经过初步的测试,它已经可以用来向全球视频直播部分IETF 11月的会议,来自15个国家的200个子网络能够接收直播,在一周内有大概 nv源代码随后在1993年2月公布,3月份我发布了一个基于小波理论压缩方案的新版本nv。5月,我为这个工具添加了彩色视频支持。 nv成为当时互联网直播会议的主要工具之一,甚至被NASA选中直播航天飞行任务的现场报道。 我当时正在准备4.0alpha版本的发布,并打算将这个版本迁移到RTP协议的第2版上,但我后来转向了其他项目,所以这项工作从未完成过。 nv也被用于各种硬件视频会议项目,使得这些项目可以通过高带宽以太网和 ATM 网络发送完整的 NTSC 高质量直播视频。 为什么要自己压缩视频?

    99950发布于 2021-07-30
领券