精华内容
下载资源
问答
  • rtsp 推流
    千次阅读
    2021-12-15 17:38:58

    前面是 使用 ffmpeg rtmp 协议推流,局域网延迟在6~8s 之间,无法忍受,这不 最近不太忙,那就继续搞。

    查询了一圈发现 rtsp 比较快 那就试验一下

    首先 rtmp 是与 nginx 的结合,rtsp 与 ZLMediaKit结合

    服务器是centos 8 ,所以在centos 上搭建ZLMediaKit

    要求

    1、gcc -v

    2、cmake -version

    3、ffmpeg -version 必须安装ffmpeg

    安装链接  centos在CentOS 8上安装FFmpeg_智识帮的博客-CSDN博客_centos8安装ffmpeg

    搭建

    git clone --depth https://gitee.com/xia-chu/ZLMediaKit

    cd ZLMediaKit/

    git submodule update --init

    mkdir linux_build

    ln -s linux_build/ build

    cd build/

    cmake ..

    make -j4

    cd Downloads/ZLMediaKit/release/linux/Debug/

    ./MediaServer

    客户端推流

    ffmpeg -f dshow -i video="Integrated Webcam" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://192.168.22.70:554/live/home

    vlc 播放

    rtsp rtsp://192.168.22.70:554/live/home

    延迟在1~2s 之间

    更多相关内容
  • live555源码,测试demo,可以推流,学习rtsp协议必备
  • RTSP 推流demo

    2019-01-18 17:03:26
    这个是基于Realtek底层芯片的RTSP推流demo,可在局域网下实现直播功能,纯C,无需任何第三方库
  • andriod rtsp push stream(安卓抓屏,然后rtsp推流
  • Android rtmp rtsp 推流客户端.zip,用于Android的RTMP和RTSP流媒体库。Java中的所有代码
  • rtmp-rtsp-stream-client-java Library for stream in RTMP and RTSP. All code in Java. If you need a player see this project: https://github.com/pedroSG94/vlc-example-streamplayer Wiki ...
  • 介绍一个基于C++开发的RTSP/RTMP推流组件PushStream,PushStream推流基础组件是一款推送流媒体音/视频流给标准RTSP流媒体服务器 (如EasyDarwin、Wowza) 或者RTMP流媒体服务器 (如Nginx) 的流媒体推送库
  • 介绍一个基于C++开发的RTSP/RTMP推流组件PushStream,PushStream推流基础组件是一款推送流媒体音/视频流给标准RTSP流媒体服务器 (如EasyDarwin、Wowza) 或者RTMP流媒体服务器 (如Nginx) 的流媒体推送库
  • 这是我《记录RTSP通过FFmpeg+nginx发布成rtmp和http-flv》中附带的代码和工具,包括rtmp推流的FFmpeg命令、rtmp推流的demo源码(使用FFmpegAPI)、nginx的配置conf、flv.js等。
  • RTSP推流

    2022-04-05 21:13:06
    rtsp协议推流流程

    随着直播行业越来越火,rtmp等之类的直播协议也开始走入更多开发者的屏幕,原因是rtmp可以推流,解决了直播中媒体源如何发布到服务端的问题,除了rtmp还有没有什么更靠谱的、更标准的推流协议呢?有,RTSP,今天我们分享一下rtsp是如何推流的。

    先看一句命令

    .\ffmpeg.exe -re -i .\aiqinggongyu.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.0.200/live/test

    这句命令的作用是把aiqinggongyu.mp4文件以rtsp方式推送到流媒体服务器上,服务器以“rtsp://192.168.0.200/live/test”为url为其他rtsp客户端提供媒体流。

    我们都知道rtsp的几个核心信令,分别是OPTIONS DESCRIBE SETUP PLAY PAUSE TEARDOWN GET_PARAMETER SET_PARAMETER,这几个信令可以完成的工作是客户端从服务器端获取视频流。而如果要实现推流的话,发送流的顺序肯定是从客户端到服务器端,与我们常见的方式相反,那么rtsp是如何做到推流的呢?

    其实,rtsp除了上面几个常见的信令外,还有ANNOUNCE RECORD等信令,只是这些信令我们不常见,所以很多人不知道,rtsp的推流工作就是通过ANNOUNCE RECORD等信令完成的。

    上栗(例)子

    客户端(ffmpeg):192.168.0.92

    服务端(zlmediakit):192.168.0.200

    我们用上面的命令把媒体流通过客户端推送到服务端,看看其信令是如何交互的。

    如上图所示,推流流程与拉流流程很相似,区别是推流将拉流的 DESCRIBE信令换成了ANNOUNCE,将PLAY信令换成了RECORD。具体的协商过程与拉流类似,只是结果刚好相反,媒体流由原来的服务端到客户端变为客户端到服务端。

    补充:rtsp信令(摘自rfc2326)

    资源:​​​​​​RTSP协议下载

    展开全文
  • 介绍一个基于C++开发的RTSP/RTMP推流组件PushStream,PushStream推流基础组件是一款推送流媒体音/视频流给标准RTSP流媒体服务器 (如EasyDarwin、Wowza) 或者RTMP流媒体服务器 (如Nginx) 的流媒体推送库
  • rtsp推流

    2021-11-03 16:20:29
    代码: ... # 导入opencv import cv2 as cv ...rtspUrl = 'rtsp://localhost/test' #将处理后的帧传入管道推流到该地址 def face_detect_demo(img): gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) face_detec.

    代码:

    参考:RTMP、RTSP推流 · 大专栏 

    # 导入opencv
    import cv2 as cv
    import subprocess as sp
    rtspUrl = 'rtsp://localhost/test' #将处理后的帧传入管道推流到该地址
    
    def face_detect_demo(img):
        gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
        face_detect = cv.CascadeClassifier('haarcascade_frontalface_alt2.xml')
        # 主要是调整参数
        face = face_detect.detectMultiScale(gray)
        for x, y, w, h in face:
            cv.rectangle(img, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2)
    
    # 读取实时流
    cap = cv.VideoCapture('rtsp://192.168.1.118/190647.sdp') #此处写easypusher在easydarwin的播放地址
    # 视频属性
    size = (int(cap.get(cv.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv.CAP_PROP_FRAME_HEIGHT)))
    sizeStr = str(size[0]) + 'x' + str(size[1])
    fps = cap.get(cv.CAP_PROP_FPS)  # 30p/self
    
    # 直播管道输出
    # ffmpeg推送RTSP重点:通过管道共享数据的方式
    command = ['ffmpeg',
        '-y',
        '-f', 'rawvideo',
        '-vcodec','rawvideo',
        '-pix_fmt', 'bgr24',
        '-s', sizeStr,
        '-r', str(fps),
        '-i', '-',
        '-c:v', 'libx264',
        '-pix_fmt', 'yuv420p',
        '-preset', 'ultrafast',
        '-f', 'rtsp',
        rtspUrl]
    
    #管道特性配置
    pipe = sp.Popen(command, stdin=sp.PIPE) #,shell=False
    
    # 循环读取
    while cap.isOpened():
        flag, frame = cap.read()
        if not flag:
            break
        face_detect_demo(frame)
    
        pipe.stdin.write(frame.tobytes())  # 存入管道用于直播
        pass
    
    # 释放摄像头
    cap.release()
    
    
    
    

    测试:

    1、Windows配置ffmpeg

    Windows安装配置ffmpeg_Simple的博客-CSDN博客

    2、使用EasyDarwin做服务器

    Releases · EasyDarwin/EasyDarwin · GitHub

    下载解压后,点击EasyDarwin.exe,复制地址到浏览器中

    使用手机测试:

    一台设备安装EasyPusher

    GitHub - EasyDarwin/EasyPusher-Android: 免费组件:简单、高效、稳定、免费的一款标准RTSP/RTP协议直播推送库,支持将H.264/H.265/G.711/G.726/AAC等音视频数据推送到RTSP流媒体服务器(例如EasyDarwin)进行低延时直播或者视频通信,支持Windows、Linux、ARM、Android、iOS等平台,EasyPusher配套EasyDarwin流媒体服务器、EasyPlayer RTSP播放器适用于特殊行业的低延时应急指挥需求! Android迁移到了https://github.com/EasyDarwin/EasyPusher-Android , iOS迁移到了https://github.com/EasyDarwin/EasyPusher-iOS

    代码中cap地址写EasyDarwin中的播放地址 

     

    另一台设备安装EasyPlayer:

    GitHub - tsingsee/EasyPlayer-RTSP-Android: An free, elegant, simple, fast android RTSP/RTMP/HLS/HTTP Player.EasyPlayer support RTSP(RTP over TCP/UDP)version & Pro version,cover all kinds of streaming media!EasyPlayer是一款免费、精炼、高效、稳定的流媒体播放器,分为RTSP版和Pro版本,支持各种各样的流媒体音视频播放!

    运行代码后,

    复制推流的播放地址到easyplayer中:rtsp://localhost/test

    展开全文
  • 这个例子可以参考在rk板子上怎么把opencv::Mat硬件编码为H264,然后live555推流出去,教程可看https://blog.csdn.net/sac761/article/details/105349370
  • libstreaming 录屏rtsp推流到rtsp流媒体服务
  • h264裸流,可用于rtmp和rtsp推流测试,分辨率800*,608,绝对可用
  • VLC RTSP推流

    2018-11-01 14:33:07
    Qt环境下用VLC开发库实现RTSP网络推流;只含源码,不包含VLC库文件,搭建环境请参加博文https://blog.csdn.net/JellyLi2091/article/details/83616216
  • rtsp转rtmp推流工具

    2021-07-27 10:52:08
    pyqt实现rtsp拉转rtmp
  • 本课程主要描述利用QT+FFMPEG,实现H264解码、编码,推流RTSP,解码RTSP的实现过程。 源码开源,学员可以直接利用源码进行二次开发设计
  • 基于VLC实现RTSP推流视频

    千次阅读 2021-02-08 17:49:45
    基于VLC实现RTSP推流视频一、添加VLC头文件和库文件二、封装RTSPServer推流类三、测试代码 不清楚推流大概原理的小伙伴,参考《设置VLC播放器进行RTSP推流视频》 一、添加VLC头文件和库文件 我们创建一个测试工程...

    不清楚推流大概原理的小伙伴,参考《设置VLC播放器进行RTSP推流视频》

    这里以VLC 2.2.4版本为例,我们下载VLC播放器,其中带有VLC的SDK,下载地址:

    http://download.videolan.org/vlc/2.2.4/win64/vlc-2.2.4-win64.7z

    一、添加VLC头文件和库文件

    我们创建一个测试工程RSTPVideo,在pro文件中添加如下内容:

    win32 {
    # VLC相关库
    LIBS += -L$$PWD/../VLC/lib -llibvlc -llibvlccore
    
    # VLC头文件目录
    INCLUDEPATH += $$PWD/../VLC/include
    }
    

    二、封装RTSPServer推流类

    封装一个RSTPServer类,实现推流视频的主要逻辑代码。

    RTSPServer.h

    #ifndef RTSPSERVER_H
    #define RTSPSERVER_H
    
    #include <QString>
    #include <vlc/vlc.h>
    
    class RTSPServer
    {
    public:
        RTSPServer();
        ~RTSPServer();
    
        // 使用VLC实现RTSP推流。将视频文件转码后,推流到指定ip的端口上,协议一般为udp。
        // 在VLC播放器中输入rtsp://xx.xx.xx.xx:端口/,即可播放推流的视频
        // 推流到本地时,如rtsp://127.0.0.1:8554/,即可播放推流的视频
        bool pushVideo(const QString& ip, int port, const QString& filePath);
    
    private:
        libvlc_instance_t *instance;
    };
    
    #endif // RTSPSERVER_H
    

    RTSPServer.cpp

    #include "RTSPServer.h"
    #include <QDir>
    
    #define VIDEO_MEDIA_NAME        "Video"
    
    RTSPServer::RTSPServer()
    {
        // 创建VLC实例
        instance = libvlc_new (0, nullptr);
    }
    
    RTSPServer::~RTSPServer()
    {
        // 停止推流
        libvlc_vlm_stop_media(instance, VIDEO_MEDIA_NAME);
    
        // 释放VLC实例
        libvlc_vlm_release(instance);
        instance = nullptr;
    }
    
    bool RTSPServer::pushVideo(const QString &ip, int port, const QString &filePath)
    {
        // 转码参数:#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}
        QString convertPara = "#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}";
    
        // 网络参数:rtp{sdp=rtsp://xx.xx.xx.xx:yyyy/}
        // 表示本机ip时,可省略ip,只写端口,如rtp{sdp=rtsp://:8554/}
        QString netPara = "rtp{sdp=rtsp://" + ip + ":" + QString::number(port) + "/}";
    
        // 如sout = "#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:rtp{sdp=rtsp://127.0.0.1:8554/}"
        QString sout = convertPara + ":" + netPara;
    
        // 将推流视频路径转换为本地系统风格,win下"a\\b\\c",linux下"a/b/c"
        QString path = QDir::toNativeSeparators(filePath);
    
        // 添加名为VIDEO_MEDIA_NAME的广播
        int ret = libvlc_vlm_add_broadcast(instance, VIDEO_MEDIA_NAME,
                                           path.toStdString().c_str(),
                                           sout.toStdString().c_str(),
                                           0, nullptr, true, false);
        if (ret != 0)
        {
            return false;
        }
    
        // 播放该广播
        ret = libvlc_vlm_play_media(instance, VIDEO_MEDIA_NAME);
        return (ret == 0);
    }
    

    三、测试代码

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include "RTSPServer.h"
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private slots:
        void on_pushButton_clicked();
    
    private:
        Ui::MainWindow *ui;
        RTSPServer rtspServer;
    };
    
    #endif // MAINWINDOW_H
    

    mainwindow.cpp

    void MainWindow::on_pushButton_clicked()
    {
        bool ret = rtspServer.pushVideo("127.0.0.1", 8554, qApp->applicationDirPath() + "/video.mp4");
        if (ret)
        {
            QMessageBox::information(nullptr, "Info", "Push streaming video successfully");
        }
        else
        {
            QMessageBox::information(nullptr, "Info", "Failed to push streaming video");
        }
        ui->pushButton->setEnabled(false);
    }
    

    代码非常简单,将程序所在目录下的video.mp4视频文件,推流到127.0.0.1,8554端口上。

    注意:运行时,依赖的动态库有,libvlc.dll、libvlccore.dll、plugins插件,如下:

    在这里插入图片描述

    程序启动后,点击“Push Video”按钮启动推流;然后在VLC播放器中,打开如下串流地址

    rtsp://127.0.0.1:8554/
    

    运行效果如下:

    在这里插入图片描述

    左边播放器正常播放推流视频。

    本文涉及工程代码:

    https://gitee.com/bailiyang/cdemo/tree/master/Qt/63VLCTest/RTSPVideo



    若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

    同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

    在这里插入图片描述

    展开全文
  • 公司项目需要实现一个只是rtsp推流和rtsp拉流的业务机制,据说ZLMediaKit能满足rtsp推拉流的相关业务。 对ZLMediaKit流媒体服务器进行安装以及了解。 0:从开源库Readme中对其功能进行了解 简单认识ZLMediaKit,了解...
  • 设置VLC播放器进行RTSP推流视频

    千次阅读 2021-02-08 15:39:12
    设置VLC播放器进行RTSP推流视频一、推流与拉流概念二、设置推流端三、设置拉流端(播放端) 一、推流与拉流概念 首先,做几个名词解释。 推流,指的是把采集阶段封包好的内容传输到服务器的过程。 拉流,这个指的是...
  • rtsp推流桌面,vlc拉流

    2021-08-24 10:47:04
    rtsp推流桌面,vlc拉流 首先去vlc下载官网:https://www.videolan.org/ 下载vlc播放器。 1.vlc下载完成之后打开vlc,点击媒体—>流 2.在捕获模式选择‘桌面’,帧率选择30帧/秒;然后选择串流并点击 3.点击下...
  • GStreamer与opencv实现rtsp推流

    千次阅读 热门讨论 2021-07-19 16:01:06
    最近的一个任务是实现rtsp实时推流,即通过gstream管道实时把摄像头输入,通过rtsp推流。 一、代码 不多说什么直接上代码,想了解Gstreamer的小伙伴可以自行了解一下。 import cv2 import gi import sys import ...
  • live555_555_rtsp推流_RTSP推流源码_rtsp_live555.zip
  • gSoap-2.8.63实现RTSP推流

    2018-03-25 20:04:38
    gSoap-2.8.63实现RTSP推流,利用live555做mediaServer,包含完整代码,直接make就行
  • rtsp服务器以及rtsp推流/拉流/转发

    千次阅读 2021-03-10 21:11:50
    rtsp服务器 1、live555 2、ZLMediaKit 3、ffserver 4、gst-rtsp-server 5、feng 6、rtspd 1)live555 proxyServer live555库文件编译 https://www.cnblogs.com/dong1/p/5861624.html 源码 live/proxy...
  • windows 10 rtsp 推流

    2021-06-19 17:41:59
    推流命令 ffmpeg -re -stream_loop -1 -i D:\视频\WIN_20210619_17_17_34_Pro.mp4 -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test ffmpeg 下载 安装:https://www.pianshen.com/article/58141610762/ 播放路径...
  • 建立在个人对rtsp推流流程有一定理解的基础上,本文目的是通过开源库rtspserver实现推流,了解一下这个库,运行该库下相关demo,对理论做实践。 1:搭建环境 # git clone git@github.com:ImSjt/RtspServer.git #这里...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,718
精华内容 3,487
关键字:

rtsp推流