Hentikan perekaman setelah beberapa periode waktu

13

Saya memiliki perangkat yang merekam video menggunakan webcam dengan ffmpeg. Ini bekerja dengan baik, ketika rekaman dimulai saya mendapatkan sinyal USR1. Dan setelah menghentikan rekaman, kami menerima sinyal USR2.

Tapi saya ingin menghentikan rekaman setelah 1 jam waktu perekaman.

Saya tidak tahu, tetapi saya pikir saya harus melewati sinyal USR2 ke perangkat setelah 1 jam.

Jadi bagaimana saya bisa melakukan ini ... !!!

Terima kasih sebelumnya.

Prakash V Holkar
sumber

Jawaban:

23

Gunakan -topsi. Dari man ffmpeg:

-t durasi (input / output)

Saat digunakan sebagai opsi input (sebelum -i), batasi lamanya data dibaca dari file input.

Ketika digunakan sebagai opsi keluaran (sebelum nama file keluaran), berhenti menulis keluaran setelah durasinya mencapai durasinya .

durasi harus berupa spesifikasi durasi waktu, lihat bagian Durasi waktu dalam manual ffmpeg-utils (1) .

-todan -tsaling eksklusif dan -tmemiliki prioritas.

Contoh yang merekam selama satu jam:

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

Atau dalam hitungan detik:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
llogan
sumber
3
-tmenggunakan sintaks Durasi Waktu yang tersedia di sini: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie
5

Jika Anda menjalankan ffmpeg atau avconv dari baris perintah, Anda bisa menggunakan timeoutperintah:

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

Jika Anda tahu sebelumnya batas waktu Anda harus menggunakan metode yang diberikan, namun, jika Anda benar-benar ingin mengirim sinyal ke proses, Anda dapat menggunakan perintah kill (meskipun digunakan 90% untuk TERM atau KILL, dapat mengirim sinyal APA PUN - kill -s USR2 pid)

Alessandro Chemini
sumber