网络摄像头流客户端到客户端

时间:2017-06-24 12:46:17

标签: javascript php nginx rtmp hls

任务是客户A可以通过服务器B从网络摄像头流式传输到其他客户CS等。

我使用 NGINX + nginx-rtmp-module 配置了 HLS 流媒体服务器。它工作正常。现在我的服务器可以做流式传输在服务器上执行此命令,我创建了流。

$ ffmpeg -f video4linux2 -video_size 640x480 -i /dev/video0 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/live/stream

此命令捕获网络摄像头并创建可通过URL访问的流:rtmp://localhost:1935/live/stream

现在我可以在任何视频播放器中观看此流。

但我需要从客户端A的浏览器中捕获视频,并将其转移到网址rtmp://localhost:1935/live/stream以创建流。

在JS脚本中,我从网络摄像头捕获流并将其显示在<video>标记中。

HTM L代码:

<div class="box-body">
    <div class="row">
        <div class="col-xs-12">
            <video controls muted></video>
        </div>
    </div>
</div>

JS 代码:

let recordingPlayer = $('video');
let videoStream = null;

let successCallback = function (stream) {
    recordingPlayer[0].srcObject = stream;
    recordingPlayer[0].play();

    videoStream = stream;

    // I think I need to somehow transfer this stream to the address:
    // rtmp://localhost:1935/live/stream
};

let errorCallback = function (error) {
    console.log(error);
};

let mediaConstraints = { video: true, audio: true };

// Doing webcam capture
navigator.mediaDevices
    .getUserMedia(mediaConstraints)
    .then(successCallback)
    .catch(errorCallback);

但我完全无法理解如何将流从客户端A网络摄像头传输到我的 HLS 流媒体服务器。

据我所知,ffmpeg命令从服务器网络摄像头捕获视频,然后将其转换为合适的格式(带视频编解码器libx264的mp4),然后将数据发送到此网址rtmp://localhost:1935/live/stream

我想我需要使用网络套接字将网络摄像头的流发送到服务器,然后在服务器上使用该命令ffmpeg将数据发送到该地址。

您能否帮助我,如何将捕获的流从网络摄像头发送到 HLS 流媒体服务器?

0 个答案:

没有答案