diff --git a/installer/kill_gstreamer.sh b/installer/kill_gstreamer.sh new file mode 100755 index 0000000..ab6c501 --- /dev/null +++ b/installer/kill_gstreamer.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# Script to kill all GStreamer processes +# This will stop all video encoders and audio encoders + +echo "Stopping all GStreamer processes..." + +# Function to log messages +log_message() { + echo "$(date +"%Y-%m-%d %H:%M:%S") - $1" +} + +# Kill all gst-launch processes +log_message "Killing gst-launch-1.0 processes..." +pkill -f "gst-launch-1.0" + +# Kill any remaining gstreamer processes +log_message "Killing any remaining GStreamer processes..." +pkill -f "gstreamer" +pkill -f "gst-" + +# Kill specific encoder scripts if they're running +log_message "Killing encoder scripts..." +pkill -f "video_storage_encoder_with_audio.sh" +pkill -f "video_software_encoder.sh" +pkill -f "video_combined_storage_and_stream.sh" +pkill -f "audio_encoder.sh" + +# Wait a moment for processes to terminate +sleep 2 + +# Check if any GStreamer processes are still running +REMAINING_GST=$(pgrep -f "gst-launch-1.0" | wc -l) +REMAINING_SCRIPTS=$(pgrep -f "encoder.sh" | wc -l) + +if [ $REMAINING_GST -eq 0 ] && [ $REMAINING_SCRIPTS -eq 0 ]; then + log_message "All GStreamer processes stopped successfully." +else + log_message "Warning: Some processes may still be running. Attempting force kill..." + + # Force kill any remaining processes + pkill -9 -f "gst-launch-1.0" + pkill -9 -f "gstreamer" + pkill -9 -f "encoder.sh" + + sleep 1 + + # Final check + FINAL_GST=$(pgrep -f "gst-launch-1.0" | wc -l) + FINAL_SCRIPTS=$(pgrep -f "encoder.sh" | wc -l) + + if [ $FINAL_GST -eq 0 ] && [ $FINAL_SCRIPTS -eq 0 ]; then + log_message "All processes forcefully terminated." + else + log_message "Error: Some processes could not be terminated. Manual intervention may be required." + log_message "Remaining GStreamer processes:" + pgrep -f "gst-launch-1.0" -l + log_message "Remaining encoder scripts:" + pgrep -f "encoder.sh" -l + fi +fi + +log_message "GStreamer cleanup completed." diff --git a/installer/sc.sh b/installer/sc.sh index 2e1418e..01acc42 100755 --- a/installer/sc.sh +++ b/installer/sc.sh @@ -1289,6 +1289,7 @@ After=network.target [Service] Type=simple +ExecStartPre=/bin/sleep 10 ExecStart=$SCRIPT_PATH Restart=on-failure RestartSec=10 @@ -1307,7 +1308,7 @@ EOF echo -e "${YELLOW}[⋯]${NC} Enabling video service to start on boot..." systemctl enable skycore-video.service - # Start the service + echo -e "${YELLOW}[⋯]${NC} Starting video service..." systemctl start skycore-video.service @@ -1407,11 +1408,8 @@ while true; do location="\$OUTPUT_DIR/\${TIMESTAMP}_segment_%05d.ts" \\ rtspsrc location=rtsp://${TARGET_IP}:8554/main.264 latency=50 drop-on-latency=true ! \\ rtph264depay ! h264parse ! \\ - nvv4l2decoder enable-max-performance=1 disable-dpb=1 ! \\ - nvvidconv ! \\ - video/x-raw,format=I420 ! \\ - videorate max-rate=25 ! \\ - x264enc tune=zerolatency speed-preset=ultrafast bitrate=2500 key-int-max=15 bframes=0 ! \\ + avdec_h264 ! videoconvert ! \\ + x264enc speed-preset=veryfast bitrate=12000 key-int-max=50 bframes=0 ! \\ h264parse config-interval=1 ! \\ queue max-size-buffers=100 max-size-time=1000000000 ! \\ mux. \\ @@ -1427,11 +1425,8 @@ while true; do timeout 3630 gst-launch-1.0 -e \\ rtspsrc location=rtsp://${TARGET_IP}:8554/main.264 latency=50 drop-on-latency=true ! \\ rtph264depay ! h264parse ! \\ - nvv4l2decoder enable-max-performance=1 disable-dpb=1 ! \\ - nvvidconv ! \\ - video/x-raw,format=I420 ! \\ - videorate max-rate=25 ! \\ - x264enc tune=zerolatency speed-preset=ultrafast bitrate=2500 key-int-max=15 bframes=0 ! \\ + avdec_h264 ! videoconvert ! \\ + x264enc speed-preset=veryfast bitrate=12000 key-int-max=50 bframes=0 ! \\ h264parse config-interval=1 ! \\ queue max-size-buffers=100 max-size-time=1000000000 ! \\ mpegtsmux ! \\ @@ -1479,6 +1474,7 @@ After=skycore-audio.service [Service] Type=simple +ExecStartPre=/bin/sleep 15 ExecStart=$SCRIPT_PATH Restart=on-failure RestartSec=10 @@ -1499,7 +1495,6 @@ EOF echo -e "${YELLOW}[⋯]${NC} Enabling video storage service to start on boot..." systemctl enable skycore-video-storage.service - # Start the service echo -e "${YELLOW}[⋯]${NC} Starting video storage service..." systemctl start skycore-video-storage.service diff --git a/installer/video_encoders/video_software_encoder.sh b/installer/video_encoders/video_software_encoder.sh index 57ab7b4..866d030 100755 --- a/installer/video_encoders/video_software_encoder.sh +++ b/installer/video_encoders/video_software_encoder.sh @@ -2,12 +2,11 @@ gst-launch-1.0 -e \ rtspsrc location=rtsp://192.168.144.25:8554/main.264 latency=50 drop-on-latency=true ! \ rtph264depay ! h264parse ! \ - nvv4l2decoder enable-max-performance=1 disable-dpb=1 ! \ - video/x-raw\(memory:NVMM\),format=NV12 ! \ - nvvidconv ! \ + avdec_h264 ! \ + videoconvert ! \ video/x-raw,format=I420 ! \ videorate max-rate=25 ! \ x264enc tune=zerolatency speed-preset=ultrafast bitrate=2500 key-int-max=15 bframes=0 ! \ h264parse config-interval=1 ! \ video/x-h264,stream-format=byte-stream,alignment=au ! \ - udpsink host=127.0.0.1 port=5010 sync=false \ No newline at end of file + udpsink host=127.0.0.1 port=5010 sync=false diff --git a/installer/video_encoders/video_storage_encoder_with_audio.sh b/installer/video_encoders/video_storage_encoder_with_audio.sh index 4bc2a1c..3b4e10d 100755 --- a/installer/video_encoders/video_storage_encoder_with_audio.sh +++ b/installer/video_encoders/video_storage_encoder_with_audio.sh @@ -51,11 +51,8 @@ while true; do location="$OUTPUT_DIR/${TIMESTAMP}_segment_%05d.ts" \ rtspsrc location=rtsp://192.168.144.25:8554/main.264 latency=50 drop-on-latency=true ! \ rtph264depay ! h264parse ! \ - nvv4l2decoder enable-max-performance=1 disable-dpb=1 ! \ - nvvidconv ! \ - video/x-raw,format=I420 ! \ - videorate max-rate=25 ! \ - x264enc tune=zerolatency speed-preset=ultrafast bitrate=2500 key-int-max=15 bframes=0 ! \ + avdec_h264 ! videoconvert ! \ + x264enc speed-preset=veryfast bitrate=12000 key-int-max=50 bframes=0 ! \ h264parse config-interval=1 ! \ queue max-size-buffers=100 max-size-time=1000000000 ! \ mux. \ @@ -71,11 +68,8 @@ while true; do timeout 3630 gst-launch-1.0 -e \ rtspsrc location=rtsp://192.168.144.25:8554/main.264 latency=50 drop-on-latency=true ! \ rtph264depay ! h264parse ! \ - nvv4l2decoder enable-max-performance=1 disable-dpb=1 ! \ - nvvidconv ! \ - video/x-raw,format=I420 ! \ - videorate max-rate=25 ! \ - x264enc tune=zerolatency speed-preset=ultrafast bitrate=2500 key-int-max=15 bframes=0 ! \ + avdec_h264 ! videoconvert ! \ + x264enc speed-preset=veryfast bitrate=12000 key-int-max=50 bframes=0 ! \ h264parse config-interval=1 ! \ queue max-size-buffers=100 max-size-time=1000000000 ! \ mpegtsmux ! \