1

Это продолжение https://raspberrypi.stackexchange.com/questions/93254/stream-usb-webcam-with-audio?noredirect=1#comment150507_93254

Я, как и многие другие храбрые тинкеры до меня, думал, что было бы несложно взять старую USB-камеру (c920) и соединить ее с Raspberry Pi, чтобы создать сетевое потоковое устройство (например, радионяня). Как те, что были до меня, я теперь понял (после двух дней вырванных волос), что это чрезвычайно сложная задача.

Постановка проблемы: у меня малиновый пи ноль и веб-камера c920. Я хочу использовать поток битов H.264 от веб-камеры и подавать его на пи без перекодирования (слабый процессор действительно будет бороться). Я хочу объединить видеопоток со звуком и отправить его в браузер (телефон, планшет, компьютер - что-то HTML5 без NAPI).

Моя текущая стратегия заключается в следующем:

ffmpeg -re -f s16le -i /dev/zero -f v4l2 -thread_queue_size 512 -codec:v h264 -s 1920x1080 -i /dev/video0 -codec:v copy -acodec aac -ab 128k -g 50 http://localhost:8090/camera.ffm (это с фиктивным звуком - я решил добавить аудио позже)

Затем следует sudo ffserver -d -f /etc/ffserver.conf для получения канала и его трансляции в виде потока. Это файл ffserver.conf :

`HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 100000
CustomLog -
<Feed camera.ffm>
  File /tmp/streamwebm.ffm
  FileMaxSize 50M
  ACL allow localhost
  ACL allow 128.199.149.46
  ACL allow 127.0.0.1
  ACL allow 192.168.0.0 192.168.0.255
</Feed>
<Stream stream>
ACL allow 192.168.0.0 192.168.0.255    
Format webm

# Video Settings
VideoFrameRate 30
VideoSize 1920x1080

# Audio settings
AudioCodec libvorbis
AudioSampleRate 48000
AVOptionAudio flags +global_header

MaxTime 0
AVOptionVideo me_range 16
AVOptionVideo qdiff 4
AVOptionVideo qmin 4
AVOptionVideo qmax 40
#AVOptionVideo good
AVOptionVideo flags +global_header

# Streaming settings
PreRoll 10
StartSendOnKey

Metadata author "author"
Metadata copyright "copyright"
Metadata title "Web app name"
Metadata comment "comment"
</stream>

Мой основной html - <html><head></head><body><video> <source src="http://localhost:8090/stream"> </video></body></html>

Однако поток не работает (браузер не подключается), и я получаю следующее:

И браузер на клиенте говорит (failed) NET::ERR_CONNECTION_REFUSED

Мысли:- https://stackoverflow.com/questions/28435564/begin-stream-simple-mp4-with-ffserver объясняет, что ffserver не может транслировать .mp4 из-за заголовков или чего-то еще. Вот почему я использую webm (который не поддерживает h.264, я полагаю, и вызывает очень медленное преобразование производительности в vp9). Я не беспокоюсь об использовании процессора в данный момент, просто хочу, чтобы изображение появилось в браузере!

  • Я слышал, что одна проблема связана с «чанкингом» - что камера h.264 является потоком битов, но потоки h.264 для html5 должны быть разделены на части. Не уверен, как это будет работать.

  • Я пробовал VLC для некоторых вещей (RTP), но не имел успеха.

  • Большинство ресурсов (SE и другие сайты) относятся к 2010–2015 гг., И кажется, что с тех пор развивалась версия v4l2 и другие.

  • Поскольку моя проблема, скорее всего, заключается в общем незнании предмета, я был бы признателен за любые ответы, которые дают общее представление о теории, лежащей в основе различных методов. Я знаю, что это делает вопрос более требовательным к мнению и менее подходящим для SE, но я собираюсь выбросить мой компьютер в окно (вы знаете это чувство).

Спасибо!

1 ответ1

0

Изменение localhost на 127.0.0.1 в вызове ffmpeg устранило эту проблему для меня.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .