Saya mencoba membuat dashcam dari perangkat streaming RTSP menggunakan ffmpeg (dengan Python). Saya sudah menjalankannya, tetapi saya kehilangan sedikit video antara menghentikan file dan memulai file baru.
Pseudocode saya terlihat seperti ini:
Start recording in 5s increments
while True:
now = get current time
if now > split:
stop recording
start recording with new file name
Kapan pun saya mengirim pemicu, saya menunggu (hingga 5 detik) hingga file saat ini ditulis ke disk, lalu saya menggabungkan jumlah file yang diperlukan untuk mendapatkan video dengan durasi yang diinginkan. Masalahnya adalah saya kehilangan waktu antara berhenti dan memulai.
Saya memulai file baru seperti ini:
process_cmd = "ffmpeg -y -loglevel panic -i rtsp://{}:{}@{} -vf scale={}:{} -t {} {}".format(self._rtsp_login, self._rtsp_pwd, self._rtsp_server, self._width, self._height,self._rtsp_video_duration,output_file)
self._process_handle = subprocess.Popen(process_cmd, shell=True)
Saya menunggu videonya selesai direkam oleh:
self._process_handle.wait()
Apa cara yang lebih bersih untuk melakukan ini? Salah satu opsinya adalah menulis file yang lebih panjang dan kemudian menggunakan ffmpeg untuk mengekstrak N detik yang diinginkan darinya.
proc = subprocess.Popen("ffmpeg -y -i rtsp://admin:[email protected] -profile:v high -pix_fmt nv12 -b:v 15M -acodec aac out.mp4", stdin=subprocess.PIPE,shell=True)
Ini mengharuskan saya menghentikan perekaman terlebih dahulu dengan mengirimkan 'q' ke proses dan kemudian:
subprocess.Popen("ffmpeg -y -sseof -00:00:3 -i out.mp4 -vcodec copy -acodec copy test.mp4", shell=True)
Namun file sumber tersebut (out.mp4) harus sering dibersihkan dan jika suatu peristiwa terjadi pada saat itu, maka saya tidak akan dapat mengambil datanya.
-segment_wrap
. Lihat Memangkas (menghapus bingkai dari) video langsung dari webcam menggunakan python, FFmpeg Salin Streaming Langsung (Batas hingga 60 detik file), Streaming MJPEG ke file, tetapi simpan hanya x terakhir menit - person llogan   schedule 26.06.2021