Video Surveillance

Шпаргалка команд FFmpeg для CCTV / IP-камер

Программное обеспечение Отраслевые решения
Параметры можно менять под себя: CAM_URL, OUT.ts, OUT.mp4, RTMP_URL, HLS_DIR и т.д.

1. Просмотр потока IP-камеры

ffplay -rtsp_transport tcp CAM_URL
Просмотр RTSP-потока с камеры. -rtsp_transport tcp лучше использовать через интернет/Wi-Fi.

2. Запись потока без перекодирования (сырой дамп)

ffmpeg -rtsp_transport tcp -i CAM_URL -c copy OUT.ts
Прямая запись потока «как есть» в TS. Удобно для диагностики и отправки в техподдержку.

3. Запись в MP4 без перекодирования

ffmpeg -rtsp_transport tcp -i CAM_URL -c copy -movflags +faststart OUT.mp4
Тот же поток, но в MP4. Удобнее клиентам, но при сильно битом стриме индекс может ломаться.

4. Сегментированная запись по времени (например, по 5 минут)

ffmpeg -rtsp_transport tcp -i CAM_URL \
-c copy -f segment -segment_time 300 -reset_timestamps 1 cam-%03d.mp4
Простейший «архив»: куски по 300 секунд (300 меняешь под себя).

5. Перекодирование H.265 → H.264 для старых NVR/VMS

ffmpeg -rtsp_transport tcp -i CAM_URL \
-c:v libx264 -preset veryfast -profile:v high -c:a copy cam_h264.mp4
Когда камера выдаёт HEVC, а регистратор/ПО понимает только H.264.

6. Снижение разрешения и битрейта (для слабых каналов/LTE)

ffmpeg -rtsp_transport tcp -i CAM_URL \
-vf scale=1280:720 \
-c:v libx264 -preset veryfast -b:v 2000k \
-c:a aac -b:a 96k cam_720p.mp4
Сжимаешь поток до 720p и ~2 Мбит/с.

7. Перелив контейнера TS → MP4 без потерь

ffmpeg -i IN.ts -c copy -movflags +faststart OUT.mp4
Полезно, если есть сырые дампы из архива/регистратора.

8. Restream RTSP → RTMP (например, на YouTube или свой сервер)

ffmpeg -rtsp_transport tcp -i CAM_URL \
-c:v libx264 -preset veryfast -c:a aac \
-f flv RTMP_URL
Камера → FFmpeg → RTMP-сервер (YouTube, nginx-rtmp, Wowza и т.п.).

9. Restream RTSP → HLS (простенький HLS-архив/стрим)

ffmpeg -rtsp_transport tcp -i CAM_URL \
-c:v copy -c:a copy \
-f hls -hls_time 5 -hls_list_size 10 -hls_flags delete_segments \
HLS_DIR/index.m3u8
Простейший HLS: сегменты по 5 секунд, плейлист из 10 сегментов.

10. Запись с ротацией по размеру файла (например, по 500 МБ)

ffmpeg -rtsp_transport tcp -i CAM_URL \
-c copy -f segment -segment_format mp4 \
-segment_time 0 -segment_max_size 500000000 cam-%03d.mp4
Режет по размеру, удобно под диски фиксированного объёма.

11. Выдернуть одиночный кадр из потока/файла

ffmpeg -rtsp_transport tcp -i CAM_URL -frames:v 1 snapshot.jpg
# либо из файла:
ffmpeg -i IN.mp4 -ss 00:00:05 -frames:v 1 snapshot.jpg
Скриншот для отчёта / доказательства.

12. Быстрая проверка параметров потока (ffprobe)

ffprobe -v error -show_streams -show_format CAM_URL
Сводка по кодекам, профилям, битрейту, разрешению, FPS.

13. Ограничение FPS (например, сделать из 25 → 10 к/с)

ffmpeg -rtsp_transport tcp -i CAM_URL \
-vf fps=10 -c:v libx264 -preset veryfast -c:a copy cam_10fps.mp4
Для экономии места или снижения нагрузки.

14. Простой restream RTSP → UDP-мультикаст

ffmpeg -rtsp_transport tcp -i CAM_URL \
-c copy -f mpegts udp://239.0.0.1:1234?ttl=16
Раздача камеры по локальной сети как IPTV-мультикаст.

15. Принудительное использование TCP или UDP для RTSP

TCP (надёжнее, больше задержка):
ffmpeg -rtsp_transport tcp -i CAM_URL -c copy out.ts
UDP (меньше задержка, но чувствителен к потерям):
ffmpeg -rtsp_transport udp -i CAM_URL -c copy out.ts