3

我有一个 IP:192.168.1.XX 的视频服务器它有 3 种可能的格式 JPEG、MPEG-4 或 H.264

视频服务器正在实时播放视频(带音频)

使用 AFORGE lib 流式传输视频没有问题,但我还需要流式传输音频

视频服务器有几种协议:HTTP、RTSP、RTP、RTCP

根据用户手册,RTSP 是我应该用来获取 MPEG-4(音频和视频)的协议,但我还没有找到任何可以在 C# 上通过 RTSP 流式传输的内容,所以我尝试将音频和视频分开传输

端口是:

RTSP:554 RTP(视频):5556 RTP(音频):5558 RTCP(视频):5557 RTCP(音频):5559

有谁知道 RTP 是如何工作的,或者我如何从视频服务器获取声音?

4

2 回答 2

1

我会学习gstreamer。我假设您使用的是 Windows,因为您是在 C# 中执行此操作的。它有一个相当稳定的 Windows 端口和一个不错的 .net 包装器。如果您不使用 Windows,那么 gstreamer 无疑是您的最佳选择。

在 gstreamer 中,您很可能会使用如下管道:

your video src -> x264enc or ffenc_mpv4 -> rtph264pay or rtpmp4vpay -> udpsink

your audio src  -> ffenc_aac or preferably a lower latency codec like mULaw -> rtppay -> udpsink

等等。这是非常容易使用。如果您想实际管理 rtp 会话,他们甚至有一个不错的 rtpbin 供您使用。

更多信息可以在这里找到:

http://gstreamer.freedesktop.org/

这是如何执行 rtp 的一个很好的示例:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-gstrtpbin.html

我已经用直接显示过滤器完成了这种事情,但它涉及的更多。您通常必须手动处理 rtp 负载和传输(更不用说处理 COM),而 GStreamer 为您提供了开箱即用的这些机制。

于 2012-05-15T01:37:39.630 回答
0

您可以使用https://net7mma.codeplex.com/

它是一个 C# 媒体服务器,它会为您获取每个 RtpPacket,然后您可以从那里将它们发送到您选择的解码器等等,而不会陷入源流。

于 2012-12-14T18:38:00.330 回答