Скриншот потокового видео

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

Модератор: Модераторы разделов

Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Скриншот потокового видео

Сообщение ~Marat_2006~ »

Добрый день!
Имеется задача делать с определённой переодичностью скриншоты с потокового видео( снимается на камеру на улице), и класть в папку.
Сделал с помощью ffmpeg, но он работает только с локальными файлами, а при передаче на вход урла, висит, и скриншот делает спустя 4 минуты, а надо шустро снимать, через каждый 5 сек примерно.

ffmpeg -i http://89.232.125.186:3336/stream.flv -an -ss 00:00:03 -an -r 1 -vframes 1 -y %d.jpg

Делаю так к примеру.
Может я что-то не так делаю?Или есть для этого другие способы?
Заранее спасибо!
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

Посмотрите в сторону mencoder'а. Или напишите обработчик сами (сложность кода зависит от того, в каком виде камера отдает видео).
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

А каким образом mencoder может делать скриншот?
Я пересмотрел кучу инфы, не нашёл.
Делал mplayer'ом, но юзает те же кодеки,что и ffmpeg, и снимает скриншот очень долго.
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

Ну, например, на своем eee701 я при логине и один раз в час делаю скриншот с вебкамеры, может, вам пригодится кусок

Код: Выделить всё

mencoder <источник> -endpos 0.2 -ovc copy -o 1.avi
mplayer 1.avi -vo jpeg

далее - mv 00000001.jpg в директорию назначения.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

server test# mencoder http://89.232.125.186:3336/stream.flv -endpos 0.2 -ovc copy -o 1.avi
MEncoder SVN-r29237-4.4.1 © 2000-2009 MPlayer Team
Resolving 89.232.125.186 for AF_INET6...
Couldn't resolve name for AF_INET6: 89.232.125.186
Connecting to server 89.232.125.186[89.232.125.186]: 3336...
Cache size set to 320 KBytes
success: format: 35 data: 0x0 - 0x0

libavformat file format detected.
[flv @ 0x86b0cc0]warning: first frame is no keyframe
вот на этом висит 4 минуты и потом кладёт скриншот.
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

~Marat_2006~ писал(а):
15.01.2010 15:23
Resolving 89.232.125.186 for AF_INET6...

ipv6 отключено?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
stampoon
Сообщения: 702
ОС: Mandrake/Mandriva Cooker

Re: Скриншот потокового видео

Сообщение stampoon »

попробуйте curl'ом стянуть небольшой кусок, а из него уже выдирать скриншот
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

А у Вас случаем примера нет,как это можно сделать?
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
mixrin
Сообщения: 155
ОС: gentoo ~amd64

Re: Скриншот потокового видео

Сообщение mixrin »

mencoder бы в подробном режиме пустить (verbose). mplayer нормально воспроизводит?
proud paludis user.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

Скорее всего, у вас такая задержка из-за формата видео, который отдает камера: если там сжатие на основе вейвлетов, mencoder'у приходится ждать полного опорного кадра, чтобы правильно построить картинку.
Почитайте про камеру, может быть, есть возможность сменить формат видео на mjpeg? В этом случае проблем бы у вас не было. Или же подумайте о замене камеры...
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

Я бы с удовольствием, но камеры расставлены по городу, и доступа к ним нет,неужели нет опции такой у ffmpeg или mencodera,а...
Может кто знает?
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

~Marat_2006~ попробуй так:

localhost@user

mplayer http://89.232.125.186:3336/stream.flv -vf screenshot -sstep 5
Sspphheerraa
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

Код: Выделить всё

sys@server ~ $ mplayer http://89.232.125.186:3336/stream.flv -vf screenshot -sstep 5
MPlayer SVN-r29237-4.4.1 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing http://89.232.125.186:3336/stream.flv.
Connecting to server 89.232.125.186[89.232.125.186]: 3336...
Cache size set to 320 KBytes
Cache fill: 12.50% (40960 bytes)
libavformat file format detected.
[flv @ 0x9326990]warning: first frame is no keyframe

И так висит минуты 4...
блин..
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

[flv @ 0x9326990]warning: first frame is no keyframe

Или меняйте веб-камеры (если они не поддерживают другие форматы сжатия), или увеличивайте интервал между скриншотами, или отказывайтесь от этой шабашки...
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

~Marat_2006~, ну тогда пробуем джедайский способ :penguin:
делаем pipe в темпе

localhost@user

$ mkfifo /tmp/fifo



пишем скрипт ~/takescreenshot.sh такого содержания:

Код: Выделить всё

while true; do
echo screenshot > /tmp/fifo
sleep 5
done



запускаем мплеер на воспроизведение удаленного файла с такими параметрами:

localhost@user

$ mplayer -input file=/tmp/fifo http://89.232.125.186:3336/stream.flv -vf screenshot



параллельно запускаем наш скрипт:

