下载压缩包

GitHub - superconvert/smart_rtmpd: RTMP server, smart, compact, high performance(c, c++), high concurrency, easy to maintain, easy to deploy, (supports multiple operating systems Windows and Linux, ARM, FreeBSD)

下载OBS软件

下载 | OBS

下载VLC软件

官方下载:VLC media player,最棒的开源播放器 - VideoLAN

配置smart_rtmpd

下载完压缩包进行解压打开文件

根据不同平台进行解压

本次以win进行测试

b7044aeb339886521dbca3ae07c6e990.png

打开文件夹

28a6879f896b356bff246b684312beec.png

启动smart_rtmpd.exe

71e4e48bcdc6e1e3abf79260bdfa90eb.png

其他协议进行取消,只使用RTMP协议

打开config.xml文件进行配置

使用rtmpd

40f7182763b6064f7878b773d43f1bc0.png

查看自己主机的ip地址,默认填1935端口

在第15行添加

8d25e7cc5ff74d83be3bad7fd0ddc30e.png

在第63行添加ip地址

启动流媒体服务器

0071638237d4dca857f6713425374e2b.png

d2fba75dfe4e0742c35d64bc3e887c7b.png

配置OBS推流 

打开OBS软件

12a7904a64a0d69c5e441df65aab6cb1.png

点击设置

5aa9b5cafc73ce3854d1217fdeedd656.png

点击直播,添加流媒体服务器地址rtmp://IP/live/xxx,如果流媒体服务器端口不是1935,则需要添加端口。rtmp://IP:端口/live/xxx。推流码则是相当于密码,例如服务器地址设置为rtmp://IP/live/,推流码为123456,则拉流地址需要填rtmp://IP/live/123456。

点击应用和确定。

840a91be3b494a37d395cbf6bc44c1c1.png

a9d07ac9e8d681a3c832f4d2cd40006d.png

c5b2ef7ef4bab248b4acbee838b0588b.png

打开VLC软件进行拉流

c6844df75bec4be495e45e7245e9c08a.png

d217f5bc71b64ab4b518f4dd66908a35.png

5b9fc979d61347257889cb33f180e689.png

可以看到VLC可以播放OBS直播了。

配置http

开启http端口

重启smart_rtmpd服务器

在浏览器上输入地址就可以访问了。

阿里云服务器部署smart_rtmpd

修改权限

修改config.xml文件

 

服务器安全组开放端口

在服务器文件夹下启动smart_rtmpd

./smart_rtmpd

 启动成功

修改OBS的推流地址

开启直播

发现无法连接

原因是内网防火墙没有开放端口,需要在服务器linux开放对应端口

开放1935/rtmp端口

sudo firewall-cmd --zone=public --add-port=1935/tcp --permanent

开放9090/http

sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent

重启 防火墙

sudo firewall-cmd --reload

重新启动一下smart_rtmpd和OBS直播

连接成功

 VLC测试成功

 java代码测试

依赖

        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv-platform</artifactId>
            <version>1.5.10</version>
        </dependency>
    public static void main(String[] args) {
        // 设置视频流 URL(RTSP、RTMP )
        String url = "rtmp://IP/live/123456"; // 替换为你的流地址
        // 初始化视频捕获
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(url);
        try {
            grabber.start(); // 启动 FFmpegGrabber
            // 获取视频流的宽高
            int videoWidth = grabber.getImageWidth();
            int videoHeight = grabber.getImageHeight();
            System.out.println("Video resolution: " + videoWidth + "x" + videoHeight);
            // 创建用于显示视频的窗口
            CanvasFrame canvas = new CanvasFrame("Video Stream", CanvasFrame.getDefaultGamma() / grabber.getGamma());
            canvas.setPreferredSize(new Dimension(videoWidth, videoHeight));
            // 拉流并展示
            Frame frameGrabbed;
            while ((frameGrabbed = grabber.grab()) != null) {
                // 将抓取到的视频帧显示到窗口
                if (!canvas.isVisible()) {
                    break;
                }
                canvas.showImage(frameGrabbed);
            }
            // 停止视频抓取
            grabber.stop();
            canvas.dispose();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

 测试成功

smart_rtmpd后台启动

nohup ./smart_rtmpd &

查看进程

top

杀死后台

kill ID

kill 19258杀死进程。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