通过GStreamer和Python实现RTMP

2024-09-28 22:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将以下GStreamer命令移植到python程序中:

gst-launch-0.10 -v -m v4l2src ! queue ! ffmpegcolorspace ! queue ! x264enc pass=pass1 threads=0 bitrate=1536 tune=zerolatency ! queue ! flvmux name=mux  pulsesrc ! queue max-size-bytes=134217728 max-size-time=20000000000 max-size-buffers=1000 ! audioconvert ! lame ! audio/mpeg ! queue ! mux. mux. ! queue ! rtmpsink location='rtmp://x.x.x.x/live/myStream'

使用此命令,可以在流式传输到wowza服务器时录制和观看实时流。但是我在将这个命令移植到python时遇到了一些问题。尤其是RTMP接收器似乎会引起麻烦(因为它正在使用filesink):

^{pr2}$

输出如下:

    PAUSED: /GstPipeline:diepipeline/GstQueue:queue5 (__main__.GstQueue)
PAUSED: /GstPipeline:diepipeline/GstFlvMux:flvmux (__main__.GstFlvMux)
PAUSED: /GstPipeline:diepipeline/GstBin:audio2/GstQueue:queue4 (__main__.GstQueue)
PAUSED: /GstPipeline:diepipeline/GstBin:audio2/GstCapsFilter:capsfilter0 (__main__.GstCapsFilter)
PAUSED: /GstPipeline:diepipeline/GstBin:audio2/GstLame:lame0 (__main__.GstLame)
PAUSED: /GstPipeline:diepipeline/GstBin:audio2/GstAudioConvert:audioconvert0 (__main__.GstAudioConvert)
PAUSED: /GstPipeline:diepipeline/GstBin:audio2/GstQueue:queue3 (__main__.GstQueue)
PAUSED: /GstPipeline:diepipeline/GstBin:audio2 (gst.Bin)
PAUSED: /GstPipeline:diepipeline/GstBin:videoenc/GstQueue:queue2 (__main__.GstQueue)
PAUSED: /GstPipeline:diepipeline/GstBin:videoenc/GstX264Enc:x264enc0 (__main__.GstX264Enc)
PAUSED: /GstPipeline:diepipeline/GstBin:videoenc/GstQueue:queue1 (__main__.GstQueue)
PAUSED: /GstPipeline:diepipeline/GstBin:videoenc/GstFFMpegCsp:ffmpegcsp0 (__main__.GstFFMpegCsp)
PAUSED: /GstPipeline:diepipeline/GstBin:videoenc/GstQueue:queue0 (__main__.GstQueue)
PAUSED: /GstPipeline:diepipeline/GstBin:videoenc (gst.Bin)
PAUSED: /GstPipeline:diepipeline/GstPulseSrc:pulsesrc0 (__main__.GstPulseSrc)
PAUSED: /GstPipeline:diepipeline/GstDecklinkSrc:src (__main__.GstDecklinkSrc)
PAUSED: /GstPipeline:diepipeline (gst.Pipeline)
PAUSED: /GstPipeline:diepipeline/GstFileSink:filesink0 (__main__.GstFileSink)

你知道是什么引起这个问题吗?谢谢!在


Tags: 命令sizequeuemainmaxmuxgstpaused
1条回答
网友
1楼 · 发布于 2024-09-28 22:31:36

好吧,经过几个小时的尝试,我发现我的代码有缺陷。在

不得不删除我的rtmp url中的单引号:

 self.rtmpsink = gst.parse_launch("rtmpsink location='rtmp://x.x.x.x/live/myStream'")

^{pr2}$

有时候最简单的事情就是那些花费你最多时间的事情。。。在

相关问题 更多 >