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
Редакция CCTV Фокус