หยุดการบันทึกหลังจากผ่านไปสักพัก


13

ffmpegฉันมีอุปกรณ์ที่บันทึกวิดีโอโดยใช้เว็บแคมด้วย มันใช้งานได้ดีมากเมื่อการบันทึกเริ่มขึ้นฉันจะได้รับสัญญาณ USR1 และหลังจากหยุดการบันทึกเราจะได้รับสัญญาณ USR2

แต่ฉันต้องการหยุดการบันทึกหลังจากเวลาการบันทึก 1 ชั่วโมง

ฉันไม่รู้ แต่ฉันคิดว่าฉันต้องส่งสัญญาณ USR2 ไปยังอุปกรณ์หลังจากผ่านไป 1 ชั่วโมง

ดังนั้นฉันจะทำสิ่งนี้ได้อย่างไร ... !!!

ขอบคุณล่วงหน้า.

คำตอบ:


23

ใช้-tตัวเลือก จากman ffmpeg:

-t ระยะเวลา (อินพุต / เอาต์พุต)

เมื่อใช้เป็นตัวเลือกอินพุต (ก่อนหน้า-i) จำกัดระยะเวลาของข้อมูลที่อ่านจากไฟล์อินพุต

เมื่อนำมาใช้เป็นตัวเลือกเอาต์พุต (ก่อนที่ชื่อไฟล์เอาท์พุท) หยุดเขียนเอาท์พุทหลังจากระยะเวลาของมันถึงระยะเวลา

ระยะเวลาที่จะต้องเป็นข้อกำหนดระยะเวลาให้ดูที่ส่วนระยะเวลาเวลาใน ffmpeg-utils (1) คู่มือ

-toและ-tเป็นเอกสิทธิ์เฉพาะบุคคลและ-tมีลำดับความสำคัญ

ตัวอย่างที่บันทึกเป็นเวลาหนึ่งชั่วโมง:

ffmpeg -f v4l2 -i /dev/video0 -t 01:00:00 output

หรือในไม่กี่วินาที:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output

3
-tใช้ไวยากรณ์ช่วงเวลาที่มีอยู่ที่นี่: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie

5

หากคุณใช้ ffmpeg หรือ avconv จากบรรทัดคำสั่งคุณสามารถใช้timeoutคำสั่ง:

timeout 3600 avconv -f video4linux2 -r 25 -i /dev/video0  -vcodec mpeg4 -y out.mp4

0

หากคุณทราบล่วงหน้าหมดเวลาคุณควรใช้วิธีการที่กำหนดไว้อย่างแน่นอนอย่างไรก็ตามหากคุณต้องการส่งสัญญาณไปยังกระบวนการคุณสามารถใช้คำสั่งkill (แม้จะใช้ 90% สำหรับ TERM หรือ KILL สามารถส่งสัญญาณใด ๆ - kill -s USR2 pid)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.