Скриншот потокового видео
Модератор: Модераторы разделов
- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
Скриншот потокового видео
Добрый день!
Имеется задача делать с определённой переодичностью скриншоты с потокового видео( снимается на камеру на улице), и класть в папку.
Сделал с помощью 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
Делаю так к примеру.
Может я что-то не так делаю?Или есть для этого другие способы?
Заранее спасибо!
			
			
									
						
							Имеется задача делать с определённой переодичностью скриншоты с потокового видео( снимается на камеру на улице), и класть в папку.
Сделал с помощью 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: Скриншот потокового видео
Посмотрите в сторону mencoder'а. Или напишите обработчик сами (сложность кода зависит от того, в каком виде камера отдает видео).
			
			
									
						
							RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
Re: Скриншот потокового видео
А каким образом mencoder может делать скриншот?
Я пересмотрел кучу инфы, не нашёл.
Делал mplayer'ом, но юзает те же кодеки,что и ffmpeg, и снимает скриншот очень долго.
			
			
									
						
							Я пересмотрел кучу инфы, не нашёл.
Делал mplayer'ом, но юзает те же кодеки,что и ffmpeg, и снимает скриншот очень долго.
Ктулху фхтагн!!!
			
			
			- 
				eddy
														 - Сообщения: 3321
 - Статус: Красный глаз тролля
 - ОС: ArchLinux
 
Re: Скриншот потокового видео
Ну, например, на своем eee701 я при логине и один раз в час делаю скриншот с вебкамеры, может, вам пригодится кусок
далее - mv 00000001.jpg в директорию назначения.
			
			
									
						
							Код: Выделить всё
mencoder <источник> -endpos 0.2 -ovc copy -o 1.avi
mplayer 1.avi -vo jpegдалее - mv 00000001.jpg в директорию назначения.
RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
Re: Скриншот потокового видео
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 минуты и потом кладёт скриншот.
			
			
									
						
							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
 
- 
				stampoon
 - Сообщения: 702
 - ОС: Mandrake/Mandriva Cooker
 
Re: Скриншот потокового видео
попробуйте curl'ом стянуть небольшой кусок, а из него уже выдирать скриншот
			
			
									
						
							Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
			
			
			- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
- 
				mixrin
														 - Сообщения: 155
 - ОС: gentoo ~amd64
 
Re: Скриншот потокового видео
mencoder бы в подробном режиме пустить (verbose). mplayer нормально воспроизводит?
			
			
									
						
							proud paludis user.
			
			
			- 
				eddy
														 - Сообщения: 3321
 - Статус: Красный глаз тролля
 - ОС: ArchLinux
 
Re: Скриншот потокового видео
Скорее всего, у вас такая задержка из-за формата видео, который отдает камера: если там сжатие на основе вейвлетов, mencoder'у приходится ждать полного опорного кадра, чтобы правильно построить картинку.
Почитайте про камеру, может быть, есть возможность сменить формат видео на mjpeg? В этом случае проблем бы у вас не было. Или же подумайте о замене камеры...
			
			
									
						
							Почитайте про камеру, может быть, есть возможность сменить формат видео на mjpeg? В этом случае проблем бы у вас не было. Или же подумайте о замене камеры...
RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
Re: Скриншот потокового видео
Я бы с удовольствием, но камеры расставлены по городу, и доступа к ним нет,неужели нет опции такой у ffmpeg или mencodera,а...
Может кто знает?
			
			
									
						
							Может кто знает?
Ктулху фхтагн!!!
			
			
			- 
				sspphheerraa
														 - Сообщения: 1375
 - ОС: Gentoo
 
Re: Скриншот потокового видео
~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: Скриншот потокового видео
Код: Выделить всё
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: Скриншот потокового видео
[flv @ 0x9326990]warning: first frame is no keyframe
Или меняйте веб-камеры (если они не поддерживают другие форматы сжатия), или увеличивайте интервал между скриншотами, или отказывайтесь от этой шабашки...
RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				sspphheerraa
														 - Сообщения: 1375
 - ОС: Gentoo
 
Re: Скриншот потокового видео
~Marat_2006~, ну тогда пробуем джедайский способ 
 
делаем pipe в темпе
пишем скрипт ~/takescreenshot.sh такого содержания:
запускаем мплеер на воспроизведение удаленного файла с такими параметрами:
параллельно запускаем наш скрипт:
скриншоты должны сохраняться в ~/
(в данном примере - с интервалом 5 секунд)
			
			
									
						
							делаем 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: Скриншот потокового видео
sspphheerraa! Отличная идея (правда, она в случае ТС, скорее всего, тоже не сработает: mplayer будет ждать опорного кадра, которого может не быть в течение интервала от нескольких секунд до нескольких минут).
А вот насчет -input, честно говоря, никогда не пользовался - это для меня приятное открытие
			
			
									
						
							А вот насчет -input, честно говоря, никогда не пользовался - это для меня приятное открытие
RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
Re: Скриншот потокового видео
Да, идея и вправду хороша, но помоему тут скриншоты будут делаться подряд,т.е scr00,scr01,scr02 итд.
А как сделать,чтобы скриншот перезаписывался каждый раз на новый?
Дисковое пространство ограничено просто.
Спасибо.
			
			
									
						
							А как сделать,чтобы скриншот перезаписывался каждый раз на новый?
Дисковое пространство ограничено просто.
Спасибо.
Ктулху фхтагн!!!
			
			
			- 
				sspphheerraa
														 - Сообщения: 1375
 - ОС: Gentoo
 
Re: Скриншот потокового видео
для чего?
видео воспроизводится в реальном времени, а скриншот делается из того что видится на экране
или вы хотите сказать, что скриншотить можно только опорные кадры?
~Marat_2006~ писал(а): ↑26.01.2010 09:26А как сделать,чтобы скриншот перезаписывался каждый раз на новый?
ну так на вскидку... (надеюсь понятно, что скрипт делает
Код: Выделить всё
while true; do
find ~/ -iname shot'*'.png -exec mv {} ~/screenshot.png \;
echo screenshot > /tmp/fifo
sleep 5
doneSspphheerraa
			
			
			- 
				eddy
														 - Сообщения: 3321
 - Статус: Красный глаз тролля
 - ОС: ArchLinux
 
Re: Скриншот потокового видео
sspphheerraa писал(а): ↑26.01.2010 14:50для чего?
видео воспроизводится в реальном времени, а скриншот делается из того что видится на экране
или вы хотите сказать, что скриншотить можно только опорные кадры? smile.gif
Там алгоритм сжатия не mjpeg, вообще-то. Без опорного кадра у вас получится черт те что...
RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				sspphheerraa
														 - Сообщения: 1375
 - ОС: Gentoo
 
Re: Скриншот потокового видео
eddy писал(а): ↑26.01.2010 16:06sspphheerraa писал(а): ↑26.01.2010 14:50для чего?
видео воспроизводится в реальном времени, а скриншот делается из того что видится на экране
или вы хотите сказать, что скриншотить можно только опорные кадры? smile.gif
Там алгоритм сжатия не mjpeg, вообще-то. Без опорного кадра у вас получится черт те что...
та хоть х264 с пирамидным линкованием В-кадров... получится ровно то, что показывается на экране мплеера
т.к. скриншотится кадр не с самого потока, а с оверлейного окна мплеера
Sspphheerraa
			
			
			- 
				eddy
														 - Сообщения: 3321
 - Статус: Красный глаз тролля
 - ОС: ArchLinux
 
Re: Скриншот потокового видео
sspphheerraa писал(а): ↑26.01.2010 21:58получится ровно то, что показывается на экране мплеера
т.к. скриншотится кадр не с самого потока, а с оверлейного окна мплеера
Sorry, это я уже перетрудился... Почему-то, отвечая на ваше сообщение, я думал, что mplayer запускается каждый раз для того, чтобы сделать скриншот. А так - да, если он будет работать постоянно, все будет OK.
RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
Re: Скриншот потокового видео
Спасибо, попробую!
Т.е с помощью консоли ssh, у меня не получится это запустить?Или я что-то не так понял про окно плеера?
Нужен доступ к машине не через ссш?
			
			
									
						
							Т.е с помощью консоли ssh, у меня не получится это запустить?Или я что-то не так понял про окно плеера?
Нужен доступ к машине не через ссш?
Ктулху фхтагн!!!
			
			
			- 
				eddy
														 - Сообщения: 3321
 - Статус: Красный глаз тролля
 - ОС: ArchLinux
 
Re: Скриншот потокового видео
На той машине mplayer должен непрерывно транслировать видео. Боюсь, если ему сказать -vo null, скриншотов не будет.
			
			
									
						
							RTFM
-------
KOI8-R - патриотичная кодировка
			
			
			-------
KOI8-R - патриотичная кодировка
- 
				sspphheerraa
														 - Сообщения: 1375
 - ОС: Gentoo
 
Re: Скриншот потокового видео
~Marat_2006~ писал(а): ↑27.01.2010 12:37Спасибо, попробую!
Т.е с помощью консоли ssh, у меня не получится это запустить?Или я что-то не так понял про окно плеера?
Нужен доступ к машине не через ссш?
тут уже не понял я
опиши топологию вашей сети, какой доступ к компьютеру на котором надо сохранять скриншоты (локальный или удаленный)?; есть ли на нем иксы?
Sspphheerraa
			
			
			- 
				~Marat_2006~
														 - Сообщения: 117
 - ОС: Ubuntu Linux 8.04
 
Re: Скриншот потокового видео
В данный момент доступ по ссш,т.е удалённый,но иксы есть.
Но теоретически, я могу попросить и будет доступ к самому компу,т.е.не через ссш.
			
			
									
						
							Но теоретически, я могу попросить и будет доступ к самому компу,т.е.не через ссш.
Ктулху фхтагн!!!
			
			
			- 
				sspphheerraa
														 - Сообщения: 1375
 - ОС: Gentoo
 
Re: Скриншот потокового видео
~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: Скриншот потокового видео
Код: Выделить всё
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: Скриншот потокового видео
~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: Скриншот потокового видео
Да, но X то есть!
У меня просто доступ через ssh.
Там минт 8 стоит.
			
			
									
						
							У меня просто доступ через ssh.
Там минт 8 стоит.
Ктулху фхтагн!!!
			
			
			- 
				sspphheerraa
														 - Сообщения: 1375
 - ОС: Gentoo
 
Re: Скриншот потокового видео
запущен?
мплеер пишет, что не может подключиться к Х
в общем, сначала добейся нормального запуска мплеера с опцией '-vo xv'
Sspphheerraa