当前位置:首页 » 网页前端 » web上看rtsp流的监控
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web上看rtsp流的监控

发布时间: 2022-04-26 15:48:20

① 最近被导师要求做一个网页上的视频监控软件,就是远端有一个监控摄影机,要把视频传输过来,打开浏览器就

我曾经做过一个简单的网页视频监控软件。首先把远端监控摄像头驱动起来,可以采用linux V4L驱动,就是能采集到一幅幅的jpeg图片,然后搭一个小型web服务器,网页使用javascript脚本编写,主要功能就是定时通过ajax远程请求摄像头采集到图片的URL,然后通过javascript的局部刷新功能刷新HTML img标签的src,实现网页中的图片不断动态刷新,也就是实现了网页视频监控,当然不太流畅。想流畅就在远端摄像头那里搭建一个rtsp流媒体服务器,可以用FFMPEG中的ffserver,网页端调用本地播放器通过rtsp协议播放流媒体即可。
福爱迪电子

② 网页中如何嵌入rtsp协议的流媒体视频

流媒体也没什么神秘的,它并不是一种网页制作技术,用的也是普通 的网页,但是里面插入了播放器,流媒体用的协议却不是http协议,而是rtsp协议,在Windows下它是用Server 2000/2003架设的,在Linux下不知是怎么弄出来的.
还不错,希望你采纳。

③ html5怎么播放流媒体视屏,比如rtsp协议的流媒体等

html5是网页代码的标准,跟视频传输协议没一分钱的关系。
html5支持的视频格式是H.264,html5之前的网页代码是不支持视频的。
网页上能看到视频是因为浏览器安装了插件,比如flashplayer、Windows Media Player、RealPlayer、快播、网络影音等。
用什么传输协议是看插件支持什么协议。

④ 如何做到网络监控放在网页上达到实时监控直播的效果。

目前大多数的监控摄像机视频传输采用的是RTSP协议,仅限于本地局域网内传输,主要用于企事业单位内部监看管理,而要想实现互联网直播:

一个是现场需具备互联网网络条件;

二是视频传输协议必须是RTMP或SRT等直播平台支持的传输协议;

三是您需要去开通一个直播地址;

MG300视频网关,是一个嵌入式便携式硬件设备,将设备接入您的现场互联网,即可将您前端摄像机的RTSP视频流,实时转换为RTMP/SRT直播流进行网络直播。与此同时,MG300具备了强悍的流媒体直播能力,可以同时接入9路以内的监控RTSP视频流,同时推送到30+个不同的直播地址。

而且还可以将多个不同的监控RTSP视频,合成一个直播画面进行网络直播。现场无需任何工程改造,您只需购买一台网关设备,开通直播平台获取RTMP/SRT直播地址,即可快速、便捷、低成本化构建属于您自己的监控直播系统。

⑤ 请问手机网页如何播放rtsp

这个网站完美的解决了你的问题,前提是你会写代码

发现自己太年轻so为了不把大家带进坑,更新回答

  1. web服务器转码 hls、rtmp、flash(iOS不支持)

  2. android本地解码 各种sdk开发包

⑥ QT Web引擎支持rtsp流吗

支持
qt客户端实时播放rtsp音频流demo并且无杂音
推流工具使用EasyDarwin
推流直接使用ffmpeg 推流到 EasyDarwin 服务器,音频流取自电脑拾音器,ffmepg指令为:
ffmpeg -f dshow -i audio=“麦克风 (Realtek® Audio)” -codec:a aac -ac 2 -ar 16000 -f rtsp rtsp://10.1.3.170:554/3_a.sdp
至于怎么推流自行网络呀



客户端采用FFMPEG 取流,解析出PCM 音频裸流,在一个线程中接收rtsp流并解析出音频数据,具体代码如下PlayVoicePlayer.c:
#include "playvoiceplayer.h"

#include <QDebug>

PlayVoicePlayer::PlayVoicePlayer(QObject *parent) : QThread(parent)
{

}

void PlayVoicePlayer::startPlay(QString url)
{
qDebug() << "Video2PCM::startPlay()";
playUrl = url;
unGetStream = true;
this->start();
}

void PlayVoicePlayer::run()
{

qDebug() << "Video2PCM::run():"<<playUrl;

isStart = true;
AVFormatContext *pFormatCtx = NULL;
AVCodecContext *pCodecCtx = NULL;
AVCodec *pCodec = NULL;
AVPacket packet;
AVFrame *pAudioFrame = NULL;
uint8_t *buffer = NULL;
struct SwrContext *audio_convert_ctx = NULL;
int got_picture;
int audioIndex;
int out_buffer_size;

av_register_all();
if (avformat_open_input(&pFormatCtx, playUrl.toStdString().data(), NULL, NULL) != 0)
{
emit getPcmStreamStop();
qDebug()<< " Video2PCM Couldn't open an input stream.";
return;
}
pFormatCtx->probesize = 5 *1024; //使用1000*1024 延时大概是2秒开始开始播放1920*1080使用这个参数暂时没发新崩溃的情况
pFormatCtx->max_analyze_ration = 1 * AV_TIME_BASE;

if (avformat_find_stream_info(pFormatCtx, NULL) < 0)
{
emit getPcmStreamStop();
qDebug()<< "Video2PCM Couldn't find stream information.";
return;
}
audioIndex = -1;
for (int i = 0; i < pFormatCtx->nb_streams; i++)
{
if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO)
{
audioIndex = i;
break;
}
}

if (audioIndex == -1)
{
emit getPcmStreamStop();
qDebug()<< "Video2PCM Couldn't find a audio stream.";
return;
}

pCodecCtx = pFormatCtx->streams[audioIndex]->codec;
pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
if (pCodec == NULL) printf("Codec not found.\n");
if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0)
{
emit getPcmStreamStop();
qDebug()<< "Video2PCM Could not open codec.";
return;
}

pAudioFrame = av_frame_alloc();
if (pAudioFrame == NULL)
{
emit getPcmStreamStop();
qDebug()<< "Video2PCM Could not alloc AVFrame";
return;
}

//音频输出参数
uint64_t out_channel_layout = AV_CH_LAYOUT_STEREO;//声道格式
AVSampleFormat out_sample_fmt = AV_SAMPLE_FMT_S32;//采样格式
int out_nb_samples = pCodecCtx->frame_size;//nb_samples: AAC-1024 MP3-1152
// int out_sample_rate = 44100;//采样率
int out_sample_rate = 16000;//采样率
int out_nb_channels = av_get_channel_layout_nb_channels(out_channel_layout);//根据声道格式返回声道个数
out_buffer_size = av_samples_get_buffer_size(NULL, out_nb_channels, out_nb_samples, out_sample_fmt, 1);

buffer = (uint8_t *)av_malloc(MAX_AUDIO_FRAME_SIZE);

audio_convert_ctx = swr_alloc();
if (audio_convert_ctx == NULL)
{
{
emit getPcmStreamStop();
qDebug()<< " Video2PCM Could not allocate SwrContext";
return;
}
}

swr_alloc_set_opts(audio_convert_ctx, out_channel_layout, out_sample_fmt,out_sample_rate,
pCodecCtx->channel_layout, pCodecCtx->sample_fmt, pCodecCtx->sample_rate, 0, NULL);

swr_init(audio_convert_ctx);

int index = 0;//计数器
while (isStart)
{
if(av_read_frame(pFormatCtx, &packet)<0)
{
emit getPcmStreamStop();
break;
}
if (packet.stream_index == audioIndex) {
if (avcodec_decode_audio4(pCodecCtx, pAudioFrame, &got_picture, &packet) < 0) {
qDebug() <<("Error in decoding audio frame.\n");
emit getPcmStreamStop();
break;
}
if (got_picture) {

// int dst_nb_samples = av_rescale_rnd(swr_get_delay(audio_convert_ctx, pAudioFrame->sample_rate) + pAudioFrame->nb_samples, pAudioFrame->sample_rate, pAudioFrame->sample_rate, AVRounding(1));
swr_convert(audio_convert_ctx, &buffer, MAX_AUDIO_FRAME_SIZE, (const uint8_t **)pAudioFrame->data, pAudioFrame->nb_samples);
if(unGetStream == true)
{
qDebug() << "Video2PCM unGetStream";
unGetStream =false;
emit getAudioStream();
}
// printf("index:%5d\t pts:%lld\t packet size:%d\n", index, packet.pts, packet.size);
//Write PCM
// fwrite(buffer, 1, out_buffer_size, fp_pcm);
emit decodePCM(packet.pts, QByteArray((char*)buffer, out_buffer_size));

index++;
}
}

av_free_packet(&packet);
}

