Я пытаюсь сделать поток RTP H264 с малины Pi 3 с модулем камеры на видеотег.H264 RTP поток с gstreamer-1.0
Используя следующий код для запуска потока
raspivid -t 0 -h 720 -w 1080 -fps 25 -hf -b 2000000 -o - | \
gst-launch-1.0 -v fdsrc \
! h264parse \
! rtph264pay \
! gdppay \
! udpsink host="192.168.0.11" port=5000
Тогда я обеспечиваю простой веб-страницы с видео тэгом:
<video id="videoTag" src="h264.sdp" autoplay>
<p class="warning">Your browser does not support the video tag.</p>
</video>
СРК ссылается следующий SDP файл:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 192.168.0.51
a=rtpmap:96 H264/90000
Когда я загружаю веб-страницу, ничего не происходит, и консоль js полностью пуста.
Так что я попытался просмотреть поток с VLC, и получил следующее сообщение об ошибке:
[00007efd80c03ea8] es demux error: cannot peek
[00007efd80c03ea8] es demux error: cannot peek
[00007efd80c03ea8] live555 demux error: no data received in 10s, aborting
Я думал, что там не было UDP связи на всех, поэтому я проверил это с удаленного компьютера:
gst-launch-1.0 udpsrc port=5000 \
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" \
! fakesink dump=true
ans получил UDP-пакеты. Поэтому я исследовал вперед и нашел это:
https://cardinalpeak.com/blog/the-many-ways-to-stream-video-using-rtp-and-rtsp/
Теперь ясно, что мне нужно 2 порта один для потоковой передачи данных и установить протокол управления RTP. Однако я не знаю, как это сделать с помощью gstreamer.
Хуже всего, когда я бегу:
gst-inspect-1.0 | grep -i rtcp
я ничего не получаю.
Как начать видеопоток с gstreamer-1.0 на видеотег внутри веб-страницы с использованием протокола RTP?
обновление
Использование videotestsrc как GStreamer videosoruce и удаление gdppay (это вызвало недопустимую ошибку полезной нагрузки RTP), я был в состоянии просматривать видеопоток от удаленного клиента с VLC и с этим GStreamer кодом :
gst-launch-1.0 udpsrc port=5000 \
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" \
! rtph264depay \
! avdec_h264 \
! autovideosink
Почему, по вашему мнению, браузер будет проигрывать RTP-поток? Существует ограниченный диапазон форматов поддержки для видео HTML5, а H.264 поверх RTP - не один из них. –