2

我正在尝试从 rtp 有效负载中提取 mpeg4,rtsp 媒体(视频)的格式是 MP4V-ES,但我无法从有效负载中提取 mp4。当我将提取物转储到原始文件中并使用 ffmpeg 将其转换为 .avi 或 .mpg 时,它不起作用。我不知道我在这里错过了什么。代码是用java编写的。我想从 rtp 中提取每个视频帧并将其保存在文件中或重新传输。

谢谢

问题已更新.....感谢您的输入,实际上我可以从 000001b6 中提取字节并将其发送到 ffmpeg ,但它抱怨不是标头信息,然后我用 000001b0 00000000 和 000001B5 00000005 构建了一个标头并将其发送到ffmpeg,但没有运气。你能帮我吗,因为我从 RTP 得到的是 000001b6 [data] 和 000001b6 [data] 我什至跟着 'Cipi' 只添加了 000001 但没有工作。我在这里错过了什么吗!并且还想知道我是否需要解码/编码,因为我从 RTP 获得的是实际的 mpeg4 数据,然后我不知道为什么要解码它,我可以将它保存一个文件并使用 quicktime 或 VLC 打开吗?它应该显示正确的一帧。

4

1 回答 1

1

MPEG-4 视频 RTP 有效负载在RTP Payload Format for MPEG-4 Audio/Visual Streams中进行了描述。

另请参阅如何处理原始 UDP 数据包,以便它们可以由 directshow 源过滤器中的解码器过滤器解码,并简要说明重建 MPEG-4 视频流所需的步骤。

更新:您可能需要在会话描述符中查找B0B5。为了让您知道在哪里寻找,这里是一个 MPEG-4 RTSP/SDP 响应的示例:

RTSP/1.0 200 OK
CSeq: 2
Content-Base: rtsp://192.168.0.57/webcam/
Content-Type: application/sdp
Content-Length: 320

v=0
o=- 1 1 IN IP4 127.0.0.1
s=Test
a=type:broadcast
t=0 0
c=IN IP4 0.0.0.0
m=video 0 RTP/AVP 96
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=1;config=000001B003000001B509000001000000012000C488BA9850584121463F
a=control:track0
m=audio 0 RTP/AVP 97
a=rtpmap:97 AMR/8000/1
a=fmtp:97
a=control:track1
于 2011-10-25T10:46:45.663 回答