Я хочу передать видео с веб-камеры с помощью gstreamer в сеть. Во встроенной среде Linux у меня есть gstreamer со следующей командой:
gst-launch mfw_v4lsrc ! vpuenc codec=12 ! multipartmux ! tcpserversink host=127.0.0.1 port=1234 sync=false
Я могу получить этот поток с помощью проигрывателя VLC, используя tcp://127.0.0.1:1234
. Это работает отлично.
Теперь я хочу показать видео в своем веб-браузере. Я понял, что не могу использовать тег HTML5. Это показывает черное изображение. Также с помощью http://127.0.0.1:1234
будет отображаться видеоконтроль, но нет видео.
Поэтому я пытаюсь использовать PHP для получения потока и pusblish их с веб-сервером. Я применил пример на веб-сайте php:
<?php
$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
?>
Это только печатает полученные байты потока. Но я не знаю, как кодировать поток, чтобы показать видео. Как преобразовать поток в видео, показываемое на веб-странице?
Самый удобный для браузера способ:
Потоковая передача WebRTC
В настоящее время я все еще ищу хороший способ сделать это.
ИЛИ
Вы можете использовать потоковый сервер для:
Я лично использую модуль RTMP nginx. Существуют и другие варианты, такие как Wowza.
RTMP
Есть flvmux ! rtmpsink
flvmux ! rtmpsink
в GStreamer.
На странице вам понадобится Flash-плеер. JWPlayer работал для меня.
HLS
Поток его with nginx-rtmp-module
или вы можете играть с этой маленькой программой запуска http.
HLS будет работать на iOS и Android, но не на рабочем столе (не без Javascript-клиента).
DASH
Поток с nginx-rtmp-module
.
Поток DASH поддерживается HTML5 в некоторых браузерах - в зависимости от используемых кодеков, ситуация довольно плохая, плюс для этого вам понадобится плеер dash.js.
И HLS, и DASH нуждаются в поддержке Source Media Extensions в браузере рабочего стола (теперь в Chrome, Safari и Opera) и Javascript-плеере для его использования.
Поддержка браузера для некоторых ключевых технологий и кодеков: https://html5test.com/compare/feature/webrtc-webrtc/video-mediasource/video-h264/video-webmvp8.html