【问题标题】:MPEG4 out of Raw RTP Payload原始 RTP 有效负载中的 MPEG4
【发布时间】:2012-03-06 12:33:07
【问题描述】:

好的,我遇到了以下问题:

  1. 我有一个 IP 摄像机,它能够通过 RTP 传输 MPEG4 数据

  2. 我可以通过 RTSP 连接到这台相机

  3. 我可以接收原始 RTP 数据。

那么我现在有什么问题呢?

1.提取数据

我真正想要的数据是什么?我知道我必须对 RTP Header 进行中继 - 但是我还需要从 RTP 数据包中删除什么吗?

2。打包模式

我读到我的SDP 中应该有一个字段Packetization Mode - 好吧它不存在。这是否意味着我必须假设某种标准的打包模式?

3.解包

如果我做对了,我需要用Marker Bit = false 缓冲所有传入的帧,直到我得到一个带有Marker Bit = true 的帧才能获得完整的MPEG4 FrameMPEG4 Frame 我到底要了解什么?关键帧 + 数据直到下一个关键帧?

4.解码

那我还要解码数据吗?在其他线程中,我看到人们使用了另一个解码器——但是还有什么要解码的呢?我的意思是相机应该发送已经MPEG4编码的数据?

5.库

如果我真的需要解码数据,有没有我可以使用的开放库?或者甚至有一个库,它有一些功能,我可以在其中转储我的 RTP 数据,然后魔法发生,我得到了我的 mp4。 (但我认为不会有那样的事情......)

注意:我想做的一切都应该是我自己的应用程序的一部分,例如,我不能使用外部软件来解析数据。

长话短说-我真的需要一些逐步的解释才能做到这一点。我知道这是一个广泛的问题,但我不知道更多。我还查看了RFCs,但我无法从中提取太多信息。

另外我已经查了这两个问题:

How to process raw UDP packets so that they can be decoded by a decoder filter in a directshow source filter

MPEG4 extract from RTP payload

但第一个问题的冗长答案也无法让我明白一切。

更新:好吧,我进一步了解了一点,现在我不知道该去哪里找了。看来,我的目的实际上并不需要所有打包的东西等。我还用openRTSP 录制了一个流。当我在十六进制编辑器中打开这些文件时,我看到有 16 个字节我无法识别,然后是 SDPconfig 部分。然后框架以通常的00 00 01 B6 开始。 oprenRTSP 还为 MP4 添加了某种尾巴——好吧,我实际上不知道我需要什么,什么只是一些非强制性的“额外”东西。

【问题讨论】:

    标签: c++ rtsp rtp mpeg


    【解决方案1】:

    我知道我必须对 RTP 标头进行中继 - 但是有什么 否则我需要从 RTP 数据包中删除?

    RTP 数据包可能包含来自文件格式(例如 MP4)的填充数据,或者它可能直接基于 RFC 3640 或类似的东西。你需要找出答案。

    对于 MPEG4 帧,我到底要了解什么?关键帧 + 数据 直到下一个关键帧?那我还有解码数据吗? 在其他线程中,我看到人们使用了另一个解码器 - 但什么是 还有要解码的吗?我的意思是相机应该已经发送数据 MPEG4 编码?

    您应该探索 MPEG 压缩的基础知识以充分理解这一点。解包只给你一串比特。这是压缩数据。您需要解压缩(解码)才能在屏幕上看到它。

    有没有我可以使用的开放库?

    试试ffmpegMPEG4IP

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2017-12-17
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多