Я хотел бы использовать ffmpeg для захвата снимков потока HLS или RTSP.
есть ли простой способ сделать это?
спасибо!
Я хотел бы использовать ffmpeg для захвата снимков потока HLS или RTSP.
есть ли простой способ сделать это?
спасибо!
Итак, я нашел ответ на это некоторое время назад на stackexchange, я думаю, поэтому я просто изрыгаю информацию, которую нашел (т. е. не могу взять кредит!)
#!/bin/bash
# TimeLapse snapshot capture script.
# This script should capture any stills in the incoming Stills directory
time=`date '+%Y_%m_%d__%H_%M_%S'`;
# Specific for each camera
CameraName=no-spaces-this-will-be-a-filename-eventually
CameraIP='192.168.1.150'
CameraUsername='user'
CameraPassword='password'
# Shouldn't need to be changed!
StorageDirectory=/mnt/storage/Stills
StorageFilename=$CameraName-$time.png
mkdir -p $StorageDirectory/$CameraName;
ffmpeg -rtsp_transport tcp -i rtsp://$CameraUsername:$CameraPassword@$CameraIP:554/mainStream -ss 00:00:01.50 -vframes 1 $StorageDirectory/$CameraName/$StorageFilename -nostats -hide_banner -v 0 -loglevel quiet
теперь-это отлично работает с камерами HikVision. Именно этим я и занимаюсь сейчас.
чтобы сломать его,-ss 00: 00: 01.50 означает, что он течет второй с половиной кадры, то -vframe 1 хватает на 1 кадр. Это позволяет потоку "осесть", поэтому вы не получите половину изображение.
Я запускаю это, чтобы делать регулярные снимки с камер, которые я затем, один раз в неделю, конвертировать в timelapse фильм
#!/bin/bash
# TimeLapse footage creation script.
# This script should take any stills in the incoming Stills directory and
# compile them into a .mp4 file in the Movies directory.
# Then moved the 'processed' stills into a timestamped directory the
# Processed directory.
time=`date '+%Y_%m_%d__%H_%M_%S'`;
source="/mnt/storage/"
for CameraName in `ls $source/Stills/`; do
# If the Movies directory for $CameraName doesn't exist, make it.
mkdir -p /mnt/storage/Movies/$CameraName
# Make the movie in the Movie directory using the stills from the Stills directory
ffmpeg -framerate 10/1 -pattern_type glob -i "$source/Stills/$CameraName/*.png" -vf fps=30 -c:v libx264 -pix_fmt yuv420p $source/Movies/$CameraName/$CameraName-$time.mp4
# Make the Processed directory for $CameraName if it doesn't already exist
mkdir -p /mnt/storage/Processed/$CameraName
# Make the timestamped directory for the stills to be moved into
mkdir -p /mnt/storage/Processed/$CameraName/$time
# Move the stills
mv $source/Stills/$CameraName/*.png $source/Processed/$CameraName/$time/
done
первый сценарий выполняется в cronjob каждые 5 минут. Второй скрипт в cron для запуска раз в неделю.
надеюсь, что это поможет.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]