当前位置: 首页 > 知识库问答 >
问题:

为什么ffplay可以在没有sdp的情况下播放rtp流?

姜羽
2023-03-14

我发现了一个负载类型为98的rtp h264流,通过运行ffplay-v trace-I,它可以在没有sdp文件的情况下直接播放udp://127.0.0.1:9880,但它是一个rtp流。

我跑步建了一条小溪

ffmpeg-重帧率10-循环1-i/未经加工的jpeg-vcodec libx264-bf 0-g 24-payload\u type 98-f rtprtp://127.0.0.1:9880

然后,运行ffplay-v trace-iudp://127.0.0.1:9880

输出:

Initialized opengl renderer.
[NULL @ 0x7f58d4000b80] Opening 'udp://127.0.0.1:9880' for reading
[udp @ 0x7f58d4001680] No default whitelist set
[udp @ 0x7f58d4001680] end receive buffer size reported is 131072
Probing mp3 score:1 size:2048q=    0KB vq=    0KB sq=    0B f=0/0   
Probing mp3 score:1 size:4096
Probing mp3 score:1 size:8192
Probing mp3 score:1 size:16384
    nan    :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0   
[AVIOContext @ 0x7f58d4021ea0] Statistics: 1049843 bytes read, 0 seeks
udp://127.0.0.1:9880: Invalid data found when processing input

ffplay无法探测格式

我捕获了udp数据包,并进行了比较,然后发现流的每个NAL都是0,而我的流的,一些NAL是0,一些NAL不是。

[NAL在每个rtp数据包中为0][1]:https://i.stack.imgur.com/Jm0Pq.png

[NAL不是0][2]:https://i.stack.imgur.com/GT0Im.png

如何使用每个NAL为0构建rtp h264流?

为什么rtp流可以在没有sdp文件的情况下播放?谢谢

共有1个答案

杜楚
2023-03-14

RTP使用SDP协议来协商endpoint之间的会话特征。endpoint(为用户运行的浏览器或其他软件)发送SDP,表示“我知道如何接收这些格式”。一旦SDP协商完成,RTP流的发送方将使用协商的格式。您可以解码这样的RTP流也就不足为奇了:ffplay可以根据流中嵌入的信息确定其格式,尤其是在PPS和SPS NALU中。

 类似资料:
  • 我们配置了EC2实例,该实例具有对SQS和EC2的完全权限的IAM角色。有没有什么方法可以在没有AWS的任何SDK/CLI支持的情况下发送消息到队列?仅使用来自EC2实例的简单REST调用?

  • 在Hibernate继承映射中,JPA每类表策略, 根实体不需要表来映射, 子实体做,每个子实体都有一个表。 在我的理解中,实体是:带有映射配置的java类,它应该映射到一个表, 那么,如果没有要映射的表,根实体如何作为实体存在呢? 如果它不需要一个表来映射,我们为什么不用一个@mappedSuperclass呢? 我们可以使用此根实体进行查询吗?

  • 问题内容: 我正在尝试编写一个执行脚本;但是,如果没有要提交的内容,则git会退出,状态为。部署脚本将其视为不成功,然后退出。我确实想检测 实际 要提交的故障,因此我不能仅仅给Fabric全面忽略故障。如何允许忽略空提交故障,以便部署可以继续进行,但仍然可以捕获实际提交失败时导致的错误? 问题答案: 通过检查git diff?的退出代码来预先捕获此条件。 例如(在shell中): 编辑:根据霍尔格

  • 我正在从文档中学习反应,但不确定在这个例子中超级()做什么。通常,它不需要传递给创建新实例的参数,然后调用React吗?组件的构造函数方法将这些参数合并到实例中?没有任何争论它是做什么的?

  • 我想知道为什么Spring boot可以反序列化没有默认构造函数的类由Jackson的ObjectMapper,但是当我在单元测试中手动使用ObjectMapper时,它不能反序列化(com.fasterxml.jackson.databind.exc.Invalid定义异常:不能构造实例的(没有创建者,像默认构造函数,存在):不能反序列化从对象值(没有基于委托或属性的创建者))。 这是我的控制器