gpt4 book ai didi

h.264 - RTSP 上音频和视频的相同媒体格式

转载 作者:行者123 更新时间:2023-12-01 22:55:13 25 4
gpt4 key购买 nike

我们公司开发了一个摄像头监控软件,我们主要使用 RTSP 与设备通信(但我们支持所需的任何协议(protocol)),我们开发了自己的 RTSP 客户端和解析器

今天我们正在研究一个新摄像头的集成,我们发现了一个有趣的场景,摄像头将动态有效载荷 96 映射到音频和视频数据包,请参阅 SDP 描述:

RTSP/1.0 200 OK
CSeq: 2
Date: Sat, Jan 01 2000 19:39:38 GMT
Content-Base: rtsp://10.1.39.174:8557/PSIA/Streaming/channels/2?videoCodecType=H.264/
Content-Type: application/sdp
Content-Length: 830

v=0
o=- 946754247689123 1 IN IP4 10.1.39.174
s=RTSP/RTP stream from IPNC
i=2?videoCodecType=H.264
t=0 0
a=tool:LIVE555 Streaming Media v2010.07.29
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:RTSP/RTP stream from IPNC
a=x-qt-text-inf:2?videoCodecType=H.264
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:4000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001F;sprop-parameter- sets=Z2QAKK2EBUViuKxUdCAqKxXFYqOhAVFYrisVHQgKisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQCgC3YCqQAAAMABAAAAwJZgQAB6EgAAiVQve+F4RCNQAAAAAE=,aO48sA==
a=control:track1
m=audio 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:128
a=rtpmap:96 PCMU/16000
a=control:track2
m=application 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:64
a=rtpmap:96 vnd.onvif.metadata/90000
a=control:track3

如你看到的:
m=video 0 RTP/AVP 96
m=audio 0 RTP/AVP 96

问题是我们使用这个映射来识别接收到的 RTP 数据包的压缩。
我一直认为每种媒体都会有不同的映射,比如视频 96 和音频 97(甚至静态映射,比如 PCMU 的 0),但是这个设备对所有媒体使用相同的映射,所以,我们的解析器不会工作,因为它将使用有效负载 96 接收的音频数据包识别为视频数据包,并将它们直接发送到视频解码器,当然它不会工作......

我已经检查过 VLC 工作正常,但我坚信 VLC 不使用此映射来拆分数据包,而是使用 channel 标识(在 TCP 中)或不同的 UDP 端口来识别哪些数据包属于哪个媒体......但是我们已经构建了我们的架构来根据负载类型拆分数据包

所以我问......将音频和视频都映射到相同的动态有效载荷编号(96)是否正确?

这是我第一次遇到这个问题,我需要知道我们是否必须更改整个 RTSP 客户端以使用 channel 而不是 Payload 格式来识别媒体,或者相机端是否存在实现错误他们应该将其他有效载荷编号链接到每个不同的媒体(96 个视频、97 个音频、98 个应用程序......)

有谁知道这种做法(对所有媒体使用相同的有效载荷编号)是否有效???

我们已经使用 RFC 规范实现了 RTSP 客户端和 SDP 解析器,但我没有发现任何与对所有媒体使用相同有效载荷编号相关的内容,在所有示例中,它们总是为每个媒体分配不同的有效载荷编号......

最佳答案

这是一个非常好的问题。从您发布的 SDP 的语义来看,这台相机似乎正在实现 RTSP来自 RFC 2326 的规范基于 a=control 的存在 field 。

在本规范中,可以观察到每个媒体负载都有一个特定的控制参数,第一个控制语句是a=control:*。 .从规范的第 83 页,我觉得音频和视频流可以设置为

audio = rtsp://10.1.39.174:8557/PSIA/Streaming/channels/track2


video = rtsp://10.1.39.174:8557/PSIA/Streaming/channels/track1

关于h.264 - RTSP 上音频和视频的相同媒体格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com