通过主管

时间:2015-11-09 12:38:13

标签: flask gstreamer video-capture supervisord supervisor

我使用主管调用并保持烧瓶服务器运行以控制我的网络界面是一个简单的录像机。

Supervisor以root权限调用服务器,因此最终记录的文件对于当前用户来说是无法访问的,因为他需要转换并将它们转移到最后的其他地方。

是否有任何解决方案告诉主管以普通用户而不是root用户运行flask应用程序?

另一个问题是关于我为我的界面实现的实时预览。使用此选项,用户可以在开始录制之前看到实时预览5秒(它是一个简单的gstreamer管道: gst-launch v4l2src device = / dev / video1!jpegdec!ffmpegcolorspace )< / p>

但是当我尝试查看此预览时重新启动系统后它失败并在日志文件中给出了这个错误:

错误:来自element / GstPipeline:pipeline0 / GstXImageSink:ximagesink0:无法初始化X输出 其他调试信息: ximagesink.c(1284):gst_ximagesink_xcontext_get():/ GstPipeline:pipeline0 / GstXImageSink:ximagesink0: 无法打开显示 ./testWebcam.sh:5:kill:没有这样的过程

以下是放置在/etc/supervisor/conf.d/RunFlask.conf中的主管的配置文件:

[program:flask_app]                                                                     
command = python main.py                                      
directory = /dir/to/your/app                            
autostart =     true                                                                
autorestart = true

并且为了完成,这里是我用来记录的gstreamer管道:

nohup gst-launch-1.0 v4l2src do-timestamp=true device=/dev/video0  ! 'video/x-raw,format=BGR,width=1024,height=768'  ! videoconvert ! queue ! x264enc ! mux.  pulsesrc device="alsa_input.usb-Samson_Technologies_Samson_Go_Mic_Direct-00-Direct.analog-stereo" !  'audio/x-raw,rate=88200,channels=1,depth=24' !  audioconvert  !  avenc_aac compliance=experimental ! mux. matroskamux name="mux"  ! filesink location=/home/sina/Desktop/Recordings/Screen.mp4  v4l2src device=/dev/video1 ! videorate  ! 'image/jpeg,framerate=30/1,width=1920,height=1080' ! queue ! mux2. pulsesrc device="alsa_input.usb-046d_Logitech_Webcam_C930e_AAF8A63E-02-C930e.analog-stereo" ! 'audio/x-raw,rate=44100,channels=1,depth=24' !  audioconvert !  avenc_aac compliance=experimental ! queue ! mux2.  matroskamux name="mux2" !   filesink location=/home/sina/Desktop/Recordings/Webcam.mkv & 

1 个答案:

答案 0 :(得分:1)

您可以在超级用户配置中指定用户:

[program:flask_app]
user=yourusername

这将在给定用户下运行您的烧瓶应用程序。