首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏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
  • 来自专栏TSINGSEE青犀视频

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

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

    1.4K40发布于 2021-02-07
  • 来自专栏这里只有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报头和RTP的负载: RTP报文由两部分组成:报头和有效载荷。 X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。 4. CC:CSRC计数器,占4位,指示CSRC 标识符的个数。 5. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

    1.1K30编辑于 2022-09-13
  • 来自专栏这里只有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协议分析

    在视频直播等应用场合,由于生成整个媒体文件要等直播结束,也就是用户至少要在直播结束后才能看到直播节目,所以用下载方式不能实现直播。 流式传输是实现流媒体的关键技术。 RTP用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。服务质量由RTCP来提供。这些特点,在第4章可以看到。 2.1.2. RTP实现者在发送RTP数据时,需先将数据封装成RTP包,而在接收到RTP数据包,需要将数据从RTP包中提取出来。 2.2. RTP的封装 一个协议的封装是为了满足协议的功能需求的。 CSRC计数器(CC):4比特,含有固定头部后面跟着的CSRC的数目。 标记位(M):1比特,该位的解释由配置文档(Profile)来承担. 载荷类型(PT):7比特,标识了RTP载荷的类型。 第4章. 常见的疑问 4.1. 怎样重组乱序的数据包 可以根据RTP包的序列号来排序。 4.2. 怎样获得数据包的时序 可以根据RTP包的时间戳来获得数据包的时序。 4.3.

    1.6K40编辑于 2022-08-03
  • 来自专栏这里只有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 -X : (Vx7) do not return the exit code of foreground RTP, just return 0 -- : mark the end of "rtp exec " options [vxWorks *]# rtp attach Display the attachment list [vxWorks *]# rtp attach [rtpId or Name] *]# rtp detach Detache the shell session from the current memory context [vxWorks *]# rtp foreground

    1.7K20编辑于 2023-02-26
  • 来自专栏machh的专栏

    RTP over TCP

    中间网络路由器很容易就过滤或者忽略掉UDP数据包; 4. UDP是不可靠传输协议,媒体包在因特网上传输时会面临着丢包。 但是我们如果在TCP传输协议上承载RTSP/RTP将解决这些问题。 1. RTP和RTCP数据会以$符号+1个字节的通道编号+2个字节的数据长度,共4个字节的前缀开始,RTSP数据是没有前缀数据的。 RTP数据和RTCP数据的区别在于第二个字节的通道编号, // 下面给出一个 RTP OVER TCP 方式数据头结构定义 4oct / typedef struct rtsp_interleaved SETUP rtsp://222.201.145.236/slamtv60.264/track1 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/1.1.11 (LIVE555 服务端响应DESCRIBE请求所发回的报文, RTSP/1.0 200 OK CSeq: 4 Date: Wed, Mar 07 2012 03:48:18 GMT Transport: RTP/AVP

    2.5K10编辑于 2022-06-10
  • 来自专栏这里只有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 ) #define RTP_DEBUG 0x10 /* set RTP in debug mode when created */ #define RTP_BUFFER_VAL_OFF 例如RTP A正在创建RTP B,这种Hook是在RTP A的上下文里执行。Hook创建的对象,属于RTP A。

    72310编辑于 2022-06-30
  • 来自专栏这里只有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 _ semCtlSc send(4) sendSc sendmsg(3) sendmsgSc sendto(6) sendtoSc setprlimit(4) setprlimitSc setsockopt

    1.2K10发布于 2020-09-23
  • 来自专栏这里只有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用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。服务质量由RTCP来提供。这些特点,在第4章可以看到。 2.1.2. RTP实现者在发送RTP数据时,需先将数据封装成RTP包,而在接收到RTP数据包,需要将数据从RTP包中提取出来。 2.2. RTP的封装 一个协议的封装是为了满足协议的功能需求的。 CSRC计数器(CC):4比特,含有固定头部后面跟着的CSRC的数目。 标记位(M):1比特,该位的解释由配置文档(Profile)来承担. 载荷类型(PT):7比特,标识了RTP载荷的类型。 第4章. 常见的疑问 4.1. 怎样重组乱序的数据包 可以根据RTP包的序列号来排序。 4.2. 怎样获得数据包的时序 可以根据RTP包的时间戳来获得数据包的时序。 4.3.

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

    RTP协议–图文解释

    一、什么是RTP 数据传输协议RTP,用于实时传输数据。RTP报文由两部分组成:报头和有效载荷。 二、RTP的会话过程 当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。 则在RTP报头后跟有一个扩展报头 4)CC:CSRC计数器,占4位,指示CSRC标识符个数 5)M:标志,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。 每个CSRC标识了包含在RTP报文有效载荷中的所有提供信源。 提供信源用来标识对一个RTP混合器产生的新包有贡献的所有RTP包的源。 载荷H264码流:红色RTP协议头,黄色H264码流 RTP头后是RTP载荷,RTP载荷第一个字节格式跟NALU头一样: F和NRI也跟NALU头一样,只有Type有些不一样:拓展24 – 31 0 封装成 RTP 包将如下: [ RTP Header ] [ 67 42 A0 1E 23 56 0E 2F … ] 即只要去掉 4 个字节的开始码就可以了.

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

    rtp协议详解

    则在RTP报头后跟有一个扩展报头 4)CC:CSRC计数器,占4位,指示CSRC标识符个数 5)M:标志,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。 封装成 RTP 包将如下: [ RTP Header ] [ 67 42 A0 1E 23 56 0E 2F … ] 即只要去掉 4 个字节的开始码就可以了. 2)组合包:本类型用于聚合多个NAL单元到单个 Q~._.Bq. 17 65 62 a1 f1 44 dc df 4b 4a 38 aa 96 b7 dd 24 .eb??D??KJ8???? 4)SPS/PPS 一个frame分割成多个slice,一个slice分割成多个宏块。一个Slice编码之后被打包进一个NAL单元。 一个MP4文件只有一个SPS,但是有很多PPS,SPS必须在所有NALU的最开头。

    2.7K20编辑于 2022-09-07
  • 来自专栏这里只有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

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

    RTP诞生记

    1992年11月初,我在网上发布了视频会议工具nv(Network Video),经过初步的测试,它已经可以用来向全球视频直播部分IETF 11月的会议,来自15个国家的200个子网络能够接收直播,在一周内有大概 在接下来的几个月里,有三个工作坊和一些小型会议通过nv向互联网直播,三个工作坊包括意大利的NetWorkshop、MCNC Packet Audio and Video workshop和位于瑞典的关于分布式虚拟现实的 nv成为当时互联网直播会议的主要工具之一,甚至被NASA选中直播航天飞行任务的现场报道。 nv也被用于各种硬件视频会议项目,使得这些项目可以通过高带宽以太网和 ATM 网络发送完整的 NTSC 高质量直播视频。 为什么要自己压缩视频? RTP遗憾 对于RTP我并没有什么遗憾。但我知道,人们对RTP最多的抱怨是实现RTCP的复杂性(RTCP是与主要RTP数据流量并行运行的控制协议)。

    99850发布于 2021-07-30
  • 来自专栏这里只有VxWorks

    UGL之RTP里的WindML

    要想使用WindML,需要先将源码编译为库,内核态就用DKM来编译,用户态当然就用RTP了 打开Workbench,建个RTP: ? 给它起个名字,然后选择合适的build spec。 接下来,根据DKM里的配置来config这个windml,两者要保持一致 Build这个RTP之后,就得到了WindML在用户态的两个库 ? 现在,可以在RTP中使用WindML了。先建个VIP ? BSP就用simpc,Tool chain要与之前的DKM和RTP的build spec都一致。其它选项用默认值就行了 ? 接下来,新建一个RTP,build spec与之前的工程一致,例如上文的SIMPENTIUMgnu_RTP,其它选项使用默认值。 然后在这个RTP里也添加Middleware Component,不过这次选择Application Support ? 添加WindML的代码后,就可以在RTP里执行UGL应用了 ?

    1.2K20发布于 2019-12-19
  • 来自专栏Lauren的FPGA

    AIE(17)—更新RTP(1)

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

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

    RTP协议与实战

    RTP 协议格式如下,红色部分为 RTP 协议可选字段,RTP 协议最小为 12 byte。 header,扩展头部个数由 Extension header length 决定 Extension header length:表示后面的 Extension header 共有几个字节,长度以 4 字节为单位,例如 length = 3 表示 Extension header 一共占 3*4=12 个字节 Extension header:具体的扩展头部,由 ID,L,data 组成,可以是 one-byte ID 和 L 分别占 4 bit,加起来等于 one-byte,ID 表示扩展头部 ID 标记,L 表示 extension data 所占字节数 -1,例如 L = 0 时实际 data 占一个字节, 由于头部需要按 4 字节对齐,因此中间补充了 padding 数据,最后一个 extension header data 占 4 字节。

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

    RTP协议头详解

    1.RTP协议 RTP:即可心跑在TCP也可以跑在UDP上,实时流协议,所以通常是跑在UDP上。 前 12 个字节出现在每个 RTP 包中,仅仅在被混合器插入时,才出现 CSRC 识别符列表。 (4)CSRC 计数(CC):4 比特,CSRC 计数包含了跟在固定头后面 CSRC 识别符的数目。 (5)标志(M):1 比特,标志的解释由具体协议规定。 其他的负载类型码可以通过非 RTP 方法动态定义。RTP发送端在任意给定时间发出一个单独的 RTP 负载类型;此域不用来复用不同的媒体流。 几个连续的 RTP 包如果是同时产生的。如:属于同一个视频帧的 RTP 包,将有相同的序列号。 不同媒体流的 RTP 时间戳可能以不同的速率增长。而且会有独立的随机偏移量。 RTP 包流的源,用 RTP 报头中 32 位数值的SSRC 标识符进行标识,使其不依赖于网络地址。

    2.6K20编辑于 2022-09-13
领券