2015-12-28 27 views
0

我试图将UDP流存储到不同大小的MP4文件。使用Gstreamer将UDP流以不同的比特率或视频格式保存到mp4

用于1080视频来生成发展的目的后,它会通过网络摄像机来代替UDP流

UDP服务器片:

gst-launch-0.10 -v filesrc location=video.mp4 ! decodebin ! ffmpegcolorspace  ! videoscale ! video/x-raw-yuv,width=1920,height=1088 ! timeoverlay halignment=right ! clockoverlay time-format="%Y/%m/%d %H:%M:%S" ! x264enc tune=zerolatency bitrate=2998 speed-preset=superfast  ! queue ! rtph264pay name=pay0 pt=96  ! udpsink host=127.0.0.1 port=5000 

有了以下的管道,我可以用相同的视频显示尺寸播放UDP流在哪个UDP流媒体

gst-launch-1.0 udpsrc uri=udp://127.0.0.1:5000 \ 
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01ADdoFB+/8CqwIAEAAAAMAQAAADKPFCqg\\=\\,aO88gA\\=\\=\", payload=(int)96, ssrc=(uint)1045780718, clock-base=(uint)2990047309, seqnum-base=(uint)65496" \ 
! rtph264depay \ 
! avdec_h264 \ 
! autovideosink 

现在,我想保存在不同的视频屏幕大小的MP4文件这个流。

我想下面的管道,但它给错误

erroneous pipeline: could not link videoscale0 to h264parse0 

gst-launch-1.0 udpsrc uri=udp://127.0.0.1:5000 \ 
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01ADdoFB+/8CqwIAEAAAAMAQAAADKPFCqg\\=\\,aO88gA\\=\\=\", payload=(int)96, ssrc=(uint)1045780718, clock-base=(uint)2990047309, seqnum-base=(uint)65496" \ 
! rtph264depay \ 
! decodebin \ 
! queue \ 
! videoconvert ! videoscale ! video/x-raw,width=1280,height=720 ! h264parse ! x264enc tune=zerolatency bitrate=2998 speed-preset=superfast ! queue \ 
! autovideosink 

发展后,它会通过文件接收

[编辑] 12月30日被替换使用autovideosink,2015年

我做管道中的一些变化,现在正在运行但不一致。它有时会起作用,有时会失败。我认为,这是RTP流和解码器中的同步问题。然而目前的变化是,

  1. 更改decodebin到avdec_h264,为什么? 我看到GStreamer管线图,decodebin的src没有连接 到videoconvert的接收器。所以管道实际上已经坏了。 用avdec_h264替换decodebin,并且管道已完成。

当前管道:

 
gst-launch-1.0 udpsrc uri=udp://127.0.0.1:5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01ADdoFB+/8CqwIAEAAAAMAQAAADKPFCqg\\=\\,aO88gA\\=\\=\", payload=(int)96, ssrc=(uint)1045780718, clock-base=(uint)2990047309, seqnum-base=(uint)65496" ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! queue ! videoconvert ! videoscale ! video/x-raw,width=1280,height=720 ! x264enc tune=zerolatency bitrate=2998 speed-preset=superfast ! queue ! filesink location=video-2.mp4 

但现在越来越以下错误,

 
0:00:00.217021017 18449  0x1c50850 ERROR     libav :0:: first_mb_in_slice overflow 
0:00:00.217066624 18449  0x1c50850 ERROR     libav :0:: decode_slice_header error 
0:00:00.217085496 18449  0x1c50850 ERROR     libav :0:: first_mb_in_slice overflow 
0:00:00.217101775 18449  0x1c50850 ERROR     libav :0:: decode_slice_header error 
0:00:00.217118391 18449  0x1c50850 ERROR     libav :0:: first_mb_in_slice overflow 
0:00:00.217133568 18449  0x1c50850 ERROR     libav :0:: decode_slice_header error 
0:00:00.217231425 18449  0x1c50850 ERROR     libav :0:: left block unavailable for requested intra mode at 0 1 
0:00:00.217260466 18449  0x1c50850 ERROR     libav :0:: error while decoding MB 0 1, bytestream 1286 
0:00:00.242377091 18449  0x1c50850 ERROR     libav :0:: first_mb_in_slice overflow 
0:00:00.242642392 18449  0x1c50850 ERROR     libav :0:: decode_slice_header error 
0:00:00.242670418 18449  0x1c50850 ERROR     libav :0:: first_mb_in_slice overflow 
0:00:00.242689807 18449  0x1c50850 ERROR     libav :0:: decode_slice_header error 
0:00:00.242709715 18449  0x1c50850 ERROR     libav :0:: first_mb_in_slice overflow 
0:00:00.242728336 18449  0x1c50850 ERROR     libav :0:: decode_slice_header error 
0:00:00.242821704 18449  0x1c50850 ERROR     libav :0:: left block unavailable for requested intra mode at 0 1 
0:00:00.242851186 18449  0x1c50850 ERROR     libav :0:: error while decoding MB 0 1, bytestream 1193 

回答

0

这一个联系我。 decodebin已经为你提供了video/x-raw。

gst-launch-1.0 udpsrc uri=udp://127.0.0.1:5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01ADdoFB+/8CqwIAEAAAAMAQAAADKPFCqg\\=\\,aO88gA\\=\\=\", payload=(int)96, ssrc=(uint)1045780718, clock-base=(uint)2990047309, seqnum-base=(uint)65496" \ 
! rtph264depay \ 
! decodebin ! queue \ 
! videoconvert ! videoscale ! video/x-raw,width=1280,height=720 ! x264enc tune=zerolatency bitrate=2998 speed-preset=superfast \ 
! queue ! autovideosink