如何使用Windows版本的gstreamer和wireshark获取.pcap文件并从RTP中提取H.264?

时间:2012-01-16 16:01:04

标签: ffmpeg h.264 gstreamer rtp wireshark

我有一个pcap文件,其中包含带有H.264视频的RTP和带有SDP的SIP的捕获。我希望能够从RTP流中提取视频并将其保存到文件中。 (h264video.mkv或类似的东西)

我已经开始将gstreamer视为可能的解决方案,但我无法对从程序中收到的任何输出进行故障排除。

gst-launch -v     filesrc location=testh264.rtp     
! application/x-rtp,media=video,clock-rate=90000,payload=123,encoding-name=H264     
! rtph264depay                   
! ffdec_h264                     
! xvimagesink

这是我尝试过的一个例子,但我无法通过rtph264depay,因为我发送的文件格式无效。如何从我的pcap文件中提取h264有效负载以便与gstreamer / rtph264depay一起使用?

3 个答案:

答案 0 :(得分:2)

问题是pcap文件不包含原始RTP有效负载,它以某种方式格式化(here is how)。
您可以使用pcapparse plugin提取原始数据:

$ gst-launch filesrc location=testh264.rtp
    ! pcapparse
    ! application/x-rtp,media=video,clock-rate=90000,payload=123,encoding-name=H264     
    ! rtph264depay ! ffdec_h264
    ! autovideosink

答案 1 :(得分:1)

你应该有autovideosink可以自动为你选择正确的视频接收器。否则,它可能就像“dshowsink”。尝试gst-inspect,同时为dshow或directshow点击它,它应该告诉你要使用什么。

答案 2 :(得分:0)

我看到这篇帖子已经老了,但我有同样的问题,这是我的管道工作(使用gstreamer-1.0):

C:\gstreamer\1.0\x86_64\bin>gst-launch-1.0.exe -m -v filesrc location=C:/Work/log.pcap ! pcapparse src-port=7000 caps="application/x-rtp,media=video,payload=96,clock-rate=90000,encoding-name=H264,profile-level-id=4d0029,sprop-parameter-sets=\"Z00AKeKQFoe2BqwYBBuHiRFQ,aO48gA==\"" ! rtph264depay ! video/x-h264, width=740, height=480, framerate=(fraction)15/1 ! avdec_h264 ! avimux ! filesink location=C:/Work/out.avi

我从发送rtp流的摄像机的SDP文件中获取的sprop-parameter-sets。