使用套接字从嵌入式设备播放 RTP 流

发布于 2024-10-13 15:14:49 字数 241 浏览 6 评论 0原文

我正在嵌入式设备上编写一个应用程序,该设备接收携带 G.729、PCM 或 H.264 的 RTP 流。数据包作为 RTP 数据包的 char* 到达我的应用程序。我希望能够看到或收听流(作为测试),但在此设备上我没有播放器。我想我可以将此流转发到套接字并在其他地方播放 RTP 流,例如在运行播放器的 Linux 机器上。这可能吗?我没有RTSP,只有RTP。例如,VLC 是一种可能的方法吗?我可以简单地将 RTP 数据包发送到套接字以在另一端播放它们吗? 谢谢!

I'm writing an application on an embedded device which receives an RTP stream which carries G.729, PCM or H.264. The packets arrive to my application as a char* to the RTP packet. I would like to be able to see or listen to the stream (as a test), but on this device I don't have player. I thought I may forward this stream to a socket and play the RTP stream somewhere else, like on a Linux machine running a player. Would this be possible? I don't have RTSP, only RTP. Is VLC, for instance, a possible way to do this? Can I simply send the RTP packets to the socket to play them on the other side?
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

掩耳倾听 2024-10-20 15:14:49

包含 H.264 流的 SDP 示例:

Server: rtsp server

Content-type: application/sdp

Content-base: rtsp://[some URL]

Content-length: 505



v=0

o=rtsp 1295996924 1590699491 IN IP4 0.0.0.0

s=RTSP Session

i=rtsp server

c=IN IP4 192.168.1.2

t=0 0

a=control:*

m=audio 0 RTP/AVP 97

a=rtpmap: 97 mpeg4-generic/8000/1

a=fmtp: 97 streamtype=5; profile-level-id=15; objectType=2; mode=AAC-hbr;

a=range:npt=now-

a=control:trackID=0

m=video 0 RTP/AVP 96

a=rtpmap:96 H264/90000

a=fmtp:96 profile-level-id=42E015; sprop-parameter-sets=Z0LgFdoHgtE=,aM4wpIA=; packetization-mode=1

a=range:npt=now-

a=framesize:96 480-352

a=control:trackID=1 

example of SDP that contains H.264 stream:

Server: rtsp server

Content-type: application/sdp

Content-base: rtsp://[some URL]

Content-length: 505



v=0

o=rtsp 1295996924 1590699491 IN IP4 0.0.0.0

s=RTSP Session

i=rtsp server

c=IN IP4 192.168.1.2

t=0 0

a=control:*

m=audio 0 RTP/AVP 97

a=rtpmap: 97 mpeg4-generic/8000/1

a=fmtp: 97 streamtype=5; profile-level-id=15; objectType=2; mode=AAC-hbr;

a=range:npt=now-

a=control:trackID=0

m=video 0 RTP/AVP 96

a=rtpmap:96 H264/90000

a=fmtp:96 profile-level-id=42E015; sprop-parameter-sets=Z0LgFdoHgtE=,aM4wpIA=; packetization-mode=1

a=range:npt=now-

a=framesize:96 480-352

a=control:trackID=1 
揪着可爱 2024-10-20 15:14:49

不,你不能。简单 RTP 不包含任何有关流格式等的信息,仅包含有关数据包本身的信息:序列号、时间戳、附加同步信息。传输 RTP 的最简单方法是 RTP/MPEG TS (MPEG 传输流)。

不幸的是我不知道准备使用解决方案。 VLC 可以通过 UDP 从文件流式传输(并播放)此类流,因此它从文件容器格式获取所需信息。这样的解决方案可以采用 SDP 格式的外部流描述和您的实际 RTP 数据包

[编辑] 顺便说一句,它是奇怪的是,您只收到 RTP 流,没有对其格式的任何描述,通常其描述是由 RTSP、MPEG-TS 或其他内容以某种方式提供的

no, you cannot. simple RTP doesn't contain any info about the stream format etc., only info about the packet itself: sequence number, timestamp, additional synchronization info. the simplest way to stream RTP is RTP/MPEG TS (MPEG Transport Stream).

unfortunately I don't know ready to use solution. VLC can stream (and play) such streams over UDP from a file, so it takes required info from file container format. Such solution could take external stream description in SDP format and your actual RTP packets

[EDIT] btw, it's weird that you receive just RTP stream w/o any description of its format, usually its description is provided somehow by RTSP, MPEG-TS or something else

贪恋 2024-10-20 15:14:49

您可以通过 UDP 套接字转发 RTP 数据包。

You can forward RTP packets over a UDP socket.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文