localhost@user

$ sh ~/takescreenshot.sh


скриншоты должны сохраняться в ~/
(в данном примере - с интервалом 5 секунд)
Sspphheerraa
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

sspphheerraa! Отличная идея (правда, она в случае ТС, скорее всего, тоже не сработает: mplayer будет ждать опорного кадра, которого может не быть в течение интервала от нескольких секунд до нескольких минут).
А вот насчет -input, честно говоря, никогда не пользовался - это для меня приятное открытие :)
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

Да, идея и вправду хороша, но помоему тут скриншоты будут делаться подряд,т.е scr00,scr01,scr02 итд.
А как сделать,чтобы скриншот перезаписывался каждый раз на новый?
Дисковое пространство ограничено просто.
Спасибо.
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

eddy писал(а):
25.01.2010 23:52
mplayer будет ждать опорного кадра

для чего?
видео воспроизводится в реальном времени, а скриншот делается из того что видится на экране
или вы хотите сказать, что скриншотить можно только опорные кадры? :)

~Marat_2006~ писал(а):
26.01.2010 09:26
А как сделать,чтобы скриншот перезаписывался каждый раз на новый?

ну так на вскидку... (надеюсь понятно, что скрипт делает :) )

Код: Выделить всё

while true; do
find ~/ -iname shot'*'.png -exec mv {} ~/screenshot.png \;
echo screenshot > /tmp/fifo
sleep 5
done
Sspphheerraa
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

sspphheerraa писал(а):
26.01.2010 14:50
для чего?
видео воспроизводится в реальном времени, а скриншот делается из того что видится на экране
или вы хотите сказать, что скриншотить можно только опорные кадры? smile.gif

Там алгоритм сжатия не mjpeg, вообще-то. Без опорного кадра у вас получится черт те что...
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

eddy писал(а):
26.01.2010 16:06
sspphheerraa писал(а):
26.01.2010 14:50
для чего?
видео воспроизводится в реальном времени, а скриншот делается из того что видится на экране
или вы хотите сказать, что скриншотить можно только опорные кадры? smile.gif

Там алгоритм сжатия не mjpeg, вообще-то. Без опорного кадра у вас получится черт те что...

та хоть х264 с пирамидным линкованием В-кадров... получится ровно то, что показывается на экране мплеера
т.к. скриншотится кадр не с самого потока, а с оверлейного окна мплеера
Sspphheerraa
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

sspphheerraa писал(а):
26.01.2010 21:58
получится ровно то, что показывается на экране мплеера
т.к. скриншотится кадр не с самого потока, а с оверлейного окна мплеера

Sorry, это я уже перетрудился... Почему-то, отвечая на ваше сообщение, я думал, что mplayer запускается каждый раз для того, чтобы сделать скриншот. А так - да, если он будет работать постоянно, все будет OK.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

Спасибо, попробую!
Т.е с помощью консоли ssh, у меня не получится это запустить?Или я что-то не так понял про окно плеера?
Нужен доступ к машине не через ссш?
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Скриншот потокового видео

Сообщение eddy »

На той машине mplayer должен непрерывно транслировать видео. Боюсь, если ему сказать -vo null, скриншотов не будет.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

~Marat_2006~ писал(а):
27.01.2010 12:37
Спасибо, попробую!
Т.е с помощью консоли ssh, у меня не получится это запустить?Или я что-то не так понял про окно плеера?
Нужен доступ к машине не через ссш?

тут уже не понял я :huh:
опиши топологию вашей сети, какой доступ к компьютеру на котором надо сохранять скриншоты (локальный или удаленный)?; есть ли на нем иксы?
Sspphheerraa
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

В данный момент доступ по ссш,т.е удалённый,но иксы есть.
Но теоретически, я могу попросить и будет доступ к самому компу,т.е.не через ссш.
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

~Marat_2006~ писал(а):
28.01.2010 11:16
В данный момент доступ по ссш,т.е удалённый,но иксы есть.
Но теоретически, я могу попросить и будет доступ к самому компу,т.е.не через ссш.

иксы есть, значит задача простая как доска
локальный доступ не потребуется, по сути все можно запихнуть в один скрипт

Код: Выделить всё

#!/bin/bash
mkfifo /tmp/fifo
mplayer -input file=/tmp/fifo http://89.232.125.186:3336/stream.flv -vf screenshot
while true; do
find ~/ -iname shot'*'.png -exec mv {} ~/screenshot.png \;
echo screenshot > /tmp/fifo
sleep 5
done

и тебе его надо всего лишь запустить на удаленной машине
Sspphheerraa
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

Код: Выделить всё

