Метки
amd bittorrent bug centos debian enlightenment fedora fedora 8 fedora 9 fedora 10 fedora 11 fedora 12 fedora 13 fedora 15 fedora 16 FedoraMD fglrx firefox flash player gnome google intel interview java kde kernel linux livecd migrate moldova nvidia openoffice OpenStreetMap opera Orange ovirt radeon red hat rpmfusion Sandel skype video virtualisation vmware wine
Видео регистратор своими руками 2
2016-03-01 10:03 | Автор: Oleg | Filed under: Oleg
Давненько я писал о "Видео регистратор своими руками", прошло много времени и нашлось множество ошибок. Одна из них, при прекращении записи и запуска новой не успевал освобождаться интерфейс камеры и я терял фрагмент. Да и кодировка постоянно пожирала 25% процессорного ресурса, несмотря на то что у меня A8-5500.
Я решил заново переосмыслить и написать скриптик все тот же под WIN32. В связи с тем, что пространства для записи достаточно решил в этот раз не пережимать на ходу, а оставить MJPEG, который дает камера.
На момент написания скрипта использовал бинарник ffmpeg version N-78358-g674cc26.
По этапам:
1. Используем DirectShow
2. Отображение всех устройств: ffmpeg -list_devices true -f dshow -i dummy
3. В списке выбираем нужную видео камеру, в моем случае HP Webcam HD-4110
4. Вывод всех форматов камеры: ffmpeg -f dshow -list_options true -i video="HP Webcam HD-4110"
Я выбрал: [dshow @ 00000000004ab160] vcodec=mjpeg min s=1280x720 fps=5 max s=1280x720 fps=30
5. В третем пункте был вывод и звука, отображение форматов звука:
ffmpeg.exe -f dshow -list_options true -i video="Микрофон (3- HP Webcam HD-4110)"
Я выбрал: [dshow @ 00000000005eb1e0] min ch=1 bits=8 rate= 11025 max ch=2 bits=16 rate=44100
6. Проверяем работоспособность:
ffmpeg.exe -f dshow -video_size 1280x720 -framerate 8 -sample_rate 44100 -channels 1 -sample_size 16 \
-vcodec mjpeg -i video="HP Webcam HD-4110":audio="Микрофон (3- HP Webcam HD-4110)" -c:v copy -c:a libmp3lame -b:a 128k -r 8 -t 10 -y 1.mkv
Должно записать видео в 10 секунд.
Теперь сам скрипт.
Задача:
1. Каждый файл по 30 минут.
2. Запись осуществлялась с 8 утра до 19 вечера.
3. Ротация - запись сохранялась 5 дней.
GOTO TimeCheck
:TimeCheck
forfiles /P "." /S /M *.mkv /D -5 /C "cmd /c del @path"
for /f "tokens=1,2,3 delims=: " %%a in ("%time%") do set hour=%%a&set minute=%%b&set sec=%%c
if %hour% GEQ 8 (GOTO Loop) else (GOTO Sleep)
Exit /B
:Sleep
ping 127.0.0.1 -n 1800 -w 1000 > NUL
for /f "tokens=1,2,3 delims=: " %%a in ("%time%") do set hour=%%a&set minute=%%b&set sec=%%c
if %hour% LEQ 18 (GOTO TimeCheck) else (GOTO Sleep)
Exit /B
:Loop
for /f "tokens=1,2,3 delims=: " %%a in ("%time%") do set hour=%%a&set minute=%%b&set sec=%%c
for /f "tokens=1,2,3 delims=. " %%a in ("%date%") do set day=%%a&set month=%%b&set year=%%c
ffmpeg.exe -f dshow -video_size 1280x720 -framerate 8 -sample_rate 44100 -channels 1 -sample_size 16 \
-vcodec mjpeg -i video="HP Webcam HD-4110":audio="Микрофон (3- HP Webcam HD-4110)" -c:v copy \
-c:a libmp3lame -b:a 128k -r 8 -t 1800 -y %year%.%month%.%day%-%hour%.%minute%.%sec%.mkv
if %hour% LEQ 18 (GOTO TimeCheck) else (GOTO Sleep)
Exit /B
Если нужно, чтобы окно консоли было скрыто, можно воспользоваться проектом Create Hidden Process
Метки: chp, cmd, create hidden process, dshow, ffmpeg, HP, MJPEG, video, video record, webcam, win32