下载压缩包

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进行测试

打开文件夹

启动smart_rtmpd.exe

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

打开config.xml文件进行配置

使用rtmpd

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

在第15行添加

在第63行添加ip地址

启动流媒体服务器

 

 

配置OBS推流 

打开OBS软件

点击设置

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

点击应用和确定。

 

打开VLC软件进行拉流

 

 

 

 

 

可以看到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杀死进程。

 

更多推荐