Score:0

เซิร์ฟเวอร์ ffmpeg rtsp ไม่หยุดเมื่อเพียร์ตัดการเชื่อมต่อ

ธง ar

มีอินสแตนซ์ ffmpeg ที่ทำงานเป็นเซิร์ฟเวอร์บน VPS ซึ่งแปลงวิดีโอ RTSP เป็น HLS และให้บริการบนเว็บ (โดยใช้ Apache) วิดีโอ RTSP มาจากคอมพิวเตอร์ที่อื่น (ในกรณีนี้คือเมืองอื่น) ซึ่งฉันเชื่อมต่อกับกล้อง IP คอมพิวเตอร์ใช้ข้อมูล RTSP จากกล้อง IP และแปลใหม่เป็น VPS

นี่คือคำสั่ง ffmpeg ที่ฉันใช้บนคอมพิวเตอร์เครื่องนั้น

ffmpeg \
-rtsp_transport tcp \
-i rtsp://[ที่อยู่ IP ของกล้อง]:554/live \
-c:v สำเนา \
-f rtsp \
-rtsp_transport tcp \
rtsp://[ที่อยู่ IP ของ VPS]:4445/live.sdp

และนี่คือคำสั่งที่ฉันใช้บน VPS:

ffmpeg \
-rtsp_flags ฟัง \
-listen_timeout 5 \
-หมดเวลา 5000000 \
-rtsp_transport tcp \
-i rtsp://[ที่อยู่ IP ของ VPS]:4445/live.sdp \
- แผนที่ 0 \
- ธง + global_header \
-fflags +igndts \
-c:v สำเนา \
-g 0 \
-b:v 125k \
-อัตราสูงสุด 250k \
-บัฟไซส์ 500k \
-hls_time 1 \
-hls_list_size 15 \
-hls_wrap 15 \
-y /dev/shm/hls/video.m3u8

จนถึงตอนนี้ทุกอย่างทำงานได้ดี: ฉันสามารถอ่านสตรีม HLS ในเบราว์เซอร์ได้ และค่อนข้างเสถียรและรวดเร็ว ปัญหาเกิดขึ้นเมื่อการเชื่อมต่อระหว่างรีสตรีมเมอร์กับ VPS ลดลง: ฉันต้อง ssh เข้าไปใน VPS และรีสตาร์ทอินสแตนซ์ ffmpeg ด้วยตนเอง เป็นไปได้ไหมที่จะบอก ffmpeg ให้ "ผิดพลาด" (หรือเพียงแค่หยุดกระบวนการ) เมื่อไม่มีอินพุตเข้ามา -ผม ที่อยู่ (ทางฝั่งของ VPS)? ฉันกำลังใช้สคริปต์ทุบตีที่เริ่มต้นกระบวนการใหม่โดยอัตโนมัติ เพื่อให้ได้รับการดูแล

เพื่อหลีกเลี่ยงความสับสน: ตาม เอกสารอย่างเป็นทางการของ ffmpeg เดอะ หมดเวลา ธงใช้ MICROSECONDS เป็นค่าและ ฟัง_หมดเวลา ใช้เวลาวินาที ผมเห็นหลายกระทู้ที่มีคนเถียงกันเรื่องนั้น :)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา