Jump to content
Калькуляторы

Трансляция видео с камер на сайте с помощью VLC

День добрый.

 

Имеются:

камера AXIS 223M Network Camera (10.0.1.1)

сервер видеонаблюдения (назовем его так) на Ubuntu Server 2.6.31-14-server #48-Ubuntu SMP x86_64 c VLC media player 1.0.4 Goldeneye (10.0.2.1)

веб-сервер 7.1-RELEASE Freebsd amd64 (10.0.3.1)

 

Необходимо реализовать онлайн трансляцию с камеры на веб-сервер.

 

Сейчас сделано так:

 

На сервере видеонаблюдения:

vlc -d --ttl 6 -R rtsp://10.0.1.1:554/mpeg4/1/media.amp --rtsp-caching=10000 --no-sout-audio --sout "#transcode{width=640,height=480}:std{mux=ts,access=http,dst=127.0.0.1:8075}"

забираем поток с камеры, перенаправляем на 8075 порт сервера

vlc -d -R http://127.0.0.1:8075 --no-sout-audio --sout "#transcode{vcodec=FLV1,vb=9800,hq}:std{access=http{mime=video/x-flv},dst=:8085/test.flv,mux=ffmpeg{mux=flv}}"

и перекодируем во флэш

 

Далее на веб-сервере стоит флэш плеер JW Player, который играет поток с 10.0.2.1:8085/test.flv.

Точнее иногда играет, ибо может просто не загрузить картинку (черный экран плеера), может начать воспроизводить с большой задержкой, а может и нормально запуститься. С opera вообще пишет о том, что не может найти видео по данному адресу.

 

Может кто сталкивался с такой проблемой?

Share this post


Link to post
Share on other sites

Попробовал поток без кодирования:

vlc -vv -d --ttl 6 -R rtsp://10.0.1.1:554/mpeg4/1/media.amp --rtsp-caching=5000 --no-sout-audio --sout #std{access=http,mux=ffmpeg,dst=:8085/test.mp4}

 

Видео не показывает...

 

Share this post


Link to post
Share on other sites

Сервер Ubuntu 9.04 Server

Клиенты смотрят через JW Player

 

cvlc -vvv rtsp://xxx.xxx.xxx.xxx:7070 --loop --sout --'#transcode{acodec=mp4a,vcodec=h264,venc=x264}:std{access=http,mux=,dst=xxx.x

xx.xxx.xxx:8082/test.flv}'

 

Прекрасно работает.

 

 

Перекодировка звука нужна - потому что Flash понимает Н.264 только если звук mp4a кодек.

Сама камера дает и так h.264 поток - н перекодировка сделана все равно. Причина - камера довольно далеко и часто теряются пакеты и Flash плеер от этого колбасит. А с перекодировкой все прекрасно.

 

Есть два не решенных вопроса.

1. Звук отстает стабильно на полсекунды. Никак не работают ключики delay и иже с ними. Подскажете?

 

2. JW Player, если теряется сигнал, начинает гонять по кругу записанный в кэше кусок. И не ищет снова поток - приходится перегружать страничку. Подскажете?

Share this post


Link to post
Share on other sites

А на картинке не возникают артефакты в виде зеленой картинки в начале? Звук то мне вообще не важен в потоке.

 

Хм, все равно не хочет пахать собака, точнее 1 плеер показывает, 2 уже нет... Если закрыть первый, то, обновив, заработает второй...

 

 

Share this post


Link to post
Share on other sites

Конечно возникают. Он же начинается не с ключевого кадра. А как ключик пройдет - все и нормально становится.

AXIS 223M - не дает поток H.264. У нее старый Mpeg 4 - он другой. Так что надо перекодировать изображение в 264. (в первом посте вы отчего-то используете старый FLV кодек - тогда как с 9 версии флэш поддерживает Н.264)

И вообще - попробуйте посмотреть результат другим VLC и проверьте параметры потока. Может быть ему кодека не хватает. Потому как вышеуказанная строчка у меня работает идеально. Но вроде какие-то кодеки доставлял для конвертации в систему. Не помню уже.

Share this post


Link to post
Share on other sites

Ну у меня с данной командой получается так: сначала зеленые артефакты, потом появляется нормальное видео примерно с 2-3 секундным отставанием от реального. Параллельно больше ничего не показывает в flash плеере. Открыл параллельно поток в vlc, отставание примерно секунд 20-25 стало. Т.е. чем больше Задержка включение 3 VLC - 30-40 секунд, отставание от реального 20-25 секунд. Но последний VLC периодически отваливается, т.е. изображение пропадает. Нужно заново запускать.

 

vlc запущен так:

 

cvlc -vvv --ttl 6 -R rtsp://10.4.0.9:554/mpeg4/1/media.amp --rtsp-caching=5000 --no-sout-audio --sout #transcode{vcodec=h264,venc=x264,vb=9800,width=640,height=480}:std{access=http,mux=,dst=:8085/test.flv}"

Share this post


Link to post
Share on other sites

Ну все правильно. У ВЛЦ при приеме свой буфер есть. Получается - ВЛЦ сервер буферизирует, потом еще тот ВЛЦ который показывает - тоже. Ну и набегает помалу.

А у флэш плеера буфер поменьше - вот и разница.

Непонятно только отчего отваливается. А что пишет в логах ВЛЦ когда отваливается?

Share this post


Link to post
Share on other sites

А вот что самое интересное, что в логах всё чисто. В них пишет, когда пробую второе окно с JW Player открыть, говорит статус ОК, но картинки не появляется...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this