1. IP камера работающая в сети организации.
2. Проброшенный порт на роутере офиса.
3. Unix сервер c установленными vlc и ffmpeg.
Набор комманд, составленным по немногочисленной документации найденной в интернете.
И так сначала просто подключите камеру к витой паре, и дайте на нее питание.
С компьютера отследите где у нее rtsp поток(по какому порту и как называется файл стрима).
Далее сделайте проброс портов на роутере(для получения возможности "забирать" видео из любой точки мира, в случае отсутсвия прямого IP адреса на роутере, вам может понадобиться включить внешний сервер в общую сеть и колдовать с iproute но меня это не коснулось).
И так точное описание проблемы:
Имеется поток mp4 видео по протоколу rtsp который ни одним браузером не проигрывается, а задача состоит в том чтобы выложить видео на сайте в формате flv для кросплатформенности.
Как мы все понимаем нужно перекинуть видео на другой протокол и еще его перекодировать в другой формат.
Делается это двумя командами, первая заберает видео с камеры и кладет его в корень вебсервера:
cvlc -vv rtsp://10.0.0.3:554/video.mp4 --rtsp-caching=100000 --no-sout-audio --sout \и делает его доступным по http протоколу на порте 8001.
'#std{access=http,dst=127.0.0.1:8001,mux=ts}'
Вторая же берет видео на сервере и делает из video.mp4 файл view01.flv который очень просто выложить на сайте.
Вот эта команда:
cvlc -vv http://127.0.0.1:8001 --loop --http-caching=10000 --sout \
'#transcode{vcodec=FLV1,vb=512,fps=15}:std{access=http{mime=video/x-flv},dst=:8080/view01.flv,mux=ffmpeg{mux=flv}}'
Можно поиграться с настройками которые вы видите при запуске команды, vb=512 это видеобуфер равный 512мегобайтам, fps соответсвенно частота смены кадров vcodec всем понятно что это кодек, а дальше вы вводети access=http доступ по протаколу WWW и destination dst=:8080(это порт по которому доступно конечное видео)/veaw01.flv(его название) mux=ffmpeg определяет сервер работающий над перекодированием у нас это ffmpeg.
Что примечательно процесс запуска можно автоматизироватьи запускать в фоне, чтобы не отбирать у себя время и 2 виртуальных консоли написав два скрипта:
mkdir ~user/scripts
touch ~user/scripts/stream1.sh
touch ~user/scripts/stream2.sh
[b]stream1.sh[/b]
#!/bin/sh
cvlc -vv rtsp://10.0.0.3:554/camera1.sdp --rtsp-caching=100000 --no-sout-audio --sout \
'#std{access=http,dst=127.0.0.1:8001,mux=ts}'
[b]stream2.sh[/b]
#!/bin/sh
cvlc -vv http://127.0.0.1:8001 --loop --http-caching=10000 --sout \
'#transcode{vcodec=FLV1,vb=512,fps=15}:std{access=http{mime=video/x-flv},dst=:8080/view01.flv,mux=ffmpeg{mux=flv}}'
Ну думаю с запуском стриптов и с его автоматизацией тоже проблем не возникнет - доков полно.
Все, теперь на вашем сервере по 8080 порту постоянно идет видео в формате flv доступном через любой браузер.[/quote]
Комментариев нет:
Отправить комментарий