Видео регистратор своими руками 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

    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    Метки: , , , , , , , , , ,

    Comments (0) »


    No comments yet.

    Leave a comment

    *