微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 php 脚本通过 pulsesrc 启动 gstreamer 管道

如何解决使用 php 脚本通过 pulsesrc 启动 gstreamer 管道

我正在尝试使用 PHP 脚本执行 gstreamer 管道。我能够让测试管道正常工作而没有任何错误。但是当我在 PHP 脚本中尝试下面的管道时,我从pulsesrc 元素中得到一个错误

$output = shell_exec('sudo /usr/bin/gst-launch-1.0 -e v4l2src device=/dev/video1 ! tee name=t1 t1. ! queue ! video/x-raw,width=1920,height=1080,framerate=30/1 ! nvvidconv ! queue ! nvv4l2h264enc maxperf-enable=1 bitrate=4000000 profile=4 ! queue ! h264parse ! queue ! mux. pulsesrc device="alsa_input.usb-VXIS_Inc_ezcap_U3_capture-02.analog-stereo" ! queue ! audio/x-raw,width=16,depth=16,rate=44100,channel=1 ! audioconvert ! voaacenc ! aacparse ! mpegtsmux name=mux ! filesink location=Feed1TS.ts t1. ! queue ! video/x-raw,framerate=30/1 ! nvvidconv ! queue ! "video/x-raw(memory:NVMM),width=959,height=540,framerate=30/1,format=NV12" ! queue ! nvoverlaysink overlay-x=0 overlay-y=270 overlay-w=959 overlay-h=540 overlay=1 v4l2src device=/dev/video0 io-mode=2 do-timestamp=true ! tee name=t2 t2. ! queue ! image/jpeg,framerate=30/1 ! videorate ! image/jpeg,framerate=30/1 ! nvv4l2decoder mjpeg=1 ! nvvidconv ! video/x-raw,framerate=30/1 ! nvvidconv ! queue ! "video/x-raw(memory:NVMM),format=NV12" ! nvv4l2h264enc maxperf-enable=1 bitrate=4000000 profile=4 ! queue ! h264parse ! queue ! mpegtsmux ! filesink location=Feed2TS.ts t2. ! queue ! image/jpeg,format=NV12" ! queue ! nvoverlaysink overlay-x=960 overlay-y=270 overlay-w=960 overlay-h=540 overlay=2 2>&1 &');

下面是错误

Setting pipeline to PAUSED ...
opening in BLOCKING MODE 
opening in BLOCKING MODE 
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstpulseSrc:pulsesrc0: Failed to connect: Connection refused
Additional debug info:
pulsesrc.c(1015): gst_pulsesrc_open (): /GstPipeline:pipeline0/GstpulseSrc:pulsesrc0
opening in BLOCKING MODE 
Setting pipeline to NULL ...
Freeing pipeline ...

所以我尝试了没有pulsesrc元素的相同管道,然后管道运行良好

$output = shell_exec('sudo /usr/bin/gst-launch-1.0 -e v4l2src device=/dev/video1 ! tee name=t1 t1. ! queue ! video/x-raw,framerate=30/1 ! nvvidconv ! queue ! nvv4l2h264enc maxperf-enable=1 bitrate=4000000 profile=4 ! queue ! h264parse ! queue ! mpegtsmux ! filesink location=Feed1TS.ts t1. ! queue ! video/x-raw,format=NV12" ! queue ! nvoverlaysink overlay-x=960 overlay-y=270 overlay-w=960 overlay-h=540 overlay=2 2>&1 &');

我也尝试仅使用pulsesrc管道进行测试,如下所示。

$output = shell_exec('sudo /usr/bin/gst-launch-1.0 -e pulsesrc device=alsa_input.usb-VXIS_Inc_ezcap_U3_capture-02.analog-stereo ! queue ! audio/x-raw,channel=1 ! audioconvert ! vorbisenc ! oggmux ! filesink location=HW1.ogg 2>&1 &');

PHP 调用时它也不起作用。管道输出如下所示。

Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstpulseSrc:pulsesrc0: Failed to connect: Connection refused
Additional debug info:
pulsesrc.c(1015): gst_pulsesrc_open (): /GstPipeline:pipeline0/GstpulseSrc:pulsesrc0
Setting pipeline to NULL ...
Freeing pipeline ... 

这可能是什么问题,我该如何解决pulsesrc中的这个错误

以上所有管道都在命令行中完美运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。