Pull to refresh

Comments 29

Разрешение камеры HD со звуком

а сколько кадров в секунду?
Забыл упомянуть fps, вот вывод ffmpeg с живого сервера, да здесь и разрешение оказывается FullHD
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://192.168.X.X:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp?':
  Metadata:
    title           : RTSP Session
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (Baseline), yuv420p, 1920x1080, 25 fps, 9 tbr, 90k tbn, 50 tbc
    Stream #0:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s
Output #0, hls, to '/tmp/www/index1.m3u8':
  Metadata:
    title           : RTSP Session
    encoder         : Lavf56.25.101
    Stream #0:0: Video: h264, yuv420p, 1920x1080, q=2-31, 25 fps, 9 tbr, 90k tbn, 25 tbc
    Stream #0:1: Audio: aac, 44100 Hz, mono, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc56.26.100 aac
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (pcm_alaw (native) -> aac (native))

Видео просто копируется, аудио пришлось перекодировать иначе тишина.
Камера noname/
Добавил в статью вывод ffmpeg.
Тогда понятно почему низкая загрузка. Я подумал это дешевая камера с MJPEG и поток перекодируют в h264 и начал подозревать неладное при упоминании Атома.
Цель как раз и была в низкой нагрузке на CPU.

Перекодирование убивало Atom в ноль.
В текущем случае похоже идет «перепаковка» не требующая ресурсов процессора.
Перекодирование звука создает заметную нагрузку.

Если не нужно разрешение FullHD — возьмите с камеры поток/fps поменьше.
За камеру FullHD уже уплачено, иначе можно купить дешевле. Поэтому надо дожимать всё.
Я решал аналогичную задачу более суровым методом — в итоге гоню поток MJPG через промежуточный прокси во Flash плэйер.

Эта статья — просто радость какая-то, потому что проще собственно уже некуда.
Было и легко ищется.
https://habrahabr.ru/post/162237/
Я ждал этого коммента.
Спасибо, что не обманули ожидания.

Но почитайте внимательно материал по вашей ссылке и то, что я написал.

Мой путь проще повторить, на обычной пакетной базе debian.
Ничего не надо компилировать.
Всё сопровождение свелось к обеспечению перезапуска ffmpeg, который изредка но падает.
Работает в любом современном браузере, в т.ч. и на мобильных.
Не требует flash.
Motion видел, пробовал пользоваться, у меня не сложилось с ним.

Если не трудно оставьте здесь ссылку на инструкцию, как motion приладить к показу на сайте картинки с онлайн камеры. Кому-нибудь это поможет.
А как ещё решить вопрос записи по движению? У меня запущен motion, НЕ доволен. Сразу скажу, что камера — китайская самая дешевая, может поэтому и не нравится качество. На выходе что трансляции, что записи — примерно 0,25 фпс.
Хороший мануал, спасибо.
Сделал все по нему, на ПК — все ок, а вот на Андроиде (Chrome) я получаю один кадр — статичную картинку и все, что я могу делать не так?
Попробуйте на телефоне посмотреть через последний Firefox.
За 15 минут настроил на Gentoo (некоторые параметры не распознавал, убрал их), работает в Chrome для Windows, сразу начинает трансляцию. А вот из под Safari для IOS пустая страница :(

Кстати ссылку на плейлист можно скормить VLC, он ее скушает :)
На ios нет устройств — проверить не могу, но по описанию должно работать.
В Chrome на ios работает?
Проверил — не работает.
Что интересно, если открыть напрямую файл плейлиста — воспроизводит видеопоток.
Так, что скорее всего проблема в скрипте hls.
Тестировать не на чем — не смогу подсказать ничего.

Внизу статьи ссылка «Демо работы hls» — видео работает?
нет, видео не проигрывается
Тогда похоже этот вариант (ffmpeg+hls реализация) не заработает на ios.
ffmpeg как раз работает нормально, файл поток напрямую проигрывается на ios, не играет с веб-страницы!
У вас видео+звук или просто видео?
hls.js разрабатывается, последнее изменение вчера.
Очень вероятно, что скоро допилят до рабочего состояния. Попробуйте последнюю версию с git-hub.

У меня тоже (widows+chrome) иногда останавливается картинка+звук. Думал что особенность двух потоков…
Интересно, а как Ivideon работает, там тоже флеша нет.
А как вы запускаете и контролируете ffmpeg?
Мало ли кому-то будет полезно, расскажу о своем опыте запуска ffmpeg.
Я хочу использовать в качестве «железа» raspberry pi. Не знаю, хватит ли производительности, но для того, чтобы не писать на медленную карту памяти я использую для хранения index* файлов tmpfs. С параметрами ffmpeg как в статье, моя камера выдает около 2 мб файлов. На всякий случай сделал tmpfs на 10 мб.
Скрипт, который монтирует tmpfs, запускает ffmpeg, а после выход размонтирует:
#!/bin/bash

#монтирование tmpfs
/bin/mount -t tmpfs -o size=10M tmpfs /www/mysite.name/camera/tmpfs/

#запуск ffmpeg
/usr/bin/sudo -u www-data /usr/bin/ffmpeg -i rtsp://admin:admin@192.168.168.168:554/1 -an -c:v copy -preset ultrafast -flags -global_header -fflags flush_packets -tune zerolatency -hls_time 1 -hls_list_size 3 -hls_wrap 4 -hls_flags delete_segments -start_number 0 /www/mysite.name/camera/tmpfs/index1.m3u8

#размонтирование tmpfs
/bin/umount /www/mysite.name/camera/tmpfs/


В debian используется systemd, для запуска и перезапуска вот такой конфиг:
[Unit]
Description=ffmpeg ip camera service
After=multi-user.target

[Service]
Type=simple
ExecStart=/www/mysite.name/camera/ffrun.sh
Restart=always

[Install]
WantedBy=multi-user.target


В итоге если в ручную прибить процесс ffmpeg, systemd перезапустит скрипт.
Какой полезный скрипт :)
А архивы не реализовывали?
Only those users with full accounts are able to leave comments. Log in, please.

Articles