【问题标题】:Playing RTP stream from embedded device using sockets使用套接字从嵌入式设备播放 RTP 流
【发布时间】:2011-06-13 14:55:14
【问题描述】:

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

【问题讨论】:

    标签: c++ vlc rtp


    【解决方案1】:

    包含 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 
    

    【讨论】:

      【解决方案2】:

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

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

      [EDIT] 顺便说一句,很奇怪你只收到 RTP 流而没有任何格式的描述,通常它的描述是由 RTSP、MPEG-TS 或其他东西提供的

      【讨论】:

      • 看来写这个SDP并不简单。 RFC 似乎相当复杂。你有什么链接我可以参考为 PCMU 流或 H.264 流写一个吗?感谢您的回答。我认为这是正确的。
      【解决方案3】:

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

      【讨论】:

      • 好的,所以我转发打开一个 UDP 套接字,我可以在另一端使用 VLC 吗? File->Open netwrok...->Open RTP/UDP Stream,然后作为协议我该选择什么?我想 RTP 因为它是实际的协议。我对吗?这是正确的方法吗? RTP 标头中的数据应该足以让 VLC 了解负载中的内容并呈现内容,对吗?谢谢!
      • RTP 是协议,它在每个 RTP 数据包头中指定了实际的媒体负载类型。许多 RTP 有效负载类型使用静态/默认参数(时钟速率等)向 IANA 注册。但是,也可以使用其他参数。 SIP/SDP、RTSP 或其他几种协议中的任何一种,通常用于在传输实际 RTP 流之前宣布/协商 RTP 参数。我不知道 VLC 是否/如何处理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 2017-01-30
      相关资源
      最近更新 更多