qDebug() << "Video2PCM close1";
swr_free(&audio_convert_ctx);
av_free(buffer);
av_frame_free(&pAudioFrame);
avcodec_close(pCodecCtx);
avformat_close_input(&pFormatCtx);
isStart= false;

对应的PlayVoicePlayer.h文件如下:

#ifndef PLAYVOICEPLAYER_H
#define PLAYVOICEPLAYER_H

#include <QObject>
#include <QThread>
#ifdef _WINDOWS
extern "C"
{
#include "libavcodec\avcodec.h"
#include "libavformat\avformat.h"
#include "libswresample\swresample.h"
};
#else
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswresample/swresample.h"
};
#endif

#include <QAudioFormat>
#include <QAudioOutput>

#define MAX_AUDIO_FRAME_SIZE 192000

class PlayVoicePlayer : public QThread
{
Q_OBJECT
public:
explicit PlayVoicePlayer(QObject *parent = nullptr);
void startPlay(QString url);
private:
bool isStart = true;
QString playUrl;
bool unGetStream;

signals:
void getPcmStreamStop();
void getAudioStream();
void decodePCM(qint64 pts, const QByteArray& pcm);
protected:
void run();
};

#endif // PLAYVOICEPLAYER_H

⑦ 如何获取网络摄像头(监控摄像头)的rtsp的地址流

找厂家要搜索软件,不同藏家都会有自己的搜索软件,确实木有的话下一个wireshark,只把摄像机连在电脑上惊醒抓包能看到来源ip

问题理解有偏差,同样的你可以再上面我说的额软件中看到rtsp协议的端口,截取。

⑧ 监控中系统中,用web访问前端网络摄像机,观看实时视频流,这一过程时候可以这样理解

网络摄像机是把高品质的数字视频摄像机和强大的网络服务器结合在一起,把来自本地网络或者互联网的图像清晰地展示到您的桌面。是一种结合监控摄像机与网络技术所产生的新一代摄像机,只要将机器插在网线上(无需电脑)或通过无线,它即可将影像透过网络传至地球另一端

⑨ 如何实现监控视频实时网络直播

目前大多数的监控摄像机视频传输采用的是RTSP协议,仅限于本地局域网内传输,主要用于企事业单位内部监看管理,而要想实现互联网直播:

一个是现场需具备互联网网络条件;

二是视频传输协议必须是RTMP或SRT等直播平台支持的传输协议;

三是您需要去开通一个直播地址;

MG300视频网关,是一个嵌入式便携式硬件设备,将设备接入您的现场互联网,即可将您前端摄像机的RTSP视频流,实时转换为RTMP/SRT直播流进行网络直播。与此同时,MG300具备了强悍的流媒体直播能力,可以同时接入9路以内的监控RTSP视频流,同时推送到30+个不同的直播地址。

而且还可以将多个不同的监控RTSP视频,合成一个直播画面进行网络直播。现场无需任何工程改造,您只需购买一台网关设备,开通直播平台获取RTMP/SRT直播地址,即可快速、便捷、低成本化构建属于您自己的监控直播系统。

⑩ 如何在web浏览器上实时监控摄像头

摄像机要用网络摄像机,用交换机把摄像机与电脑联在一起。把电脑ip地址改为摄像机上的同一网段中。打开ie浏览器,输入摄像机ip地址,回车,按提示要安装插件。后回车,输入摄像机上的用户名,密码,回车,就可以看到实时监控画面了。