Error yang korang nampak
Bila connect Frigate ke camera HikVision, log dia keluar macam ni:
[flv @ 0x5597bab65d40] Video codec hevc not compatible with flv
Could not write header for output file #0 (incorrect codec parameters ?): Function not implemented
front: Unable to read frames from ffmpeg process.
Camera HikVision default pakai H.265 (HEVC). Frigate cuba decode guna format flv, tapi flv tak support HEVC. Sebab tu dia crash.
Root cause
Frigate guna ffmpeg internally untuk pull RTSP stream dari camera. Kalau camera output H.265 dan ffmpeg cuba wrap dalam container format yang tak support codec tu, memang fail.
HikVision ada dua stream: main stream (biasanya H.265) dan sub stream (biasanya H.264). Kalau korang pointing ke main stream, tu la punca masalah ni.
Cara fix
Option 1: Tukar ke sub stream (H.264)
Dalam config Frigate, tukar RTSP URL ke sub stream:
cameras:
front:
ffmpeg:
inputs:
- path: rtsp://admin:[email protected]:554/Streaming/Channels/102
roles:
- detect
- rtmp
Channel 101 = main stream, 102 = sub stream. Sub stream default H.264, terus works.
Option 2: Force H.264 transcode dalam ffmpeg
Kalau korang nak tetap guna main stream, boleh tambah input args untuk transcode:
cameras:
front:
ffmpeg:
input_args:
- -avoid_negative_ts
- make_zero
- -fflags
- nobuffer
- -flags
- low_delay
- -strict
- experimental
- -fflags
- +genpts+discardcorrupt
- -use_wallclock_as_timestamps
- "1"
inputs:
- path: rtsp://admin:[email protected]:554/Streaming/Channels/101
roles:
- detect
Tapi cara ni CPU intensive. Kalau server korang tak ada hardware decode (Intel QSV, Nvidia NVENC, etc.), transcode realtime boleh makan resource lebih.
Option 3: Set camera output ke H.264 terus
Login HikVision web interface, pergi ke Configuration > Video/Audio > Video. Tukar Video Encoding dari H.265 ke H.264. Lebih senang dari configure ffmpeg.
Recommended approach
Guna sub stream untuk detection, main stream untuk recording kalau korang nak kualiti tinggi:
cameras:
front:
ffmpeg:
inputs:
- path: rtsp://admin:[email protected]:554/Streaming/Channels/101
roles:
- record
- path: rtsp://admin:[email protected]:554/Streaming/Channels/102
roles:
- detect
- rtmp
Setup ni Frigate detect guna sub stream (lebih ringan), record guna main stream (kualiti penuh). Aku rasa ni paling balanced untuk kebanyakan setup home.
Reference: Frigate GitHub Issue #1602