Gstreamer mux,帽子拒绝了

时间:2012-10-24 10:22:41

标签: gstreamer avi matroska muxer

我在Win 7 x64上的Gstreamer OSS Build 0.10.7中使用以下管道(SIMPLIFIED):

udpsrc ! application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264,        payload=(int)96 !
gstrtpjitterbuffer latency=200 ! rtph264depay ! tee name=h264Tee 

h264Tee. ! queue ! h264parse ! mux. 

matroskamux name=mux ! filesink location=rec.mkv sync=false // same for avimux/mp4/qt

h264Tee. ! queue ! ffdec_h264 ! tee name=videoTee 

//.videoTee ! queue ! dx9videosink
//.videoTee ! queue ! appsink

//udpsrc ! queue ! directsoundsink

audiotestsrc ! mux. //only for testing, should be connected to udpsrc

该管道通过Gstreamer-Sharp发布。 这是管道的控制台输出:

WARN default xoverlay.c:354:gst_x_overlay_set_xwindow_id:<videoSink> Using deprecated gst_x_overlay_set_xwindow_id()
ERROR d3dvideosink d3dvideosink.c:2204:gst_d3dvideosink_release_swap_chain: Direct3D device has not been initialized
WARN bin gstbin.c:2378:gst_bin_do_latency_func:<pipeline0> failed to query latency
WARN matroskamux matroska-mux.c:970:gst_matroska_mux_video_pad_setcaps:<mux> pad video_0 refused caps 05370C40

只要我省略了复用器,视频和音频都会播放得很好。当在管道中包含复用器时,视频会立即冻结,并且听不到声音。有什么不对,为什么muxer会拒绝上限?

1 个答案:

答案 0 :(得分:0)

好吧我自己解决了: 上面的视频大写不包含播放时不需要的sprop-parameter-sets。然而,对于编码,它们是必需的,因为流的各种属性在这些内编码:

udpsrc ! 
application/x-rtp, media=(string)video, clock-rate=(int)90000, 
encoding-name=(string)H264, 
sprop-parameter-sets= (string)\"Z0LADdkBQfsBEAAAAwAQAAADAyjxQqSA\\,aMuMTIA\\=\", 
payload=(int)96, 
ssrc (uint)2332354585, 
clock-base=(uint)1158355497, 
seqnum-base=(uint)10049 !
gstrtpjitterbuffer latency=200 ! rtph264depay ! tee name=h264Tee 

...