Как я могу эффективно транслировать видео с камеры по сети?

У меня есть малина и несколько камер, подключенных к ней, теперь я хочу видеть картинку наиболее эффективным способом. Запуск xserver там и использование vnc или что-то для просмотра изображения довольно неэффективно и медленно, потребляя много процессора.

Есть ли простой способ сделать это в терминале? Я могу хранить видео, используя aconv, непосредственно в файле в терминале, но что, если бы я хотел получить доступ к доступной по сети сети, чтобы я мог напрямую передавать /отображать его на 3-м ПК (работает linux)? Я видел некоторые опции, используя сервер Apache, но это тоже неэффективно, мне нужно что-то, что почти не хватает памяти и процессора

4 голоса | спросил Petr 6 32013vEurope/Moscow11bEurope/MoscowWed, 06 Nov 2013 02:03:28 +0400 2013, 02:03:28

3 ответа


2

Вы можете использовать ffmpeg для управления данными и их потока. Из вашего вопроса, я думаю, вы не хотите, чтобы изображения с камеры были общедоступными, поэтому вы можете сохранить его простым при передаче данных точка-точка.

Итак, сначала вам нужно захватить видео с камеры .

Что касается вычислительной мощности Pi, вы не можете многое сделать с данными, но в целом mpeg2 достаточно быстро. Вам лучше сначала попробовать более быстрый компьютер, как соединить вещи, а затем уйти от фантазии, чтобы позволить Pi сделать это.

Остальные две вещи остаются - положить больше потоков в один .

Затем передайте данные по сети. По сути, самый простой способ - установить ffmpeg на Pi для прослушивания на подключении tcp: //, и вы подключаетесь затем извне.

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

Кроме того, неудачная ситуация с обработкой видео , и малина выбрала путь libav. Я не тестировал его, он может работать так же, как ffmpeg. Если нет, вы должны скомпилировать недавний ffmpeg из источников (на ночь на малине).

ответил ssavec 11 PMpFri, 11 Apr 2014 16:26:21 +040026Friday 2014, 16:26:21
2

У меня есть потоковая работа модуля камеры малины pi.

Решение 1:

на вашей малиновой пи:

sudo apt-get install vlc
raspivid -o - -t 0 -n -w 320 -h 200 -fps 24 | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264

# -w 320 and -h 200 is to restrict video size as 320x200

на вашем ПК:

ffplay http://raspberrypi.local:8090 # raspberrypi.local is the ip of your rpi, mine has been set with a domain name by avahi (zeroconf service)

или

you can open your VLC or mplayer to view your url at http://raspberrypi.local:8090

Решение 2:

Из-за того, что версия пакета ffmpeg на Debian /Raspian слишком стар, нам нужен ливав (включая debian и raspbian) или настраиваемый ffmpeg для выполнения следующих действий:

На малине Пи:

raspivid -o - -t 0 -n -w 320 -h 200 -fps 24 | avconv  -i - -f rtp rtp://192.168.1.122:8558

вывод:

 avconv version 0.8.13-6:0.8.13-1+rpi1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 29 2014 02:09:52 with gcc 4.6.3
[h264 @ 0x10e6680] max_analyze_duration reached
[h264 @ 0x10e6680] Estimating duration from bitrate, this may be inaccurate
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
    Stream #0.0: Video: h264 (High), yuv420p, 320x200, 25 fps, 25 tbr, 1200k tbn, 2400k tbc
[buffer @ 0x10dc160] w:320 h:200 pixfmt:yuv420p
Output #0, rtp, to 'rtp://192.168.1.122:8558':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Video: mpeg4, yuv420p, 320x200, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mpeg4)
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.1.122
t=0 0
a=tool:libavformat 53.21.1
m=video 8558 RTP/AVP 96
b=AS:200
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=1

Копия:

v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.1.122
t=0 0
a=tool:libavformat 53.21.1
m=video 8558 RTP/AVP 96
b=AS:200
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=1

на ваш локальный ПК в виде файла .sdp, например streaming.sdp

На локальном ПК:

ffplay -i streaming.sdp

существует множество других альтернативных методов (rtsp, tcp, udp или даже настройка потокового сервера с помощью ffserver) для потоковой передачи видеоданных вашей камеры на ваш компьютер, но с чем я боролся, заключается в том, что я не понимал, Версия ffmpeg была слишком старой, чтобы продолжить видеоданные камеры!

ответил sprhawk 25 PM000000120000005931 2014, 12:53:59
1

Я запускаю веб-камеру Microsoft, веб-камеру logitec и KAZAN (китайский с фильтром для разрезания на солониде) и транслирует их все три с помощью mjpg-стримера. Я получаю хорошее изображение от каждого. Вот как я его начинаю. Обратите внимание, что все три элемента деамома

export LD_LIBRARY_PATH = "/etc /mjpg-streamer"

/etc /mjpg-streamer /mjpg_streamer -b -i "input_uvc.so -d /dev /video0 -f 3 -r 1280X720" -o "output_http.so -p 8080 -w ./www"

/etc /mjpg-streamer /mjpg_streamer -b -i "input_uvc.so -d /dev /video1 -f 3 -r 1280X720" -o "output_http.so -p 8081 -w ./www"

/etc /mjpg-streamer /mjpg_streamer -b -i "input_uvc.so -d /dev /video2 -f 3 -r 1280X720" -o "output_http.so -p 8082 -w ./www"

Вот HTML-источник для просмотра, кроме MSIE Win 8, поскольку они явно не поддерживают mpg. Я не уверен. Мне пришлось обрезать заголовок, потому что сервер думал, что добавляю HTML

<table style="border: thick ridge #800000" width="100%">
    <tr>
        <td width="30%" >
            <img src="http://192.168.0.157:8080/?action=stream" alt=""  width="100%"  />
        </td>

        <td width="30%">
            <img src="http://192.168.0.157:8081/?action=stream" alt=""  width="100%" />
        </td>
        <td width="30%">
            <img src="http://192.168.0.157:8082/?action=stream" alt=""  width="100%" />
        </td>
    </tr>
</table>
<br />
ответил Doug Wyman 11 Jam1000000amSat, 11 Jan 2014 05:43:42 +040014 2014, 05:43:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132