server test # ./script
mkfifo: cannot create fifo `/tmp/fifo': File exists
MPlayer SVN-r29237-4.4.1 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing http://89.232.125.186:3336/stream.flv.
Connecting to server 89.232.125.186[89.232.125.186]: 3336...
Cache size set to 320 KBytes
Cache fill: 15.00% (49152 bytes)
libavformat file format detected.
[flv @ 0x9fce980]warning: first frame is no keyframe
[lavf] Video stream found, -vid 0
VIDEO:  [FLV1]  320x240  0bpp  16.000 fps  800.0 kbps (97.7 kbyte/s)
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] Can't open /dev/fb0: No such file or directory.
[VO_3DFX] Unable to open /dev/3dfx.
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
VO XOverlay need a subdriver
[gl] using extended formats. Use -vo gl:nomanyfmts if playback fails.
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
commandline read: mplayer
commandline read: -input
commandline read: file=/tmp/fifo
commandline read: http://89.232.125.186:3336/stream.flv
commandline read: -vf
commandline read: screenshot

   ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.7 |~~~~~~~~~~~~~~~~~~~~~~~~~~
        (c) 2001-2008  The world wide DirectFB Open Source Community
        (c) 2000-2004  Convergence (integrated media) GmbH
      ----------------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2009-06-02 06:33)
(!) Direct/Util: opening '/dev/fb0' and '/dev/fb/0' failed
    --> No such file or directory
(!) DirectFB/FBDev: Error opening framebuffer device!
(!) DirectFB/FBDev: Use 'fbdev' option or set FRAMEBUFFER environment variable.
(!) DirectFB/Core: Could not initialize 'system_core' core!
    --> Initialization error!
[VO_SDL] SDL initialization failed: DirectFBCreate: Initialization error!.
Can't open /dev/fb0: No such file or directory
[fbdev2] Can't open /dev/fb0: No such file or directory
[svgalib: allocated virtual console #9]


Так ждёт...
Настораживает
mplayer: could not connect to socket
mplayer: No such file or directory
Если пройти по ссылке, видео есть...
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

~Marat_2006~ писал(а):
31.01.2010 01:27

Код: Выделить всё

server test # ./script
mkfifo: cannot create fifo `/tmp/fifo': File exists
MPlayer SVN-r29237-4.4.1 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing http://89.232.125.186:3336/stream.flv.
Connecting to server 89.232.125.186[89.232.125.186]: 3336...
Cache size set to 320 KBytes
Cache fill: 15.00% (49152 bytes)
libavformat file format detected.
[flv @ 0x9fce980]warning: first frame is no keyframe
[lavf] Video stream found, -vid 0
VIDEO:  [FLV1]  320x240  0bpp  16.000 fps  800.0 kbps (97.7 kbyte/s)
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] Can't open /dev/fb0: No such file or directory.
[VO_3DFX] Unable to open /dev/3dfx.
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
VO XOverlay need a subdriver
[gl] using extended formats. Use -vo gl:nomanyfmts if playback fails.
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
commandline read: mplayer
commandline read: -input
commandline read: file=/tmp/fifo
commandline read: http://89.232.125.186:3336/stream.flv
commandline read: -vf
commandline read: screenshot

   ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.7 |~~~~~~~~~~~~~~~~~~~~~~~~~~
        (c) 2001-2008  The world wide DirectFB Open Source Community
        (c) 2000-2004  Convergence (integrated media) GmbH
      ----------------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2009-06-02 06:33)
(!) Direct/Util: opening '/dev/fb0' and '/dev/fb/0' failed
    --> No such file or directory
(!) DirectFB/FBDev: Error opening framebuffer device!
(!) DirectFB/FBDev: Use 'fbdev' option or set FRAMEBUFFER environment variable.
(!) DirectFB/Core: Could not initialize 'system_core' core!
    --> Initialization error!
[VO_SDL] SDL initialization failed: DirectFBCreate: Initialization error!.
Can't open /dev/fb0: No such file or directory
[fbdev2] Can't open /dev/fb0: No such file or directory
[svgalib: allocated virtual console #9]


Так ждёт...
Настораживает
mplayer: could not connect to socket
mplayer: No such file or directory
Если пройти по ссылке, видео есть...

настораживает не это, а вот это:
vo: couldn't open the X11 display ()!

...без иксов на той машине ничего не получится
Sspphheerraa
Спасибо сказали:
Аватара пользователя
~Marat_2006~
Сообщения: 117
ОС: Ubuntu Linux 8.04

Re: Скриншот потокового видео

Сообщение ~Marat_2006~ »

Да, но X то есть!
У меня просто доступ через ssh.
Там минт 8 стоит.
Ктулху фхтагн!!!
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скриншот потокового видео

Сообщение sspphheerraa »

~Marat_2006~ писал(а):
31.01.2010 11:17
Да, но X то есть!

запущен?
мплеер пишет, что не может подключиться к Х
в общем, сначала добейся нормального запуска мплеера с опцией '-vo xv'
Sspphheerraa
Спасибо сказали: