Ticketa
Registered
Привет,
има ли някой запознат с видео стрийминга?
Имам 2 сървъра като всеки един е разположен на домейн и под домейн:
Искам да направя в site.com потребителите да могат да създават собствени видео стриймове (live) през телефони, лаптопи или каквото там е устройството, за целта съм им генерирал уникални ключове и така, когато искат да покажат някакъв стрийминг може да се гледа на примерен адрес: https://site.com/live/user/kO3r9iewqddpokaads
Обаче имам проблем с (предполагам) настройването на RTMP сървъра.
Имам инсталиран Debian 11, nginx и модула за RTMP. Имам и примерна настройка:
(вероятно с времето доста ще се разшири, като цяло дори и да се налага да се ползват load balancers не е проблем, ако се стигне до голямо натоварване)
В site.com съм сложил (за тест) следният код:
site.com/test.php
Като идеята ми е тук този който пуска стрийминга да се "самогледа". като пък друг код ще бъде за "посетителите"/"гледачите", той съответно трябва да зареди това което се се стриймва с този stream_key (по-горе е просто пример, все още не се ползват данните от базата данни).
Въпроса е, че нищо не се стартира и реално комуникацията между
rtmp.site.com и site.com липсва. Някакви предложения?
това е и default на /etc/nginx/sites-available:
ЕДИТ: Сигурен съм, че съм изписал доста глупости за това, моля някой да удари едно туристко рамо
има ли някой запознат с видео стрийминга?
Имам 2 сървъра като всеки един е разположен на домейн и под домейн:
Искам да направя в site.com потребителите да могат да създават собствени видео стриймове (live) през телефони, лаптопи или каквото там е устройството, за целта съм им генерирал уникални ключове и така, когато искат да покажат някакъв стрийминг може да се гледа на примерен адрес: https://site.com/live/user/kO3r9iewqddpokaads
Обаче имам проблем с (предполагам) настройването на RTMP сървъра.
Имам инсталиран Debian 11, nginx и модула за RTMP. Имам и примерна настройка:
Код:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
}
}
}
(вероятно с времето доста ще се разшири, като цяло дори и да се налага да се ползват load balancers не е проблем, ако се стигне до голямо натоварване)
В site.com съм сложил (за тест) следният код:
site.com/test.php
Код:
<?php
// Генериране на случайно число с фиксирана дължина
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
// Генериране на уникален ключ за потребител А
$stream_key = generateRandomString();
?>
<!DOCTYPE html>
<html>
<head>
<title>Live Streaming</title>
</head>
<body>
<h1>Live Streaming</h1>
<p>Твоят стрийминг ключ: <?php echo $stream_key; ?></p>
<video id="player" autoplay muted></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
var streamKey = '<?php echo $stream_key; ?>';
var videoPlayer = document.getElementById('player');
if (Hls.isSupported()) {
var hls = new Hls();
var streamUrl = 'https://rtmp.site.com/live/' + streamKey + '/index.m3u8';
hls.loadSource(streamUrl);
hls.attachMedia(videoPlayer);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
videoPlayer.play();
});
}
</script>
</body>
</html>
Като идеята ми е тук този който пуска стрийминга да се "самогледа". като пък друг код ще бъде за "посетителите"/"гледачите", той съответно трябва да зареди това което се се стриймва с този stream_key (по-горе е просто пример, все още не се ползват данните от базата данни).
Код:
<!DOCTYPE html>
<html>
<head>
<title>Гледайте стрийминг</title>
<link href="https://vjs.zencdn.net/7.8.4/video-js.css" rel="stylesheet" />
<script src="https://vjs.zencdn.net/7.8.4/video.js"></script>
</head>
<body>
<h1>Гледайте стрийминг DOISAoijdsaewq21</h1>
<div class="video-container">
<video-js id="player" class="vjs-default-skin" controls preload="auto" width="640" height="264">
<source src="https://rtmp.site.com/live/DOISAoijdsaewq21/index.m3u8" type="application/x-mpegURL">
</video-js>
</div>
<script>
var player = videojs('player');
player.play();
</script>
</body>
</html>
Въпроса е, че нищо не се стартира и реално комуникацията между
rtmp.site.com и site.com липсва. Някакви предложения?
това е и default на /etc/nginx/sites-available:
Код:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name rtmp.site.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl;
server_name rtmp.site.com;
ssl_certificate /etc/letsencrypt/live/rtmp.site.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rtmp.site.com/privkey.pem;
location / {
proxy_pass http://rtmp.site.com:1935;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
}
}
ЕДИТ: Сигурен съм, че съм изписал доста глупости за това, моля някой да удари едно туристко рамо
Последно редактирано: